@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,6 +1,6 @@
1
- import { AVM_EMITNOTEHASH_BASE_L2_GAS, AVM_EMITNULLIFIER_BASE_L2_GAS, AVM_SENDL2TOL1MSG_BASE_L2_GAS, DA_BYTES_PER_FIELD, DA_GAS_PER_BYTE, FIXED_AVM_STARTUP_L2_GAS, FIXED_DA_GAS, FIXED_L2_GAS, GeneratorIndex, L2_GAS_PER_CONTRACT_CLASS_LOG, L2_GAS_PER_PRIVATE_LOG, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENQUEUED_CALLS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PRIVATE_LOGS_PER_TX } from '@aztec/constants';
1
+ import { CircuitKind } from '@aztec/bb.js';
2
+ import { AVM_EMITNOTEHASH_BASE_L2_GAS, AVM_EMITNULLIFIER_BASE_L2_GAS, AVM_SENDL2TOL1MSG_BASE_L2_GAS, DA_GAS_PER_FIELD, FIXED_AVM_STARTUP_L2_GAS, L2_GAS_PER_CONTRACT_CLASS_LOG, L2_GAS_PER_L2_TO_L1_MSG, L2_GAS_PER_NOTE_HASH, L2_GAS_PER_NULLIFIER, L2_GAS_PER_PRIVATE_LOG, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENQUEUED_CALLS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, MAX_TX_LIFETIME, PRIVATE_TX_L2_GAS_OVERHEAD, PUBLIC_DATA_WRITE_LENGTH, PUBLIC_TX_L2_GAS_OVERHEAD, TX_DA_GAS_OVERHEAD } from '@aztec/constants';
2
3
  import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
3
- import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
4
4
  import { Fr } from '@aztec/foundation/curves/bn254';
5
5
  import { createLogger } from '@aztec/foundation/log';
6
6
  import { Timer } from '@aztec/foundation/timer';
@@ -10,71 +10,95 @@ import { ExecutionError, createSimulationError, extractCallStack, resolveAsserti
10
10
  import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
11
11
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
12
12
  import { Gas } from '@aztec/stdlib/gas';
13
- import { computeNoteHashNonce, computeProtocolNullifier, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
14
- import { PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PrivateToRollupAccumulatedData, PublicCallRequest, ScopedLogHash } from '@aztec/stdlib/kernel';
13
+ import { computeNoteHashNonce, computeProtocolNullifier, computeSiloedPrivateLogFirstField, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
14
+ import { ClaimedLengthArray, PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PrivateToRollupAccumulatedData, PublicCallRequest, ReadRequestActionEnum, ScopedLogHash, ScopedNoteHash, ScopedNullifier, ScopedReadRequest, buildTransientDataHints, getNoteHashReadRequestResetActions, getNullifierReadRequestResetActions } from '@aztec/stdlib/kernel';
15
15
  import { PrivateLog } from '@aztec/stdlib/logs';
16
16
  import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
17
17
  import { ChonkProof } from '@aztec/stdlib/proofs';
18
- import { CallContext, HashedValues, PrivateExecutionResult, TxConstantData, collectNested, getFinalMinRevertibleSideEffectCounter } from '@aztec/stdlib/tx';
18
+ import { MerkleTreeId } from '@aztec/stdlib/trees';
19
+ import { CallContext, HashedValues, PrivateExecutionResult, TxConstantData, collectNested, collectNoteHashNullifierCounterMap, getFinalMinRevertibleSideEffectCounter } from '@aztec/stdlib/tx';
20
+ import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
21
+ import { FactService } from '../storage/fact_store/index.js';
22
+ import { AnchoredContractData } from './anchored_contract_data.js';
19
23
  import { ExecutionNoteCache } from './execution_note_cache.js';
20
24
  import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
21
25
  import { HashedValuesCache } from './hashed_values_cache.js';
22
- import { Oracle } from './oracle/oracle.js';
26
+ import { buildACIRCallback } from './oracle/acir_callback.js';
23
27
  import { executePrivateFunction } from './oracle/private_execution.js';
24
28
  import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
25
29
  import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
30
+ import { TransientArrayService } from './transient_array_service.js';
26
31
  /**
27
32
  * The contract function simulator.
28
33
  */ export class ContractFunctionSimulator {
29
34
  log;
30
35
  contractStore;
36
+ contractClassService;
37
+ overrides;
31
38
  noteStore;
32
39
  keyStore;
33
40
  addressStore;
34
41
  aztecNode;
42
+ l2TipsStore;
35
43
  senderTaggingStore;
36
44
  recipientTaggingStore;
37
- senderAddressBookStore;
45
+ taggingSecretSourcesStore;
38
46
  capsuleStore;
47
+ factStore;
39
48
  privateEventStore;
40
49
  simulator;
41
50
  contractSyncService;
51
+ txResolver;
52
+ hooks;
42
53
  constructor(args){
43
54
  this.contractStore = args.contractStore;
55
+ this.contractClassService = args.contractClassService;
56
+ this.overrides = args.overrides;
44
57
  this.noteStore = args.noteStore;
45
58
  this.keyStore = args.keyStore;
46
59
  this.addressStore = args.addressStore;
47
60
  this.aztecNode = args.aztecNode;
61
+ this.l2TipsStore = args.l2TipsStore;
48
62
  this.senderTaggingStore = args.senderTaggingStore;
49
63
  this.recipientTaggingStore = args.recipientTaggingStore;
50
- this.senderAddressBookStore = args.senderAddressBookStore;
64
+ this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
51
65
  this.capsuleStore = args.capsuleStore;
66
+ this.factStore = args.factStore;
52
67
  this.privateEventStore = args.privateEventStore;
53
68
  this.simulator = args.simulator;
54
69
  this.contractSyncService = args.contractSyncService;
70
+ this.txResolver = args.txResolver;
71
+ this.hooks = args.hooks;
55
72
  this.log = createLogger('simulator');
56
73
  }
57
74
  /**
58
75
  * Runs a private function.
59
76
  * @param request - The transaction request.
60
- */ async run(request, { contractAddress, selector, msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE), anchorBlockHeader, senderForTags, scopes, jobId }) {
77
+ */ async run(request, { msgSender = AztecAddress.NULL_MSG_SENDER, anchorBlockHeader, senderForTags, scopes, jobId }) {
61
78
  const simulatorSetupTimer = new Timer();
62
- const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(contractAddress, selector);
79
+ const contractAddress = request.origin;
80
+ const anchoredContractData = new AnchoredContractData(this.contractStore, this.contractClassService, anchorBlockHeader, this.overrides);
81
+ const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(contractAddress, request.functionSelector);
82
+ if (!entryPointArtifact) {
83
+ throw new Error(`Cannot run function ${request.functionSelector} on ${contractAddress}: the contract is not registered. ` + `Register it via wallet.registerContract(...).`);
84
+ }
63
85
  if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
64
86
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
65
87
  }
66
- if (request.origin !== contractAddress) {
67
- this.log.warn(`Request origin does not match contract address in simulation. Request origin: ${request.origin}, contract address: ${contractAddress}`);
68
- }
69
88
  // reserve the first side effect for the tx hash (inserted by the private kernel)
70
89
  const startSideEffectCounter = 2;
71
90
  const callContext = new CallContext(msgSender, contractAddress, await FunctionSelector.fromNameAndParameters(entryPointArtifact.name, entryPointArtifact.parameters), entryPointArtifact.isStatic);
72
91
  const protocolNullifier = await computeProtocolNullifier(await request.toTxRequest().hash());
73
92
  const noteCache = new ExecutionNoteCache(protocolNullifier);
74
93
  const taggingIndexCache = new ExecutionTaggingIndexCache();
94
+ // One shared transient store for the whole execution tree rooted at this transaction. Threaded into every child
95
+ // private oracle and inherited by nested utility frames, so that frames of the same contract see each other's
96
+ // transient arrays, then discarded when run() returns.
97
+ const transientArrayService = new TransientArrayService();
75
98
  const privateExecutionOracle = new PrivateExecutionOracle({
76
99
  argsHash: request.firstCallArgsHash,
77
100
  txContext: request.txContext,
101
+ txRequestSalt: request.salt,
78
102
  callContext,
79
103
  anchorBlockHeader,
80
104
  utilityExecutor: async (call, execScopes)=>{
@@ -85,23 +109,28 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
85
109
  executionCache: HashedValuesCache.create(request.argsOfCalls),
86
110
  noteCache,
87
111
  taggingIndexCache,
88
- contractStore: this.contractStore,
112
+ anchoredContractData,
89
113
  noteStore: this.noteStore,
90
114
  keyStore: this.keyStore,
91
115
  addressStore: this.addressStore,
92
116
  aztecNode: this.aztecNode,
93
117
  senderTaggingStore: this.senderTaggingStore,
94
118
  recipientTaggingStore: this.recipientTaggingStore,
95
- senderAddressBookStore: this.senderAddressBookStore,
96
- capsuleStore: this.capsuleStore,
119
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
120
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
121
+ factService: new FactService(this.factStore, scopes),
97
122
  privateEventStore: this.privateEventStore,
123
+ txResolver: this.txResolver,
98
124
  contractSyncService: this.contractSyncService,
99
125
  jobId,
100
126
  totalPublicCalldataCount: 0,
101
127
  sideEffectCounter: startSideEffectCounter,
102
128
  scopes,
103
129
  senderForTags,
104
- simulator: this.simulator
130
+ simulator: this.simulator,
131
+ l2TipsStore: this.l2TipsStore,
132
+ hooks: this.hooks,
133
+ transientArrayService
105
134
  });
106
135
  const setupTime = simulatorSetupTimer.ms();
107
136
  try {
@@ -111,7 +140,6 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
111
140
  // within executionResult.nestedExecutionResults).
112
141
  const executionResult = await executePrivateFunction(this.simulator, privateExecutionOracle, entryPointArtifact, contractAddress, request.functionSelector);
113
142
  const simulatorTeardownTimer = new Timer();
114
- noteCache.finish();
115
143
  const firstNullifierHint = noteCache.getNonceGenerator();
116
144
  const publicCallRequests = collectNested([
117
145
  executionResult
@@ -119,7 +147,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
119
147
  r.publicInputs.publicTeardownCallRequest
120
148
  ]));
121
149
  const publicFunctionsCalldata = await Promise.all(publicCallRequests.map(async (r)=>{
122
- const calldata = await privateExecutionOracle.privateLoadFromExecutionCache(r.calldataHash);
150
+ const calldata = await privateExecutionOracle.getHashPreimage(r.calldataHash);
123
151
  return new HashedValues(calldata, r.calldataHash);
124
152
  }));
125
153
  const teardownTime = simulatorTeardownTimer.ms();
@@ -135,36 +163,52 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
135
163
  throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
136
164
  }
137
165
  }
138
- // docs:start:execute_utility_function
139
166
  /**
140
167
  * Runs a utility function.
141
168
  * @param call - The function call to execute.
142
- * @param authwits - Authentication witnesses required for the function call.
143
- * @param anchorBlockHeader - The block header to use as base state for this run.
144
- * @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
145
- * accounts if not specified.
146
169
  * @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
147
170
  */ async runUtility(call, authwits, anchorBlockHeader, scopes, jobId) {
148
- const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
171
+ const anchoredContractData = new AnchoredContractData(this.contractStore, this.contractClassService, anchorBlockHeader, this.overrides);
172
+ const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
173
+ if (!entryPointArtifact) {
174
+ throw new Error(`Cannot run function ${call.selector} on ${call.to}: the contract is not registered. ` + `Register it via wallet.registerContract(...).`);
175
+ }
149
176
  if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
150
177
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
151
178
  }
179
+ const utilityExecutor = async (syncCall, execScopes)=>{
180
+ await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, jobId);
181
+ };
152
182
  const oracle = new UtilityExecutionOracle({
153
- contractAddress: call.to,
183
+ callContext: CallContext.from({
184
+ msgSender: AztecAddress.NULL_MSG_SENDER,
185
+ contractAddress: call.to,
186
+ functionSelector: call.selector,
187
+ isStaticCall: true
188
+ }),
154
189
  authWitnesses: authwits,
155
190
  capsules: [],
156
191
  anchorBlockHeader,
157
- contractStore: this.contractStore,
192
+ anchoredContractData,
158
193
  noteStore: this.noteStore,
159
194
  keyStore: this.keyStore,
160
195
  addressStore: this.addressStore,
161
196
  aztecNode: this.aztecNode,
162
197
  recipientTaggingStore: this.recipientTaggingStore,
163
- senderAddressBookStore: this.senderAddressBookStore,
164
- capsuleStore: this.capsuleStore,
198
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
199
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
200
+ factService: new FactService(this.factStore, scopes),
165
201
  privateEventStore: this.privateEventStore,
202
+ txResolver: this.txResolver,
203
+ contractSyncService: this.contractSyncService,
204
+ l2TipsStore: this.l2TipsStore,
166
205
  jobId,
167
- scopes
206
+ scopes,
207
+ simulator: this.simulator,
208
+ hooks: this.hooks,
209
+ utilityExecutor,
210
+ // Execution-tree root (top-level utility run or contract sync): own store; nested frames inherit it.
211
+ transientArrayService: new TransientArrayService()
168
212
  });
169
213
  try {
170
214
  this.log.verbose(`Executing utility function ${entryPointArtifact.name}`, {
@@ -172,7 +216,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
172
216
  selector: call.selector
173
217
  });
174
218
  const initialWitness = toACVMWitness(0, call.args);
175
- const acirExecutionResult = await this.simulator.executeUserCircuit(initialWitness, entryPointArtifact, new Oracle(oracle).toACIRCallback()).catch((err)=>{
219
+ const acirExecutionResult = await this.simulator.executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle)).catch((err)=>{
176
220
  err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
177
221
  throw new ExecutionError(err.message, {
178
222
  contractAddress: call.to,
@@ -181,13 +225,15 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
181
225
  cause: err
182
226
  });
183
227
  });
184
- this.log.verbose(`Utility simulation for ${call.to}.${call.selector} completed`);
185
- return witnessMapToFields(acirExecutionResult.returnWitness);
228
+ this.log.verbose(`Utility execution for ${call.to}.${call.selector} completed`);
229
+ return {
230
+ result: witnessMapToFields(acirExecutionResult.returnWitness),
231
+ offchainEffects: oracle.getOffchainEffects()
232
+ };
186
233
  } catch (err) {
187
234
  throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
188
235
  }
189
236
  }
190
- // docs:end:execute_utility_function
191
237
  /**
192
238
  * Returns the execution statistics collected during the simulator run.
193
239
  * @returns The execution statistics.
@@ -221,38 +267,54 @@ class OrderedSideEffect {
221
267
  * (allowing state overrides) and is much faster, while still generating a valid
222
268
  * output that can be sent to the node for public simulation
223
269
  * @param privateExecutionResult - The result of the private execution.
224
- * @param contractStore - A provider for contract data in order to get function names and debug info.
270
+ * @param debugFunctionNameGetter - A provider for contract data in order to get function names and debug info.
271
+ * @param node - AztecNode for verifying settled read requests against the note hash and nullifier trees.
225
272
  * @param minRevertibleSideEffectCounterOverride - Optional override for the min revertible side effect counter.
226
273
  * Used by TXE to simulate account contract behavior (setting the counter before app execution).
227
274
  * @returns The simulated proving result.
228
- */ export async function generateSimulatedProvingResult(privateExecutionResult, debugFunctionNameGetter, minRevertibleSideEffectCounterOverride) {
229
- const siloedNoteHashes = [];
230
- const nullifiers = [];
275
+ */ export async function generateSimulatedProvingResult(privateExecutionResult, debugFunctionNameGetter, node, minRevertibleSideEffectCounterOverride) {
231
276
  const taggedPrivateLogs = [];
232
277
  const l2ToL1Messages = [];
233
278
  const contractClassLogsHashes = [];
234
279
  const publicCallRequests = [];
235
280
  const executionSteps = [];
281
+ // Unsiloed scoped arrays — used for squashing, read request verification,
282
+ // and siloed at the end only for the surviving items
283
+ const scopedNoteHashes = [];
284
+ const scopedNullifiers = [];
285
+ // Read requests for verification
286
+ const noteHashReadRequests = [];
287
+ const nullifierReadRequests = [];
236
288
  let publicTeardownCallRequest;
289
+ // We set expiration timestamp to anchor_block_timestamp + MAX_TX_LIFETIME (24h) just like kernels do
290
+ let expirationTimestamp = privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.globalVariables.timestamp + BigInt(MAX_TX_LIFETIME);
291
+ let feePayer = AztecAddress.zero();
237
292
  const executions = [
238
293
  privateExecutionResult.entrypoint
239
294
  ];
240
295
  while(executions.length !== 0){
241
296
  const execution = executions.shift();
242
297
  executions.unshift(...execution.nestedExecutionResults);
298
+ // Just like kernels we overwrite the default value if the call sets it.
299
+ const callExpirationTimestamp = execution.publicInputs.expirationTimestamp;
300
+ if (callExpirationTimestamp !== 0n && callExpirationTimestamp < expirationTimestamp) {
301
+ expirationTimestamp = callExpirationTimestamp;
302
+ }
243
303
  const { contractAddress } = execution.publicInputs.callContext;
244
- const noteHashesFromExecution = await Promise.all(execution.publicInputs.noteHashes.getActiveItems().filter((noteHash)=>!noteHash.isEmpty()).map(async (noteHash)=>new OrderedSideEffect(await siloNoteHash(contractAddress, noteHash.value), noteHash.counter)));
245
- const nullifiersFromExecution = await Promise.all(execution.publicInputs.nullifiers.getActiveItems().map(async (nullifier)=>new OrderedSideEffect(await siloNullifier(contractAddress, nullifier.value), nullifier.counter)));
246
- const privateLogsFromExecution = await Promise.all(execution.publicInputs.privateLogs.getActiveItems().map(async (metadata)=>{
247
- metadata.log.fields[0] = await poseidon2HashWithSeparator([
248
- contractAddress,
249
- metadata.log.fields[0]
250
- ], GeneratorIndex.PRIVATE_LOG_FIRST_FIELD);
251
- return new OrderedSideEffect(metadata.log, metadata.counter);
252
- }));
253
- siloedNoteHashes.push(...noteHashesFromExecution);
254
- taggedPrivateLogs.push(...privateLogsFromExecution);
255
- nullifiers.push(...nullifiersFromExecution);
304
+ if (execution.publicInputs.isFeePayer) {
305
+ if (!feePayer.isZero()) {
306
+ throw new Error('Multiple fee payers found in private execution result');
307
+ }
308
+ feePayer = contractAddress;
309
+ }
310
+ scopedNoteHashes.push(...execution.publicInputs.noteHashes.getActiveItems().filter((nh)=>!nh.isEmpty()).map((nh)=>nh.scope(contractAddress)));
311
+ scopedNullifiers.push(...execution.publicInputs.nullifiers.getActiveItems().map((n)=>n.scope(contractAddress)));
312
+ taggedPrivateLogs.push(...await Promise.all(execution.publicInputs.privateLogs.getActiveItems().map(async (metadata)=>{
313
+ metadata.log.fields[0] = await computeSiloedPrivateLogFirstField(contractAddress, metadata.log.fields[0]);
314
+ return new OrderedSideEffect(metadata, metadata.counter);
315
+ })));
316
+ noteHashReadRequests.push(...execution.publicInputs.noteHashReadRequests.getActiveItems());
317
+ nullifierReadRequests.push(...execution.publicInputs.nullifierReadRequests.getActiveItems());
256
318
  l2ToL1Messages.push(...execution.publicInputs.l2ToL1Msgs.getActiveItems().map((message)=>new OrderedSideEffect(message.message.scope(contractAddress), message.counter)));
257
319
  contractClassLogsHashes.push(...execution.publicInputs.contractClassLogsHashes.getActiveItems().map((contractClassLogHash)=>new OrderedSideEffect(contractClassLogHash.logHash.scope(contractAddress), contractClassLogHash.counter)));
258
320
  publicCallRequests.push(...execution.publicInputs.publicCallRequests.getActiveItems().map((callRequest)=>new OrderedSideEffect(callRequest.inner, callRequest.counter)));
@@ -266,11 +328,20 @@ class OrderedSideEffect {
266
328
  witgen: 0,
267
329
  oracles: {}
268
330
  },
331
+ kind: CircuitKind.App,
269
332
  bytecode: execution.acir,
270
333
  vk: execution.vk,
271
334
  witness: execution.partialWitness
272
335
  });
273
336
  }
337
+ const noteHashNullifierCounterMap = collectNoteHashNullifierCounterMap(privateExecutionResult);
338
+ const minRevertibleSideEffectCounter = minRevertibleSideEffectCounterOverride ?? getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
339
+ const scopedNoteHashesCLA = new ClaimedLengthArray(padArrayEnd(scopedNoteHashes, ScopedNoteHash.empty(), MAX_NOTE_HASHES_PER_TX), scopedNoteHashes.length);
340
+ const scopedNullifiersCLA = new ClaimedLengthArray(padArrayEnd(scopedNullifiers, ScopedNullifier.empty(), MAX_NULLIFIERS_PER_TX), scopedNullifiers.length);
341
+ const { filteredNoteHashes, filteredNullifiers, filteredPrivateLogs } = squashTransientSideEffects(taggedPrivateLogs, scopedNoteHashesCLA, scopedNullifiersCLA, noteHashNullifierCounterMap, minRevertibleSideEffectCounter);
342
+ await verifyReadRequests(node, await privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.hash(), noteHashReadRequests, nullifierReadRequests, scopedNoteHashesCLA, scopedNullifiersCLA);
343
+ const siloedNoteHashes = await Promise.all(filteredNoteHashes.sort((a, b)=>a.counter - b.counter).map(async (nh)=>new OrderedSideEffect(await siloNoteHash(nh.contractAddress, nh.value), nh.counter)));
344
+ const siloedNullifiers = await Promise.all(filteredNullifiers.sort((a, b)=>a.counter - b.counter).map(async (n)=>new OrderedSideEffect(await siloNullifier(n.contractAddress, n.value), n.counter)));
274
345
  const constantData = new TxConstantData(privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader, privateExecutionResult.entrypoint.publicInputs.txContext, getVKTreeRoot(), protocolContractsHash);
275
346
  const hasPublicCalls = privateExecutionResult.publicFunctionCalldata.length !== 0;
276
347
  let inputsForRollup;
@@ -279,54 +350,112 @@ class OrderedSideEffect {
279
350
  const sortByCounter = (a, b)=>a.counter - b.counter;
280
351
  const getEffect = (orderedSideEffect)=>orderedSideEffect.sideEffect;
281
352
  const isPrivateOnlyTx = privateExecutionResult.publicFunctionCalldata.length === 0;
282
- const minRevertibleSideEffectCounter = minRevertibleSideEffectCounterOverride ?? getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
283
- const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(nullifiers.sort(sortByCounter), minRevertibleSideEffectCounter);
353
+ const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(siloedNullifiers, minRevertibleSideEffectCounter);
354
+ // The protocol nullifier is the nonce generator and the tx's first nullifier. It is injected by the
355
+ // init kernel (at counter 1, index 0) rather than emitted by any private call, so it is absent from
356
+ // the executed nullifiers above. Mirror the kernel here by prepending it as the first non-revertible
357
+ // nullifier.
284
358
  const nonceGenerator = privateExecutionResult.firstNullifier;
285
- if (nonRevertibleNullifiers.length === 0) {
286
- nonRevertibleNullifiers.push(nonceGenerator);
287
- } else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
288
- throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
289
- }
359
+ nonRevertibleNullifiers.unshift(nonceGenerator);
290
360
  if (isPrivateOnlyTx) {
291
361
  // We must make the note hashes unique by using the
292
362
  // nonce generator and their index in the tx.
293
- const uniqueNoteHashes = await Promise.all(siloedNoteHashes.sort(sortByCounter).map(async (orderedSideEffect, i)=>{
363
+ const uniqueNoteHashes = await Promise.all(siloedNoteHashes.map(async (orderedSideEffect, i)=>{
294
364
  const siloedNoteHash = orderedSideEffect.sideEffect;
295
365
  const nonce = await computeNoteHashNonce(nonceGenerator, i);
296
366
  const uniqueNoteHash = await computeUniqueNoteHash(nonce, siloedNoteHash);
297
367
  return uniqueNoteHash;
298
368
  }));
299
- const accumulatedDataForRollup = new PrivateToRollupAccumulatedData(padArrayEnd(uniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(nonRevertibleNullifiers.concat(revertibleNullifiers), Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(l2ToL1Messages.sort(sortByCounter).map(getEffect), ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(taggedPrivateLogs.sort(sortByCounter).map(getEffect), PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX), padArrayEnd(contractClassLogsHashes.sort(sortByCounter).map(getEffect), ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX));
300
- gasUsed = meterGasUsed(accumulatedDataForRollup);
369
+ const accumulatedDataForRollup = new PrivateToRollupAccumulatedData(padArrayEnd(uniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(nonRevertibleNullifiers.concat(revertibleNullifiers), Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(l2ToL1Messages.sort(sortByCounter).map(getEffect), ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(filteredPrivateLogs.sort(sortByCounter).map(getEffect), PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX), padArrayEnd(contractClassLogsHashes.sort(sortByCounter).map(getEffect), ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX));
370
+ gasUsed = meterGasUsed(accumulatedDataForRollup, isPrivateOnlyTx);
301
371
  inputsForRollup = new PartialPrivateTailPublicInputsForRollup(accumulatedDataForRollup);
302
372
  } else {
303
- const [nonRevertibleNoteHashes, revertibleNoteHashes] = splitOrderedSideEffects(siloedNoteHashes.sort(sortByCounter), minRevertibleSideEffectCounter);
373
+ const [nonRevertibleNoteHashes, revertibleNoteHashes] = splitOrderedSideEffects(siloedNoteHashes, minRevertibleSideEffectCounter);
304
374
  const nonRevertibleUniqueNoteHashes = await Promise.all(nonRevertibleNoteHashes.map(async (noteHash, i)=>{
305
375
  const nonce = await computeNoteHashNonce(nonceGenerator, i);
306
376
  return await computeUniqueNoteHash(nonce, noteHash);
307
377
  }));
308
378
  const [nonRevertibleL2ToL1Messages, revertibleL2ToL1Messages] = splitOrderedSideEffects(l2ToL1Messages.sort(sortByCounter), minRevertibleSideEffectCounter);
309
- const [nonRevertibleTaggedPrivateLogs, revertibleTaggedPrivateLogs] = splitOrderedSideEffects(taggedPrivateLogs, minRevertibleSideEffectCounter);
379
+ const [nonRevertibleTaggedPrivateLogs, revertibleTaggedPrivateLogs] = splitOrderedSideEffects(filteredPrivateLogs, minRevertibleSideEffectCounter);
310
380
  const [nonRevertibleContractClassLogHashes, revertibleContractClassLogHashes] = splitOrderedSideEffects(contractClassLogsHashes.sort(sortByCounter), minRevertibleSideEffectCounter);
311
381
  const [nonRevertiblePublicCallRequests, revertiblePublicCallRequests] = splitOrderedSideEffects(publicCallRequests.sort(sortByCounter), minRevertibleSideEffectCounter);
312
382
  const nonRevertibleData = new PrivateToPublicAccumulatedData(padArrayEnd(nonRevertibleUniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(nonRevertibleNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(nonRevertibleL2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(nonRevertibleTaggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX), padArrayEnd(nonRevertibleContractClassLogHashes, ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX), padArrayEnd(nonRevertiblePublicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX));
313
383
  const revertibleData = new PrivateToPublicAccumulatedData(padArrayEnd(revertibleNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(revertibleNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(revertibleL2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(revertibleTaggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX), padArrayEnd(revertibleContractClassLogHashes, ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX), padArrayEnd(revertiblePublicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX));
314
- gasUsed = meterGasUsed(revertibleData).add(meterGasUsed(nonRevertibleData));
384
+ gasUsed = meterGasUsed(revertibleData, isPrivateOnlyTx).add(meterGasUsed(nonRevertibleData, isPrivateOnlyTx));
315
385
  if (publicTeardownCallRequest) {
316
- gasUsed.add(privateExecutionResult.entrypoint.publicInputs.txContext.gasSettings.teardownGasLimits);
386
+ gasUsed = gasUsed.add(privateExecutionResult.entrypoint.publicInputs.txContext.gasSettings.teardownGasLimits);
317
387
  }
318
388
  inputsForPublic = new PartialPrivateTailPublicInputsForPublic(nonRevertibleData, revertibleData, publicTeardownCallRequest ?? PublicCallRequest.empty());
319
389
  }
320
390
  const publicInputs = new PrivateKernelTailCircuitPublicInputs(constantData, /*gasUsed=*/ gasUsed.add(Gas.from({
321
- l2Gas: FIXED_L2_GAS,
322
- daGas: FIXED_DA_GAS
323
- })), /*feePayer=*/ AztecAddress.zero(), /*includeByTimestamp=*/ 0n, hasPublicCalls ? inputsForPublic : undefined, !hasPublicCalls ? inputsForRollup : undefined);
391
+ l2Gas: isPrivateOnlyTx ? PRIVATE_TX_L2_GAS_OVERHEAD : PUBLIC_TX_L2_GAS_OVERHEAD,
392
+ daGas: TX_DA_GAS_OVERHEAD
393
+ })), /*feePayer=*/ feePayer, /*expirationTimestamp=*/ expirationTimestamp, hasPublicCalls ? inputsForPublic : undefined, !hasPublicCalls ? inputsForRollup : undefined);
324
394
  return {
325
395
  publicInputs,
326
396
  chonkProof: ChonkProof.empty(),
327
397
  executionSteps
328
398
  };
329
399
  }
400
+ /**
401
+ * Squashes transient note hashes and nullifiers, mimicking the behavior
402
+ * of the reset kernels. Returns the filtered (surviving) scoped items and private logs.
403
+ */ function squashTransientSideEffects(taggedPrivateLogs, scopedNoteHashesCLA, scopedNullifiersCLA, noteHashNullifierCounterMap, minRevertibleSideEffectCounter) {
404
+ const { numTransientData, hints: transientDataHints } = buildTransientDataHints(scopedNoteHashesCLA, scopedNullifiersCLA, /*futureNoteHashReads=*/ [], /*futureNullifierReads=*/ [], /*futureLogs=*/ [], noteHashNullifierCounterMap, minRevertibleSideEffectCounter);
405
+ const squashedNoteHashCounters = new Set();
406
+ const squashedNullifierCounters = new Set();
407
+ for(let i = 0; i < numTransientData; i++){
408
+ const hint = transientDataHints[i];
409
+ squashedNoteHashCounters.add(scopedNoteHashesCLA.array[hint.noteHashIndex].counter);
410
+ squashedNullifierCounters.add(scopedNullifiersCLA.array[hint.nullifierIndex].counter);
411
+ }
412
+ return {
413
+ filteredNoteHashes: scopedNoteHashesCLA.getActiveItems().filter((nh)=>!squashedNoteHashCounters.has(nh.counter)),
414
+ filteredNullifiers: scopedNullifiersCLA.getActiveItems().filter((n)=>!squashedNullifierCounters.has(n.counter)),
415
+ filteredPrivateLogs: taggedPrivateLogs.filter((item)=>!squashedNoteHashCounters.has(item.sideEffect.noteHashCounter)).map((item)=>new OrderedSideEffect(item.sideEffect.log, item.counter))
416
+ };
417
+ }
418
+ /**
419
+ * Verifies settled read requests by checking membership in the note hash and nullifier trees
420
+ * at the tx's anchor block, mimicking the behavior of the kernels
421
+ */ async function verifyReadRequests(node, anchorBlockHash, noteHashReadRequests, nullifierReadRequests, scopedNoteHashesCLA, scopedNullifiersCLA) {
422
+ const noteHashReadRequestsCLA = new ClaimedLengthArray(padArrayEnd(noteHashReadRequests, ScopedReadRequest.empty(), MAX_NOTE_HASH_READ_REQUESTS_PER_TX), noteHashReadRequests.length);
423
+ const nullifierReadRequestsCLA = new ClaimedLengthArray(padArrayEnd(nullifierReadRequests, ScopedReadRequest.empty(), MAX_NULLIFIER_READ_REQUESTS_PER_TX), nullifierReadRequests.length);
424
+ const noteHashResetActions = getNoteHashReadRequestResetActions(noteHashReadRequestsCLA, scopedNoteHashesCLA);
425
+ const nullifierResetActions = getNullifierReadRequestResetActions(nullifierReadRequestsCLA, scopedNullifiersCLA);
426
+ const settledNoteHashReads = [];
427
+ for(let i = 0; i < noteHashResetActions.actions.length; i++){
428
+ if (noteHashResetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
429
+ settledNoteHashReads.push({
430
+ index: i,
431
+ value: noteHashReadRequests[i].value
432
+ });
433
+ }
434
+ }
435
+ const settledNullifierReads = [];
436
+ for(let i = 0; i < nullifierResetActions.actions.length; i++){
437
+ if (nullifierResetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
438
+ settledNullifierReads.push({
439
+ index: i,
440
+ value: nullifierReadRequests[i].value
441
+ });
442
+ }
443
+ }
444
+ const [noteHashResults, nullifierResults] = await Promise.all([
445
+ settledNoteHashReads.length > 0 ? node.findLeavesIndexes(anchorBlockHash, MerkleTreeId.NOTE_HASH_TREE, settledNoteHashReads.map(({ value })=>value)) : [],
446
+ settledNullifierReads.length > 0 ? node.findLeavesIndexes(anchorBlockHash, MerkleTreeId.NULLIFIER_TREE, settledNullifierReads.map(({ value })=>value)) : []
447
+ ]);
448
+ for(let i = 0; i < settledNoteHashReads.length; i++){
449
+ if (!noteHashResults[i]) {
450
+ throw new Error(`Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`);
451
+ }
452
+ }
453
+ for(let i = 0; i < settledNullifierReads.length; i++){
454
+ if (!nullifierResults[i]) {
455
+ throw new Error(`Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`);
456
+ }
457
+ }
458
+ }
330
459
  function splitOrderedSideEffects(effects, minRevertibleSideEffectCounter) {
331
460
  const revertibleSideEffects = [];
332
461
  const nonRevertibleSideEffects = [];
@@ -342,27 +471,34 @@ function splitOrderedSideEffects(effects, minRevertibleSideEffectCounter) {
342
471
  revertibleSideEffects
343
472
  ];
344
473
  }
345
- function meterGasUsed(data) {
474
+ function meterGasUsed(data, isPrivateOnlyTx) {
346
475
  let meteredDAFields = 0;
347
476
  let meteredL2Gas = 0;
348
477
  const numNoteHashes = arrayNonEmptyLength(data.noteHashes, (hash)=>hash.isEmpty());
349
478
  meteredDAFields += numNoteHashes;
350
- meteredL2Gas += numNoteHashes * AVM_EMITNOTEHASH_BASE_L2_GAS;
479
+ const noteHashBaseGas = isPrivateOnlyTx ? L2_GAS_PER_NOTE_HASH : AVM_EMITNOTEHASH_BASE_L2_GAS;
480
+ meteredL2Gas += numNoteHashes * noteHashBaseGas;
351
481
  const numNullifiers = arrayNonEmptyLength(data.nullifiers, (nullifier)=>nullifier.isEmpty());
352
482
  meteredDAFields += numNullifiers;
353
- meteredL2Gas += numNullifiers * AVM_EMITNULLIFIER_BASE_L2_GAS;
483
+ const nullifierBaseGas = isPrivateOnlyTx ? L2_GAS_PER_NULLIFIER : AVM_EMITNULLIFIER_BASE_L2_GAS;
484
+ meteredL2Gas += numNullifiers * nullifierBaseGas;
354
485
  const numL2toL1Messages = arrayNonEmptyLength(data.l2ToL1Msgs, (msg)=>msg.isEmpty());
355
486
  meteredDAFields += numL2toL1Messages;
356
- meteredL2Gas += numL2toL1Messages * AVM_SENDL2TOL1MSG_BASE_L2_GAS;
487
+ const l2ToL1MessageBaseGas = isPrivateOnlyTx ? L2_GAS_PER_L2_TO_L1_MSG : AVM_SENDL2TOL1MSG_BASE_L2_GAS;
488
+ meteredL2Gas += numL2toL1Messages * l2ToL1MessageBaseGas;
357
489
  const numPrivatelogs = arrayNonEmptyLength(data.privateLogs, (log)=>log.isEmpty());
358
490
  // Every private log emits its length as an additional field
359
491
  meteredDAFields += data.privateLogs.reduce((acc, log)=>!log.isEmpty() ? acc + log.emittedLength + 1 : acc, 0);
360
492
  meteredL2Gas += numPrivatelogs * L2_GAS_PER_PRIVATE_LOG;
361
493
  const numContractClassLogs = arrayNonEmptyLength(data.contractClassLogsHashes, (log)=>log.isEmpty());
362
- // Every contract class log emits its length and contract address as additional fields
363
- meteredDAFields += data.contractClassLogsHashes.reduce((acc, log)=>!log.isEmpty() ? acc + log.logHash.length + 2 : acc, 0);
494
+ // Every contract class log emits its contract address as an additional field
495
+ meteredDAFields += data.contractClassLogsHashes.reduce((acc, log)=>!log.isEmpty() ? acc + log.logHash.length + 1 : acc, 0);
364
496
  meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
365
- const meteredDAGas = meteredDAFields * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE;
497
+ if (isPrivateOnlyTx) {
498
+ // The public data write that the private tx base rollup always performs to update the fee payer's balance.
499
+ meteredDAFields += PUBLIC_DATA_WRITE_LENGTH;
500
+ }
501
+ const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
366
502
  if (data.publicCallRequests) {
367
503
  const dataForPublic = data;
368
504
  const numPublicCallRequests = arrayNonEmptyLength(dataForPublic.publicCallRequests, (req)=>req.isEmpty());
@@ -0,0 +1,28 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ /** In-memory store for ephemeral arrays scoped to a single contract call frame. */
3
+ export declare class EphemeralArrayService {
4
+ #private;
5
+ /** Returns all elements in the array, or an empty array if uninitialized. */
6
+ readArrayAt(slot: Fr): Fr[][];
7
+ /** Returns the number of elements in the array at the given slot. */
8
+ len(slot: Fr): number;
9
+ /** Appends an element to the array and returns the new length. */
10
+ push(slot: Fr, elements: Fr[]): number;
11
+ /** Removes and returns the last element. Throws if empty. */
12
+ pop(slot: Fr): Fr[];
13
+ /** Returns the element at the given index. Throws if out of bounds. */
14
+ get(slot: Fr, index: number): Fr[];
15
+ /** Overwrites the element at the given index. Throws if out of bounds. */
16
+ set(slot: Fr, index: number, value: Fr[]): void;
17
+ /** Removes the element at the given index, shifting subsequent elements backward. Throws if out of bounds. */
18
+ remove(slot: Fr, index: number): void;
19
+ /** Removes all elements from the array. */
20
+ clear(slot: Fr): void;
21
+ /** Allocates a fresh, unused slot for a new ephemeral array. */
22
+ allocateSlot(): Fr;
23
+ /** Creates a new ephemeral array pre-populated with the given elements and returns its slot. */
24
+ newArray(elements: Fr[][]): Fr;
25
+ /** Copies `count` elements from the source array to the destination array (overwrites destination). */
26
+ copy(srcSlot: Fr, dstSlot: Fr, count: number): void;
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBoZW1lcmFsX2FycmF5X3NlcnZpY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXBoZW1lcmFsX2FycmF5X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELG1GQUFtRjtBQUNuRixxQkFBYSxxQkFBcUI7O0lBT2hDLDZFQUE2RTtJQUM3RSxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUU1QjtJQU1ELHFFQUFxRTtJQUNyRSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBRXBCO0lBRUQsa0VBQWtFO0lBQ2xFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBS3JDO0lBRUQsNkRBQTZEO0lBQzdELEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQVFsQjtJQUVELHVFQUF1RTtJQUN2RSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQVFqQztJQUVELDBFQUEwRTtJQUMxRSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBUTlDO0lBRUQsOEdBQThHO0lBQzlHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQVFwQztJQUVELDJDQUEyQztJQUMzQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBRXBCO0lBRUQsZ0VBQWdFO0lBQ2hFLFlBQVksSUFBSSxFQUFFLENBTWpCO0lBRUQsZ0dBQWdHO0lBQ2hHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBSTdCO0lBRUQsdUdBQXVHO0lBQ3ZHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBVWxEO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ephemeral_array_service.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/ephemeral_array_service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,mFAAmF;AACnF,qBAAa,qBAAqB;;IAOhC,6EAA6E;IAC7E,WAAW,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAE5B;IAMD,qEAAqE;IACrE,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAEpB;IAED,kEAAkE;IAClE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,MAAM,CAKrC;IAED,6DAA6D;IAC7D,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,CAQlB;IAED,uEAAuE;IACvE,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,CAQjC;IAED,0EAA0E;IAC1E,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAQ9C;IAED,8GAA8G;IAC9G,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQpC;IAED,2CAA2C;IAC3C,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAEpB;IAED,gEAAgE;IAChE,YAAY,IAAI,EAAE,CAMjB;IAED,gGAAgG;IAChG,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAI7B;IAED,uGAAuG;IACvG,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAUlD;CACF"}