@aztec/pxe 0.0.1-commit.4d79d1f2d → 0.0.1-commit.4d9804df

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 (516) 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 +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 +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 +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/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/aztec_node_read_cache.d.ts +39 -0
  34. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts.map +1 -0
  35. package/dest/contract_function_simulator/aztec_node_read_cache.js +60 -0
  36. package/dest/contract_function_simulator/contract_function_simulator.d.ts +34 -20
  37. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  38. package/dest/contract_function_simulator/contract_function_simulator.js +210 -74
  39. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  40. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  41. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  42. package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -10
  43. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  44. package/dest/contract_function_simulator/execution_note_cache.js +8 -28
  45. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -11
  46. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  47. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -15
  48. package/dest/contract_function_simulator/index.d.ts +26 -5
  49. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  50. package/dest/contract_function_simulator/index.js +11 -3
  51. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
  52. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  53. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
  54. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  55. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  56. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  57. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  58. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  59. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  60. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  61. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  62. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  63. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -4
  64. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  65. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +9 -10
  66. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  67. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  68. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  69. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  70. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  71. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  72. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +19 -10
  73. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  74. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +12 -24
  75. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +11 -9
  76. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  77. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -63
  78. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  79. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  80. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  81. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -5
  82. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  83. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +8 -12
  84. package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
  85. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  86. package/dest/contract_function_simulator/noir-structs/option.js +67 -0
  87. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  88. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  89. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  90. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  91. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  92. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  93. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
  94. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  95. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
  96. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  97. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  98. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
  99. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +19 -0
  100. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  101. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +9 -0
  102. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -0
  103. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  104. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  105. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  106. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  107. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  108. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  109. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  110. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  111. package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
  112. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
  113. package/dest/contract_function_simulator/oracle/index.js +1 -1
  114. package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -98
  115. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  116. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  117. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  118. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  119. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
  120. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  121. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  122. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  123. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  124. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  125. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  126. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +139 -0
  127. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  128. package/dest/contract_function_simulator/oracle/oracle_registry.js +1016 -0
  129. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +274 -0
  130. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  131. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1243 -0
  132. package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
  133. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  134. package/dest/contract_function_simulator/oracle/private_execution.js +7 -6
  135. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +62 -76
  136. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  137. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +210 -122
  138. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +178 -80
  139. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  140. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +573 -174
  141. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  142. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  143. package/dest/contract_function_simulator/pick_notes.js +20 -3
  144. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  145. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  146. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  147. package/dest/contract_logging.d.ts +27 -0
  148. package/dest/contract_logging.d.ts.map +1 -0
  149. package/dest/contract_logging.js +38 -0
  150. package/dest/debug/pxe_debug_utils.d.ts +5 -9
  151. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  152. package/dest/debug/pxe_debug_utils.js +4 -10
  153. package/dest/entrypoints/client/bundle/index.d.ts +4 -1
  154. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  155. package/dest/entrypoints/client/bundle/index.js +3 -0
  156. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  157. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  158. package/dest/entrypoints/client/bundle/utils.js +27 -8
  159. package/dest/entrypoints/client/lazy/index.d.ts +4 -1
  160. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  161. package/dest/entrypoints/client/lazy/index.js +3 -0
  162. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  163. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  164. package/dest/entrypoints/client/lazy/utils.js +27 -8
  165. package/dest/entrypoints/client/store.d.ts +14 -0
  166. package/dest/entrypoints/client/store.d.ts.map +1 -0
  167. package/dest/entrypoints/client/store.js +42 -0
  168. package/dest/entrypoints/pxe_creation_options.d.ts +16 -2
  169. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  170. package/dest/entrypoints/pxe_creation_options.js +3 -1
  171. package/dest/entrypoints/server/index.d.ts +8 -3
  172. package/dest/entrypoints/server/index.d.ts.map +1 -1
  173. package/dest/entrypoints/server/index.js +6 -2
  174. package/dest/entrypoints/server/store.d.ts +18 -0
  175. package/dest/entrypoints/server/store.d.ts.map +1 -0
  176. package/dest/entrypoints/server/store.js +28 -0
  177. package/dest/entrypoints/server/utils.d.ts +4 -3
  178. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  179. package/dest/entrypoints/server/utils.js +28 -8
  180. package/dest/error_enriching.d.ts +5 -3
  181. package/dest/error_enriching.d.ts.map +1 -1
  182. package/dest/error_enriching.js +13 -11
  183. package/dest/events/event_service.d.ts +15 -6
  184. package/dest/events/event_service.d.ts.map +1 -1
  185. package/dest/events/event_service.js +44 -11
  186. package/dest/events/private_event_filter_validator.d.ts +3 -2
  187. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  188. package/dest/events/private_event_filter_validator.js +15 -0
  189. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  190. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  191. package/dest/hooks/authorize_utility_call.js +4 -0
  192. package/dest/hooks/execution_hooks.d.ts +62 -0
  193. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  194. package/dest/hooks/execution_hooks.js +9 -0
  195. package/dest/hooks/index.d.ts +5 -0
  196. package/dest/hooks/index.d.ts.map +1 -0
  197. package/dest/hooks/index.js +2 -0
  198. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  199. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  200. package/dest/hooks/resolve_custom_request.js +3 -0
  201. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  202. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  203. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  204. package/dest/logs/log_service.d.ts +14 -11
  205. package/dest/logs/log_service.d.ts.map +1 -1
  206. package/dest/logs/log_service.js +195 -81
  207. package/dest/messages/tx_resolver_service.d.ts +17 -0
  208. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  209. package/dest/messages/tx_resolver_service.js +60 -0
  210. package/dest/notes/note_service.d.ts +28 -6
  211. package/dest/notes/note_service.d.ts.map +1 -1
  212. package/dest/notes/note_service.js +84 -59
  213. package/dest/notes_filter.d.ts +24 -0
  214. package/dest/notes_filter.d.ts.map +1 -0
  215. package/dest/notes_filter.js +4 -0
  216. package/dest/oracle_version.d.ts +4 -3
  217. package/dest/oracle_version.d.ts.map +1 -1
  218. package/dest/oracle_version.js +20 -10
  219. package/dest/private_kernel/batch_planner.d.ts +47 -0
  220. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  221. package/dest/private_kernel/batch_planner.js +104 -0
  222. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  223. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  224. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  225. package/dest/private_kernel/hints/index.d.ts +1 -1
  226. package/dest/private_kernel/hints/index.js +1 -1
  227. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  228. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  229. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +135 -70
  230. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  231. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  232. package/dest/private_kernel/hints/test_utils.js +202 -0
  233. package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
  234. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  235. package/dest/private_kernel/private_kernel_execution_prover.js +208 -86
  236. package/dest/private_kernel/private_kernel_oracle.d.ts +17 -11
  237. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  238. package/dest/private_kernel/private_kernel_oracle.js +47 -29
  239. package/dest/pxe.d.ts +178 -61
  240. package/dest/pxe.d.ts.map +1 -1
  241. package/dest/pxe.js +377 -220
  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 +36 -28
  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 +63 -33
  267. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  268. package/dest/storage/contract_store/contract_store.js +178 -130
  269. package/dest/storage/fact_store/fact_service.d.ts +22 -0
  270. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  271. package/dest/storage/fact_store/fact_service.js +45 -0
  272. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  273. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  274. package/dest/storage/fact_store/fact_store.js +408 -0
  275. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  276. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  277. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  278. package/dest/storage/fact_store/index.d.ts +6 -0
  279. package/dest/storage/fact_store/index.d.ts.map +1 -0
  280. package/dest/storage/fact_store/index.js +4 -0
  281. package/dest/storage/fact_store/origin_state.d.ts +59 -0
  282. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  283. package/dest/storage/fact_store/origin_state.js +60 -0
  284. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  285. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  286. package/dest/storage/fact_store/stored_fact.js +64 -0
  287. package/dest/storage/index.d.ts +3 -2
  288. package/dest/storage/index.d.ts.map +1 -1
  289. package/dest/storage/index.js +2 -1
  290. package/dest/storage/metadata.d.ts +2 -2
  291. package/dest/storage/metadata.d.ts.map +1 -1
  292. package/dest/storage/metadata.js +1 -1
  293. package/dest/storage/note_store/note_store.d.ts +44 -34
  294. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  295. package/dest/storage/note_store/note_store.js +199 -170
  296. package/dest/storage/note_store/stored_note.d.ts +3 -8
  297. package/dest/storage/note_store/stored_note.d.ts.map +1 -1
  298. package/dest/storage/note_store/stored_note.js +4 -20
  299. package/dest/storage/open_pxe_stores.d.ts +35 -0
  300. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  301. package/dest/storage/open_pxe_stores.js +29 -0
  302. package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
  303. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  304. package/dest/storage/private_event_store/private_event_store.js +43 -43
  305. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  306. package/dest/storage/store_identity.d.ts +35 -0
  307. package/dest/storage/store_identity.d.ts.map +1 -0
  308. package/dest/storage/store_identity.js +44 -0
  309. package/dest/storage/tagging_store/index.d.ts +2 -2
  310. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  311. package/dest/storage/tagging_store/index.js +1 -1
  312. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  313. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  314. package/dest/storage/tagging_store/sender_tagging_store.d.ts +45 -28
  315. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  316. package/dest/storage/tagging_store/sender_tagging_store.js +182 -119
  317. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  318. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  319. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  320. package/dest/tagging/constants.d.ts +3 -2
  321. package/dest/tagging/constants.d.ts.map +1 -1
  322. package/dest/tagging/constants.js +28 -10
  323. package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
  324. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  325. package/dest/tagging/get_all_logs_by_tags.js +45 -32
  326. package/dest/tagging/index.d.ts +7 -6
  327. package/dest/tagging/index.d.ts.map +1 -1
  328. package/dest/tagging/index.js +5 -4
  329. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  330. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  331. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  332. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +74 -0
  333. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  334. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +238 -0
  335. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  336. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  337. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  338. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  339. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  340. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  341. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -9
  342. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  343. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +32 -14
  344. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +13 -7
  345. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  346. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +41 -10
  347. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +5 -7
  348. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  349. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +41 -25
  350. package/dest/tagging/testing/tag_query_test_utils.d.ts +6 -0
  351. package/dest/tagging/testing/tag_query_test_utils.d.ts.map +1 -0
  352. package/dest/tagging/testing/tag_query_test_utils.js +10 -0
  353. package/package.json +20 -17
  354. package/src/bin/check_oracle_version.ts +46 -135
  355. package/src/bin/index.ts +1 -0
  356. package/src/bin/oracle_version_helpers.ts +54 -0
  357. package/src/block_synchronizer/block_stream_source.ts +42 -0
  358. package/src/block_synchronizer/block_synchronizer.ts +102 -39
  359. package/src/config/index.ts +16 -9
  360. package/src/config/package_info.ts +1 -1
  361. package/src/contract/contract_class_service.ts +83 -0
  362. package/src/contract/contract_sync_service.ts +176 -0
  363. package/src/contract/helpers.ts +35 -0
  364. package/src/contract/skip_sync_contracts.ts +23 -0
  365. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  366. package/src/contract_function_simulator/aztec_node_read_cache.ts +89 -0
  367. package/src/contract_function_simulator/contract_function_simulator.ts +375 -104
  368. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  369. package/src/contract_function_simulator/execution_note_cache.ts +8 -29
  370. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -18
  371. package/src/contract_function_simulator/index.ts +89 -4
  372. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
  373. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  374. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  375. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  376. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +10 -9
  377. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  378. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  379. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +27 -20
  380. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +14 -64
  381. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  382. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +6 -11
  383. package/src/contract_function_simulator/noir-structs/option.ts +75 -0
  384. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  385. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  386. package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
  387. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
  388. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +19 -0
  389. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
  390. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  391. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  392. package/src/contract_function_simulator/oracle/index.ts +1 -15
  393. package/src/contract_function_simulator/oracle/interfaces.ts +11 -176
  394. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
  395. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  396. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  397. package/src/contract_function_simulator/oracle/oracle_registry.ts +710 -0
  398. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +1052 -0
  399. package/src/contract_function_simulator/oracle/private_execution.ts +6 -7
  400. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +259 -153
  401. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +880 -264
  402. package/src/contract_function_simulator/pick_notes.ts +22 -3
  403. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  404. package/src/contract_logging.ts +52 -0
  405. package/src/debug/pxe_debug_utils.ts +9 -16
  406. package/src/entrypoints/client/bundle/index.ts +3 -0
  407. package/src/entrypoints/client/bundle/utils.ts +32 -8
  408. package/src/entrypoints/client/lazy/index.ts +3 -0
  409. package/src/entrypoints/client/lazy/utils.ts +32 -8
  410. package/src/entrypoints/client/store.ts +54 -0
  411. package/src/entrypoints/pxe_creation_options.ts +21 -1
  412. package/src/entrypoints/server/index.ts +8 -2
  413. package/src/entrypoints/server/store.ts +47 -0
  414. package/src/entrypoints/server/utils.ts +45 -14
  415. package/src/error_enriching.ts +27 -11
  416. package/src/events/event_service.ts +69 -21
  417. package/src/events/private_event_filter_validator.ts +21 -1
  418. package/src/hooks/authorize_utility_call.ts +44 -0
  419. package/src/hooks/execution_hooks.ts +68 -0
  420. package/src/hooks/index.ts +13 -0
  421. package/src/hooks/resolve_custom_request.ts +24 -0
  422. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  423. package/src/logs/log_service.ts +234 -145
  424. package/src/messages/tx_resolver_service.ts +69 -0
  425. package/src/notes/note_service.ts +121 -86
  426. package/src/notes_filter.ts +24 -0
  427. package/src/oracle_version.ts +20 -10
  428. package/src/private_kernel/batch_planner.ts +168 -0
  429. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  430. package/src/private_kernel/hints/index.ts +1 -1
  431. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +176 -119
  432. package/src/private_kernel/hints/test_utils.ts +318 -0
  433. package/src/private_kernel/private_kernel_execution_prover.ts +341 -120
  434. package/src/private_kernel/private_kernel_oracle.ts +65 -36
  435. package/src/pxe.ts +597 -255
  436. package/src/storage/allowed_scopes.ts +14 -0
  437. package/src/storage/anchor_block_store/anchor_block_store.ts +9 -7
  438. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  439. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  440. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  441. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  442. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  443. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  444. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
  445. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
  446. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  447. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +26 -0
  448. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +30 -0
  449. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  450. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
  451. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  452. package/src/storage/backwards_compatibility_tests/schema_tests.ts +803 -0
  453. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  454. package/src/storage/capsule_store/capsule_service.ts +85 -0
  455. package/src/storage/capsule_store/capsule_store.ts +44 -26
  456. package/src/storage/capsule_store/index.ts +1 -0
  457. package/src/storage/contract_store/contract_store.ts +236 -165
  458. package/src/storage/fact_store/fact_service.ts +69 -0
  459. package/src/storage/fact_store/fact_store.ts +487 -0
  460. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  461. package/src/storage/fact_store/index.ts +15 -0
  462. package/src/storage/fact_store/origin_state.ts +84 -0
  463. package/src/storage/fact_store/stored_fact.ts +80 -0
  464. package/src/storage/index.ts +2 -1
  465. package/src/storage/metadata.ts +1 -1
  466. package/src/storage/note_store/note_store.ts +230 -190
  467. package/src/storage/note_store/stored_note.ts +5 -27
  468. package/src/storage/open_pxe_stores.ts +52 -0
  469. package/src/storage/private_event_store/private_event_store.ts +52 -54
  470. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  471. package/src/storage/store_identity.ts +72 -0
  472. package/src/storage/tagging_store/index.ts +1 -1
  473. package/src/storage/tagging_store/recipient_tagging_store.ts +5 -5
  474. package/src/storage/tagging_store/sender_tagging_store.ts +235 -141
  475. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  476. package/src/tagging/constants.ts +30 -10
  477. package/src/tagging/get_all_logs_by_tags.ts +87 -35
  478. package/src/tagging/index.ts +6 -5
  479. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  480. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +358 -0
  481. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +4 -4
  482. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  483. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +52 -17
  484. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +44 -14
  485. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +31 -27
  486. package/src/tagging/testing/tag_query_test_utils.ts +11 -0
  487. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -60
  488. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  489. package/dest/contract_function_simulator/oracle/oracle.js +0 -368
  490. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  491. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  492. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -80
  493. package/dest/contract_sync/contract_sync_service.d.ts +0 -42
  494. package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
  495. package/dest/contract_sync/contract_sync_service.js +0 -97
  496. package/dest/contract_sync/helpers.d.ts +0 -28
  497. package/dest/contract_sync/helpers.d.ts.map +0 -1
  498. package/dest/contract_sync/helpers.js +0 -55
  499. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  500. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  501. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  502. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  503. package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
  504. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -15
  505. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  506. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
  507. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -15
  508. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  509. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -32
  510. package/src/contract_function_simulator/oracle/oracle.ts +0 -637
  511. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -83
  512. package/src/contract_sync/contract_sync_service.ts +0 -145
  513. package/src/contract_sync/helpers.ts +0 -93
  514. package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
  515. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -143
  516. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -49
@@ -1,24 +1,30 @@
1
+ import { CircuitKind } from '@aztec/bb.js';
1
2
  import {
2
3
  AVM_EMITNOTEHASH_BASE_L2_GAS,
3
4
  AVM_EMITNULLIFIER_BASE_L2_GAS,
4
5
  AVM_SENDL2TOL1MSG_BASE_L2_GAS,
5
- DA_BYTES_PER_FIELD,
6
- DA_GAS_PER_BYTE,
6
+ DA_GAS_PER_FIELD,
7
7
  FIXED_AVM_STARTUP_L2_GAS,
8
- FIXED_DA_GAS,
9
- FIXED_L2_GAS,
10
- GeneratorIndex,
11
8
  L2_GAS_PER_CONTRACT_CLASS_LOG,
9
+ L2_GAS_PER_L2_TO_L1_MSG,
10
+ L2_GAS_PER_NOTE_HASH,
11
+ L2_GAS_PER_NULLIFIER,
12
12
  L2_GAS_PER_PRIVATE_LOG,
13
13
  MAX_CONTRACT_CLASS_LOGS_PER_TX,
14
14
  MAX_ENQUEUED_CALLS_PER_TX,
15
15
  MAX_L2_TO_L1_MSGS_PER_TX,
16
16
  MAX_NOTE_HASHES_PER_TX,
17
+ MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
17
18
  MAX_NULLIFIERS_PER_TX,
19
+ MAX_NULLIFIER_READ_REQUESTS_PER_TX,
18
20
  MAX_PRIVATE_LOGS_PER_TX,
21
+ MAX_TX_LIFETIME,
22
+ PRIVATE_TX_L2_GAS_OVERHEAD,
23
+ PUBLIC_DATA_WRITE_LENGTH,
24
+ PUBLIC_TX_L2_GAS_OVERHEAD,
25
+ TX_DA_GAS_OVERHEAD,
19
26
  } from '@aztec/constants';
20
27
  import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
21
- import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
22
28
  import { Fr } from '@aztec/foundation/curves/bn254';
23
29
  import { type Logger, createLogger } from '@aztec/foundation/log';
24
30
  import { Timer } from '@aztec/foundation/timer';
@@ -38,72 +44,91 @@ import type { FunctionCall } from '@aztec/stdlib/abi';
38
44
  import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
39
45
  import type { AuthWitness } from '@aztec/stdlib/auth-witness';
40
46
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
47
+ import type { BlockParameter, L2TipsProvider } from '@aztec/stdlib/block';
41
48
  import { Gas } from '@aztec/stdlib/gas';
42
49
  import {
43
50
  computeNoteHashNonce,
44
51
  computeProtocolNullifier,
52
+ computeSiloedPrivateLogFirstField,
45
53
  computeUniqueNoteHash,
46
54
  siloNoteHash,
47
55
  siloNullifier,
48
56
  } from '@aztec/stdlib/hash';
49
57
  import type { AztecNode } from '@aztec/stdlib/interfaces/server';
50
58
  import {
59
+ ClaimedLengthArray,
51
60
  PartialPrivateTailPublicInputsForPublic,
52
61
  PartialPrivateTailPublicInputsForRollup,
53
62
  type PrivateExecutionStep,
54
63
  type PrivateKernelExecutionProofOutput,
55
64
  PrivateKernelTailCircuitPublicInputs,
65
+ PrivateLogData,
56
66
  PrivateToPublicAccumulatedData,
57
67
  PrivateToRollupAccumulatedData,
58
68
  PublicCallRequest,
69
+ ReadRequestActionEnum,
59
70
  ScopedLogHash,
71
+ ScopedNoteHash,
72
+ ScopedNullifier,
73
+ ScopedReadRequest,
74
+ buildTransientDataHints,
75
+ getNoteHashReadRequestResetActions,
76
+ getNullifierReadRequestResetActions,
60
77
  } from '@aztec/stdlib/kernel';
61
78
  import { PrivateLog } from '@aztec/stdlib/logs';
62
79
  import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
63
80
  import { ChonkProof } from '@aztec/stdlib/proofs';
81
+ import { MerkleTreeId } from '@aztec/stdlib/trees';
64
82
  import {
65
83
  BlockHeader,
66
84
  CallContext,
85
+ type ContractOverrides,
67
86
  HashedValues,
87
+ type OffchainEffect,
68
88
  PrivateExecutionResult,
69
89
  TxConstantData,
70
90
  TxExecutionRequest,
71
91
  collectNested,
92
+ collectNoteHashNullifierCounterMap,
72
93
  getFinalMinRevertibleSideEffectCounter,
73
94
  } from '@aztec/stdlib/tx';
74
95
 
75
- 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';
76
100
  import type { AddressStore } from '../storage/address_store/address_store.js';
101
+ import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
77
102
  import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
78
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';
79
106
  import type { NoteStore } from '../storage/note_store/note_store.js';
80
107
  import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
81
108
  import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
82
- import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
83
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';
84
112
  import type { BenchmarkedNode } from './benchmarked_node.js';
85
113
  import { ExecutionNoteCache } from './execution_note_cache.js';
86
114
  import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
87
115
  import { HashedValuesCache } from './hashed_values_cache.js';
88
- import { Oracle } from './oracle/oracle.js';
116
+ import { buildACIRCallback } from './oracle/acir_callback.js';
89
117
  import { executePrivateFunction } from './oracle/private_execution.js';
90
118
  import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
91
119
  import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
120
+ import { TransientArrayService } from './transient_array_service.js';
92
121
 
93
122
  /** Options for ContractFunctionSimulator.run. */
94
123
  export type ContractSimulatorRunOpts = {
95
- /** The address of the contract (should match request.origin). */
96
- contractAddress: AztecAddress;
97
- /** The function selector of the entry point. */
98
- selector: FunctionSelector;
99
124
  /** The address calling the function. Can be replaced to simulate a call from another contract or account. */
100
125
  msgSender?: AztecAddress;
101
126
  /** The block header to use as base state for this run. */
102
127
  anchorBlockHeader: BlockHeader;
103
128
  /** The address used as a tagging sender when emitting private logs. */
104
129
  senderForTags?: AztecAddress;
105
- /** The accounts whose notes we can access in this call. Defaults to all. */
106
- scopes?: AztecAddress[];
130
+ /** The accounts whose notes we can access in this call. */
131
+ scopes: AztecAddress[];
107
132
  /** The job ID for staged writes. */
108
133
  jobId: string;
109
134
  };
@@ -111,17 +136,24 @@ export type ContractSimulatorRunOpts = {
111
136
  /** Args for ContractFunctionSimulator constructor. */
112
137
  export type ContractFunctionSimulatorArgs = {
113
138
  contractStore: ContractStore;
139
+ contractClassService: ContractClassService;
140
+ /** Per-simulation contract overrides. */
141
+ overrides?: ContractOverrides;
114
142
  noteStore: NoteStore;
115
143
  keyStore: KeyStore;
116
144
  addressStore: AddressStore;
117
145
  aztecNode: AztecNode;
146
+ l2TipsStore: L2TipsProvider;
118
147
  senderTaggingStore: SenderTaggingStore;
119
148
  recipientTaggingStore: RecipientTaggingStore;
120
- senderAddressBookStore: SenderAddressBookStore;
149
+ taggingSecretSourcesStore: TaggingSecretSourcesStore;
121
150
  capsuleStore: CapsuleStore;
151
+ factStore: FactStore;
122
152
  privateEventStore: PrivateEventStore;
123
153
  simulator: CircuitSimulator;
124
154
  contractSyncService: ContractSyncService;
155
+ txResolver: TxResolverService;
156
+ hooks?: ExecutionHooks;
125
157
  };
126
158
 
127
159
  /**
@@ -130,31 +162,43 @@ export type ContractFunctionSimulatorArgs = {
130
162
  export class ContractFunctionSimulator {
131
163
  private readonly log: Logger;
132
164
  private readonly contractStore: ContractStore;
165
+ private readonly contractClassService: ContractClassService;
166
+ private readonly overrides: ContractOverrides | undefined;
133
167
  private readonly noteStore: NoteStore;
134
168
  private readonly keyStore: KeyStore;
135
169
  private readonly addressStore: AddressStore;
136
170
  private readonly aztecNode: AztecNode;
171
+ private readonly l2TipsStore: L2TipsProvider;
137
172
  private readonly senderTaggingStore: SenderTaggingStore;
138
173
  private readonly recipientTaggingStore: RecipientTaggingStore;
139
- private readonly senderAddressBookStore: SenderAddressBookStore;
174
+ private readonly taggingSecretSourcesStore: TaggingSecretSourcesStore;
140
175
  private readonly capsuleStore: CapsuleStore;
176
+ private readonly factStore: FactStore;
141
177
  private readonly privateEventStore: PrivateEventStore;
142
178
  private readonly simulator: CircuitSimulator;
143
179
  private readonly contractSyncService: ContractSyncService;
180
+ private readonly txResolver: TxResolverService;
181
+ private readonly hooks: ExecutionHooks | undefined;
144
182
 
145
183
  constructor(args: ContractFunctionSimulatorArgs) {
146
184
  this.contractStore = args.contractStore;
185
+ this.contractClassService = args.contractClassService;
186
+ this.overrides = args.overrides;
147
187
  this.noteStore = args.noteStore;
148
188
  this.keyStore = args.keyStore;
149
189
  this.addressStore = args.addressStore;
150
190
  this.aztecNode = args.aztecNode;
191
+ this.l2TipsStore = args.l2TipsStore;
151
192
  this.senderTaggingStore = args.senderTaggingStore;
152
193
  this.recipientTaggingStore = args.recipientTaggingStore;
153
- this.senderAddressBookStore = args.senderAddressBookStore;
194
+ this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
154
195
  this.capsuleStore = args.capsuleStore;
196
+ this.factStore = args.factStore;
155
197
  this.privateEventStore = args.privateEventStore;
156
198
  this.simulator = args.simulator;
157
199
  this.contractSyncService = args.contractSyncService;
200
+ this.txResolver = args.txResolver;
201
+ this.hooks = args.hooks;
158
202
  this.log = createLogger('simulator');
159
203
  }
160
204
 
@@ -165,9 +209,7 @@ export class ContractFunctionSimulator {
165
209
  public async run(
166
210
  request: TxExecutionRequest,
167
211
  {
168
- contractAddress,
169
- selector,
170
- msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
212
+ msgSender = AztecAddress.NULL_MSG_SENDER,
171
213
  anchorBlockHeader,
172
214
  senderForTags,
173
215
  scopes,
@@ -176,18 +218,30 @@ export class ContractFunctionSimulator {
176
218
  ): Promise<PrivateExecutionResult> {
177
219
  const simulatorSetupTimer = new Timer();
178
220
 
179
- const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(contractAddress, selector);
221
+ const contractAddress = request.origin;
180
222
 
181
- if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
182
- throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
183
- }
223
+ const anchoredContractData = new AnchoredContractData(
224
+ this.contractStore,
225
+ this.contractClassService,
226
+ anchorBlockHeader,
227
+ this.overrides,
228
+ );
184
229
 
185
- if (request.origin !== contractAddress) {
186
- this.log.warn(
187
- `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(...).`,
188
238
  );
189
239
  }
190
240
 
241
+ if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
242
+ throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
243
+ }
244
+
191
245
  // reserve the first side effect for the tx hash (inserted by the private kernel)
192
246
  const startSideEffectCounter = 2;
193
247
 
@@ -202,9 +256,15 @@ export class ContractFunctionSimulator {
202
256
  const noteCache = new ExecutionNoteCache(protocolNullifier);
203
257
  const taggingIndexCache = new ExecutionTaggingIndexCache();
204
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
+
205
264
  const privateExecutionOracle = new PrivateExecutionOracle({
206
265
  argsHash: request.firstCallArgsHash,
207
266
  txContext: request.txContext,
267
+ txRequestSalt: request.salt,
208
268
  callContext,
209
269
  anchorBlockHeader,
210
270
  utilityExecutor: async (call, execScopes) => {
@@ -215,16 +275,18 @@ export class ContractFunctionSimulator {
215
275
  executionCache: HashedValuesCache.create(request.argsOfCalls),
216
276
  noteCache,
217
277
  taggingIndexCache,
218
- contractStore: this.contractStore,
278
+ anchoredContractData,
219
279
  noteStore: this.noteStore,
220
280
  keyStore: this.keyStore,
221
281
  addressStore: this.addressStore,
222
282
  aztecNode: this.aztecNode,
223
283
  senderTaggingStore: this.senderTaggingStore,
224
284
  recipientTaggingStore: this.recipientTaggingStore,
225
- senderAddressBookStore: this.senderAddressBookStore,
226
- capsuleStore: this.capsuleStore,
285
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
286
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
287
+ factService: new FactService(this.factStore, scopes),
227
288
  privateEventStore: this.privateEventStore,
289
+ txResolver: this.txResolver,
228
290
  contractSyncService: this.contractSyncService,
229
291
  jobId,
230
292
  totalPublicCalldataCount: 0,
@@ -232,6 +294,9 @@ export class ContractFunctionSimulator {
232
294
  scopes,
233
295
  senderForTags,
234
296
  simulator: this.simulator,
297
+ l2TipsStore: this.l2TipsStore,
298
+ hooks: this.hooks,
299
+ transientArrayService,
235
300
  });
236
301
 
237
302
  const setupTime = simulatorSetupTimer.ms();
@@ -250,7 +315,6 @@ export class ContractFunctionSimulator {
250
315
  );
251
316
  const simulatorTeardownTimer = new Timer();
252
317
 
253
- noteCache.finish();
254
318
  const firstNullifierHint = noteCache.getNonceGenerator();
255
319
 
256
320
  const publicCallRequests = collectNested([executionResult], r =>
@@ -261,7 +325,7 @@ export class ContractFunctionSimulator {
261
325
  );
262
326
  const publicFunctionsCalldata = await Promise.all(
263
327
  publicCallRequests.map(async r => {
264
- const calldata = await privateExecutionOracle.privateLoadFromExecutionCache(r.calldataHash);
328
+ const calldata = await privateExecutionOracle.getHashPreimage(r.calldataHash);
265
329
  return new HashedValues(calldata, r.calldataHash);
266
330
  }),
267
331
  );
@@ -282,45 +346,71 @@ export class ContractFunctionSimulator {
282
346
  }
283
347
  }
284
348
 
285
- // docs:start:execute_utility_function
286
349
  /**
287
350
  * Runs a utility function.
288
351
  * @param call - The function call to execute.
289
- * @param authwits - Authentication witnesses required for the function call.
290
- * @param anchorBlockHeader - The block header to use as base state for this run.
291
- * @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
292
- * accounts if not specified.
293
352
  * @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
294
353
  */
295
354
  public async runUtility(
296
355
  call: FunctionCall,
297
356
  authwits: AuthWitness[],
298
357
  anchorBlockHeader: BlockHeader,
299
- scopes: AztecAddress[] | undefined,
358
+ scopes: AztecAddress[],
300
359
  jobId: string,
301
- ): Promise<Fr[]> {
302
- 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
+ }
303
375
 
304
376
  if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
305
377
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
306
378
  }
307
379
 
380
+ const utilityExecutor = async (syncCall: FunctionCall, execScopes: AztecAddress[]) => {
381
+ await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, jobId);
382
+ };
383
+
308
384
  const oracle = new UtilityExecutionOracle({
309
- 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
+ }),
310
391
  authWitnesses: authwits,
311
392
  capsules: [],
312
393
  anchorBlockHeader,
313
- contractStore: this.contractStore,
394
+ anchoredContractData,
314
395
  noteStore: this.noteStore,
315
396
  keyStore: this.keyStore,
316
397
  addressStore: this.addressStore,
317
398
  aztecNode: this.aztecNode,
318
399
  recipientTaggingStore: this.recipientTaggingStore,
319
- senderAddressBookStore: this.senderAddressBookStore,
320
- capsuleStore: this.capsuleStore,
400
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
401
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
402
+ factService: new FactService(this.factStore, scopes),
321
403
  privateEventStore: this.privateEventStore,
404
+ txResolver: this.txResolver,
405
+ contractSyncService: this.contractSyncService,
406
+ l2TipsStore: this.l2TipsStore,
322
407
  jobId,
323
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(),
324
414
  });
325
415
 
326
416
  try {
@@ -331,7 +421,7 @@ export class ContractFunctionSimulator {
331
421
 
332
422
  const initialWitness = toACVMWitness(0, call.args);
333
423
  const acirExecutionResult = await this.simulator
334
- .executeUserCircuit(initialWitness, entryPointArtifact, new Oracle(oracle).toACIRCallback())
424
+ .executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle))
335
425
  .catch((err: Error) => {
336
426
  err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
337
427
  throw new ExecutionError(
@@ -345,13 +435,15 @@ export class ContractFunctionSimulator {
345
435
  );
346
436
  });
347
437
 
348
- this.log.verbose(`Utility simulation for ${call.to}.${call.selector} completed`);
349
- return witnessMapToFields(acirExecutionResult.returnWitness);
438
+ this.log.verbose(`Utility execution for ${call.to}.${call.selector} completed`);
439
+ return {
440
+ result: witnessMapToFields(acirExecutionResult.returnWitness),
441
+ offchainEffects: oracle.getOffchainEffects(),
442
+ };
350
443
  } catch (err) {
351
444
  throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
352
445
  }
353
446
  }
354
- // docs:end:execute_utility_function
355
447
 
356
448
  /**
357
449
  * Returns the execution statistics collected during the simulator run.
@@ -387,7 +479,8 @@ class OrderedSideEffect<T> {
387
479
  * (allowing state overrides) and is much faster, while still generating a valid
388
480
  * output that can be sent to the node for public simulation
389
481
  * @param privateExecutionResult - The result of the private execution.
390
- * @param contractStore - A provider for contract data in order to get function names and debug info.
482
+ * @param debugFunctionNameGetter - A provider for contract data in order to get function names and debug info.
483
+ * @param node - AztecNode for verifying settled read requests against the note hash and nullifier trees.
391
484
  * @param minRevertibleSideEffectCounterOverride - Optional override for the min revertible side effect counter.
392
485
  * Used by TXE to simulate account contract behavior (setting the counter before app execution).
393
486
  * @returns The simulated proving result.
@@ -395,58 +488,73 @@ class OrderedSideEffect<T> {
395
488
  export async function generateSimulatedProvingResult(
396
489
  privateExecutionResult: PrivateExecutionResult,
397
490
  debugFunctionNameGetter: (contractAddress: AztecAddress, functionSelector: FunctionSelector) => Promise<string>,
491
+ node: AztecNode,
398
492
  minRevertibleSideEffectCounterOverride?: number,
399
493
  ): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
400
- const siloedNoteHashes: OrderedSideEffect<Fr>[] = [];
401
- const nullifiers: OrderedSideEffect<Fr>[] = [];
402
- const taggedPrivateLogs: OrderedSideEffect<PrivateLog>[] = [];
494
+ const taggedPrivateLogs: OrderedSideEffect<PrivateLogData>[] = [];
403
495
  const l2ToL1Messages: OrderedSideEffect<ScopedL2ToL1Message>[] = [];
404
496
  const contractClassLogsHashes: OrderedSideEffect<ScopedLogHash>[] = [];
405
497
  const publicCallRequests: OrderedSideEffect<PublicCallRequest>[] = [];
406
498
  const executionSteps: PrivateExecutionStep[] = [];
407
499
 
500
+ // Unsiloed scoped arrays — used for squashing, read request verification,
501
+ // and siloed at the end only for the surviving items
502
+ const scopedNoteHashes: ScopedNoteHash[] = [];
503
+ const scopedNullifiers: ScopedNullifier[] = [];
504
+
505
+ // Read requests for verification
506
+ const noteHashReadRequests: ScopedReadRequest[] = [];
507
+ const nullifierReadRequests: ScopedReadRequest[] = [];
508
+
408
509
  let publicTeardownCallRequest;
409
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
+
410
518
  const executions = [privateExecutionResult.entrypoint];
411
519
 
412
520
  while (executions.length !== 0) {
413
521
  const execution = executions.shift()!;
414
522
  executions.unshift(...execution!.nestedExecutionResults);
415
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
+
416
530
  const { contractAddress } = execution.publicInputs.callContext;
417
531
 
418
- const noteHashesFromExecution = await Promise.all(
419
- execution.publicInputs.noteHashes
420
- .getActiveItems()
421
- .filter(noteHash => !noteHash.isEmpty())
422
- .map(
423
- async noteHash =>
424
- new OrderedSideEffect(await siloNoteHash(contractAddress, noteHash.value), noteHash.counter),
425
- ),
426
- );
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
+ }
427
538
 
428
- const nullifiersFromExecution = await Promise.all(
429
- execution.publicInputs.nullifiers
539
+ scopedNoteHashes.push(
540
+ ...execution.publicInputs.noteHashes
430
541
  .getActiveItems()
431
- .map(
432
- async nullifier =>
433
- new OrderedSideEffect(await siloNullifier(contractAddress, nullifier.value), nullifier.counter),
434
- ),
542
+ .filter(nh => !nh.isEmpty())
543
+ .map(nh => nh.scope(contractAddress)),
435
544
  );
545
+ scopedNullifiers.push(...execution.publicInputs.nullifiers.getActiveItems().map(n => n.scope(contractAddress)));
436
546
 
437
- const privateLogsFromExecution = await Promise.all(
438
- execution.publicInputs.privateLogs.getActiveItems().map(async metadata => {
439
- metadata.log.fields[0] = await poseidon2HashWithSeparator(
440
- [contractAddress, metadata.log.fields[0]],
441
- GeneratorIndex.PRIVATE_LOG_FIRST_FIELD,
442
- );
443
- return new OrderedSideEffect(metadata.log, metadata.counter);
444
- }),
547
+ taggedPrivateLogs.push(
548
+ ...(await Promise.all(
549
+ execution.publicInputs.privateLogs.getActiveItems().map(async metadata => {
550
+ metadata.log.fields[0] = await computeSiloedPrivateLogFirstField(contractAddress, metadata.log.fields[0]);
551
+ return new OrderedSideEffect(metadata, metadata.counter);
552
+ }),
553
+ )),
445
554
  );
446
555
 
447
- siloedNoteHashes.push(...noteHashesFromExecution);
448
- taggedPrivateLogs.push(...privateLogsFromExecution);
449
- nullifiers.push(...nullifiersFromExecution);
556
+ noteHashReadRequests.push(...execution.publicInputs.noteHashReadRequests.getActiveItems());
557
+ nullifierReadRequests.push(...execution.publicInputs.nullifierReadRequests.getActiveItems());
450
558
  l2ToL1Messages.push(
451
559
  ...execution.publicInputs.l2ToL1Msgs
452
560
  .getActiveItems()
@@ -480,12 +588,54 @@ export async function generateSimulatedProvingResult(
480
588
  execution.publicInputs.callContext.functionSelector,
481
589
  ),
482
590
  timings: execution.profileResult?.timings ?? { witgen: 0, oracles: {} },
591
+ kind: CircuitKind.App,
483
592
  bytecode: execution.acir,
484
593
  vk: execution.vk,
485
594
  witness: execution.partialWitness,
486
595
  });
487
596
  }
488
597
 
598
+ const noteHashNullifierCounterMap = collectNoteHashNullifierCounterMap(privateExecutionResult);
599
+ const minRevertibleSideEffectCounter =
600
+ minRevertibleSideEffectCounterOverride ?? getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
601
+
602
+ const scopedNoteHashesCLA = new ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>(
603
+ padArrayEnd(scopedNoteHashes, ScopedNoteHash.empty(), MAX_NOTE_HASHES_PER_TX),
604
+ scopedNoteHashes.length,
605
+ );
606
+ const scopedNullifiersCLA = new ClaimedLengthArray<ScopedNullifier, typeof MAX_NULLIFIERS_PER_TX>(
607
+ padArrayEnd(scopedNullifiers, ScopedNullifier.empty(), MAX_NULLIFIERS_PER_TX),
608
+ scopedNullifiers.length,
609
+ );
610
+
611
+ const { filteredNoteHashes, filteredNullifiers, filteredPrivateLogs } = squashTransientSideEffects(
612
+ taggedPrivateLogs,
613
+ scopedNoteHashesCLA,
614
+ scopedNullifiersCLA,
615
+ noteHashNullifierCounterMap,
616
+ minRevertibleSideEffectCounter,
617
+ );
618
+
619
+ await verifyReadRequests(
620
+ node,
621
+ await privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.hash(),
622
+ noteHashReadRequests,
623
+ nullifierReadRequests,
624
+ scopedNoteHashesCLA,
625
+ scopedNullifiersCLA,
626
+ );
627
+
628
+ const siloedNoteHashes = await Promise.all(
629
+ filteredNoteHashes
630
+ .sort((a, b) => a.counter - b.counter)
631
+ .map(async nh => new OrderedSideEffect(await siloNoteHash(nh.contractAddress, nh.value), nh.counter)),
632
+ );
633
+ const siloedNullifiers = await Promise.all(
634
+ filteredNullifiers
635
+ .sort((a, b) => a.counter - b.counter)
636
+ .map(async n => new OrderedSideEffect(await siloNullifier(n.contractAddress, n.value), n.counter)),
637
+ );
638
+
489
639
  const constantData = new TxConstantData(
490
640
  privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader,
491
641
  privateExecutionResult.entrypoint.publicInputs.txContext,
@@ -502,25 +652,23 @@ export async function generateSimulatedProvingResult(
502
652
  const getEffect = <T>(orderedSideEffect: OrderedSideEffect<T>) => orderedSideEffect.sideEffect;
503
653
 
504
654
  const isPrivateOnlyTx = privateExecutionResult.publicFunctionCalldata.length === 0;
505
- const minRevertibleSideEffectCounter =
506
- minRevertibleSideEffectCounterOverride ?? getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
507
655
 
508
656
  const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(
509
- nullifiers.sort(sortByCounter),
657
+ siloedNullifiers,
510
658
  minRevertibleSideEffectCounter,
511
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.
512
664
  const nonceGenerator = privateExecutionResult.firstNullifier;
513
- if (nonRevertibleNullifiers.length === 0) {
514
- nonRevertibleNullifiers.push(nonceGenerator);
515
- } else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
516
- throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
517
- }
665
+ nonRevertibleNullifiers.unshift(nonceGenerator);
518
666
 
519
667
  if (isPrivateOnlyTx) {
520
668
  // We must make the note hashes unique by using the
521
669
  // nonce generator and their index in the tx.
522
670
  const uniqueNoteHashes = await Promise.all(
523
- siloedNoteHashes.sort(sortByCounter).map(async (orderedSideEffect, i) => {
671
+ siloedNoteHashes.map(async (orderedSideEffect, i) => {
524
672
  const siloedNoteHash = orderedSideEffect.sideEffect;
525
673
  const nonce = await computeNoteHashNonce(nonceGenerator, i);
526
674
  const uniqueNoteHash = await computeUniqueNoteHash(nonce, siloedNoteHash);
@@ -535,18 +683,18 @@ export async function generateSimulatedProvingResult(
535
683
  ScopedL2ToL1Message.empty(),
536
684
  MAX_L2_TO_L1_MSGS_PER_TX,
537
685
  ),
538
- padArrayEnd(taggedPrivateLogs.sort(sortByCounter).map(getEffect), PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
686
+ padArrayEnd(filteredPrivateLogs.sort(sortByCounter).map(getEffect), PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
539
687
  padArrayEnd(
540
688
  contractClassLogsHashes.sort(sortByCounter).map(getEffect),
541
689
  ScopedLogHash.empty(),
542
690
  MAX_CONTRACT_CLASS_LOGS_PER_TX,
543
691
  ),
544
692
  );
545
- gasUsed = meterGasUsed(accumulatedDataForRollup);
693
+ gasUsed = meterGasUsed(accumulatedDataForRollup, isPrivateOnlyTx);
546
694
  inputsForRollup = new PartialPrivateTailPublicInputsForRollup(accumulatedDataForRollup);
547
695
  } else {
548
696
  const [nonRevertibleNoteHashes, revertibleNoteHashes] = splitOrderedSideEffects(
549
- siloedNoteHashes.sort(sortByCounter),
697
+ siloedNoteHashes,
550
698
  minRevertibleSideEffectCounter,
551
699
  );
552
700
  const nonRevertibleUniqueNoteHashes = await Promise.all(
@@ -560,7 +708,7 @@ export async function generateSimulatedProvingResult(
560
708
  minRevertibleSideEffectCounter,
561
709
  );
562
710
  const [nonRevertibleTaggedPrivateLogs, revertibleTaggedPrivateLogs] = splitOrderedSideEffects(
563
- taggedPrivateLogs,
711
+ filteredPrivateLogs,
564
712
  minRevertibleSideEffectCounter,
565
713
  );
566
714
  const [nonRevertibleContractClassLogHashes, revertibleContractClassLogHashes] = splitOrderedSideEffects(
@@ -589,9 +737,9 @@ export async function generateSimulatedProvingResult(
589
737
  padArrayEnd(revertibleContractClassLogHashes, ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX),
590
738
  padArrayEnd(revertiblePublicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX),
591
739
  );
592
- gasUsed = meterGasUsed(revertibleData).add(meterGasUsed(nonRevertibleData));
740
+ gasUsed = meterGasUsed(revertibleData, isPrivateOnlyTx).add(meterGasUsed(nonRevertibleData, isPrivateOnlyTx));
593
741
  if (publicTeardownCallRequest) {
594
- gasUsed.add(privateExecutionResult.entrypoint.publicInputs.txContext.gasSettings.teardownGasLimits);
742
+ gasUsed = gasUsed.add(privateExecutionResult.entrypoint.publicInputs.txContext.gasSettings.teardownGasLimits);
595
743
  }
596
744
 
597
745
  inputsForPublic = new PartialPrivateTailPublicInputsForPublic(
@@ -603,9 +751,14 @@ export async function generateSimulatedProvingResult(
603
751
 
604
752
  const publicInputs = new PrivateKernelTailCircuitPublicInputs(
605
753
  constantData,
606
- /*gasUsed=*/ gasUsed.add(Gas.from({ l2Gas: FIXED_L2_GAS, daGas: FIXED_DA_GAS })),
607
- /*feePayer=*/ AztecAddress.zero(),
608
- /*includeByTimestamp=*/ 0n,
754
+ /*gasUsed=*/ gasUsed.add(
755
+ Gas.from({
756
+ l2Gas: isPrivateOnlyTx ? PRIVATE_TX_L2_GAS_OVERHEAD : PUBLIC_TX_L2_GAS_OVERHEAD,
757
+ daGas: TX_DA_GAS_OVERHEAD,
758
+ }),
759
+ ),
760
+ /*feePayer=*/ feePayer,
761
+ /*expirationTimestamp=*/ expirationTimestamp,
609
762
  hasPublicCalls ? inputsForPublic : undefined,
610
763
  !hasPublicCalls ? inputsForRollup : undefined,
611
764
  );
@@ -617,6 +770,116 @@ export async function generateSimulatedProvingResult(
617
770
  };
618
771
  }
619
772
 
773
+ /**
774
+ * Squashes transient note hashes and nullifiers, mimicking the behavior
775
+ * of the reset kernels. Returns the filtered (surviving) scoped items and private logs.
776
+ */
777
+ function squashTransientSideEffects(
778
+ taggedPrivateLogs: OrderedSideEffect<PrivateLogData>[],
779
+ scopedNoteHashesCLA: ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>,
780
+ scopedNullifiersCLA: ClaimedLengthArray<ScopedNullifier, typeof MAX_NULLIFIERS_PER_TX>,
781
+ noteHashNullifierCounterMap: Map<number, number>,
782
+ minRevertibleSideEffectCounter: number,
783
+ ) {
784
+ const { numTransientData, hints: transientDataHints } = buildTransientDataHints(
785
+ scopedNoteHashesCLA,
786
+ scopedNullifiersCLA,
787
+ /*futureNoteHashReads=*/ [],
788
+ /*futureNullifierReads=*/ [],
789
+ /*futureLogs=*/ [],
790
+ noteHashNullifierCounterMap,
791
+ minRevertibleSideEffectCounter,
792
+ );
793
+
794
+ const squashedNoteHashCounters = new Set<number>();
795
+ const squashedNullifierCounters = new Set<number>();
796
+ for (let i = 0; i < numTransientData; i++) {
797
+ const hint = transientDataHints[i];
798
+ squashedNoteHashCounters.add(scopedNoteHashesCLA.array[hint.noteHashIndex].counter);
799
+ squashedNullifierCounters.add(scopedNullifiersCLA.array[hint.nullifierIndex].counter);
800
+ }
801
+
802
+ return {
803
+ filteredNoteHashes: scopedNoteHashesCLA.getActiveItems().filter(nh => !squashedNoteHashCounters.has(nh.counter)),
804
+ filteredNullifiers: scopedNullifiersCLA.getActiveItems().filter(n => !squashedNullifierCounters.has(n.counter)),
805
+ filteredPrivateLogs: taggedPrivateLogs
806
+ .filter(item => !squashedNoteHashCounters.has(item.sideEffect.noteHashCounter))
807
+ .map(item => new OrderedSideEffect(item.sideEffect.log, item.counter)),
808
+ };
809
+ }
810
+
811
+ /**
812
+ * Verifies settled read requests by checking membership in the note hash and nullifier trees
813
+ * at the tx's anchor block, mimicking the behavior of the kernels
814
+ */
815
+ async function verifyReadRequests(
816
+ node: Pick<AztecNode, 'findLeavesIndexes'>,
817
+ anchorBlockHash: BlockParameter,
818
+ noteHashReadRequests: ScopedReadRequest[],
819
+ nullifierReadRequests: ScopedReadRequest[],
820
+ scopedNoteHashesCLA: ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>,
821
+ scopedNullifiersCLA: ClaimedLengthArray<ScopedNullifier, typeof MAX_NULLIFIERS_PER_TX>,
822
+ ) {
823
+ const noteHashReadRequestsCLA = new ClaimedLengthArray<ScopedReadRequest, typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>(
824
+ padArrayEnd(noteHashReadRequests, ScopedReadRequest.empty(), MAX_NOTE_HASH_READ_REQUESTS_PER_TX),
825
+ noteHashReadRequests.length,
826
+ );
827
+ const nullifierReadRequestsCLA = new ClaimedLengthArray<ScopedReadRequest, typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX>(
828
+ padArrayEnd(nullifierReadRequests, ScopedReadRequest.empty(), MAX_NULLIFIER_READ_REQUESTS_PER_TX),
829
+ nullifierReadRequests.length,
830
+ );
831
+
832
+ const noteHashResetActions = getNoteHashReadRequestResetActions(noteHashReadRequestsCLA, scopedNoteHashesCLA);
833
+ const nullifierResetActions = getNullifierReadRequestResetActions(nullifierReadRequestsCLA, scopedNullifiersCLA);
834
+
835
+ const settledNoteHashReads: { index: number; value: Fr }[] = [];
836
+ for (let i = 0; i < noteHashResetActions.actions.length; i++) {
837
+ if (noteHashResetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
838
+ settledNoteHashReads.push({ index: i, value: noteHashReadRequests[i].value });
839
+ }
840
+ }
841
+
842
+ const settledNullifierReads: { index: number; value: Fr }[] = [];
843
+ for (let i = 0; i < nullifierResetActions.actions.length; i++) {
844
+ if (nullifierResetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
845
+ settledNullifierReads.push({ index: i, value: nullifierReadRequests[i].value });
846
+ }
847
+ }
848
+
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
+ : [],
864
+ ]);
865
+
866
+ for (let i = 0; i < settledNoteHashReads.length; i++) {
867
+ if (!noteHashResults[i]) {
868
+ throw new Error(
869
+ `Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`,
870
+ );
871
+ }
872
+ }
873
+
874
+ for (let i = 0; i < settledNullifierReads.length; i++) {
875
+ if (!nullifierResults[i]) {
876
+ throw new Error(
877
+ `Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`,
878
+ );
879
+ }
880
+ }
881
+ }
882
+
620
883
  function splitOrderedSideEffects<T>(effects: OrderedSideEffect<T>[], minRevertibleSideEffectCounter: number) {
621
884
  const revertibleSideEffects: T[] = [];
622
885
  const nonRevertibleSideEffects: T[] = [];
@@ -630,21 +893,24 @@ function splitOrderedSideEffects<T>(effects: OrderedSideEffect<T>[], minRevertib
630
893
  return [nonRevertibleSideEffects, revertibleSideEffects];
631
894
  }
632
895
 
633
- function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccumulatedData) {
896
+ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccumulatedData, isPrivateOnlyTx: boolean) {
634
897
  let meteredDAFields = 0;
635
898
  let meteredL2Gas = 0;
636
899
 
637
900
  const numNoteHashes = arrayNonEmptyLength(data.noteHashes, hash => hash.isEmpty());
638
901
  meteredDAFields += numNoteHashes;
639
- meteredL2Gas += numNoteHashes * AVM_EMITNOTEHASH_BASE_L2_GAS;
902
+ const noteHashBaseGas = isPrivateOnlyTx ? L2_GAS_PER_NOTE_HASH : AVM_EMITNOTEHASH_BASE_L2_GAS;
903
+ meteredL2Gas += numNoteHashes * noteHashBaseGas;
640
904
 
641
905
  const numNullifiers = arrayNonEmptyLength(data.nullifiers, nullifier => nullifier.isEmpty());
642
906
  meteredDAFields += numNullifiers;
643
- meteredL2Gas += numNullifiers * AVM_EMITNULLIFIER_BASE_L2_GAS;
907
+ const nullifierBaseGas = isPrivateOnlyTx ? L2_GAS_PER_NULLIFIER : AVM_EMITNULLIFIER_BASE_L2_GAS;
908
+ meteredL2Gas += numNullifiers * nullifierBaseGas;
644
909
 
645
910
  const numL2toL1Messages = arrayNonEmptyLength(data.l2ToL1Msgs, msg => msg.isEmpty());
646
911
  meteredDAFields += numL2toL1Messages;
647
- meteredL2Gas += numL2toL1Messages * AVM_SENDL2TOL1MSG_BASE_L2_GAS;
912
+ const l2ToL1MessageBaseGas = isPrivateOnlyTx ? L2_GAS_PER_L2_TO_L1_MSG : AVM_SENDL2TOL1MSG_BASE_L2_GAS;
913
+ meteredL2Gas += numL2toL1Messages * l2ToL1MessageBaseGas;
648
914
 
649
915
  const numPrivatelogs = arrayNonEmptyLength(data.privateLogs, log => log.isEmpty());
650
916
  // Every private log emits its length as an additional field
@@ -652,14 +918,19 @@ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccu
652
918
  meteredL2Gas += numPrivatelogs * L2_GAS_PER_PRIVATE_LOG;
653
919
 
654
920
  const numContractClassLogs = arrayNonEmptyLength(data.contractClassLogsHashes, log => log.isEmpty());
655
- // Every contract class log emits its length and contract address as additional fields
921
+ // Every contract class log emits its contract address as an additional field
656
922
  meteredDAFields += data.contractClassLogsHashes.reduce(
657
- (acc, log) => (!log.isEmpty() ? acc + log.logHash.length + 2 : acc),
923
+ (acc, log) => (!log.isEmpty() ? acc + log.logHash.length + 1 : acc),
658
924
  0,
659
925
  );
660
926
  meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
661
927
 
662
- const meteredDAGas = meteredDAFields * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE;
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
+
933
+ const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
663
934
 
664
935
  if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {
665
936
  const dataForPublic = data as PrivateToPublicAccumulatedData;