@aztec-labs/pxe 6.0.0-nightly.20260829

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 (603) hide show
  1. package/README.md +13 -0
  2. package/dest/bin/check_oracle_version.d.ts +2 -0
  3. package/dest/bin/check_oracle_version.d.ts.map +1 -0
  4. package/dest/bin/check_oracle_version.js +22 -0
  5. package/dest/bin/index.d.ts +2 -0
  6. package/dest/bin/index.d.ts.map +1 -0
  7. package/dest/bin/index.js +1 -0
  8. package/dest/bin/oracle_version_helpers.d.ts +20 -0
  9. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  10. package/dest/bin/oracle_version_helpers.js +25 -0
  11. package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
  12. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
  13. package/dest/block_synchronizer/block_stream_source.js +37 -0
  14. package/dest/block_synchronizer/block_synchronizer.d.ts +47 -0
  15. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  16. package/dest/block_synchronizer/block_synchronizer.js +192 -0
  17. package/dest/block_synchronizer/index.d.ts +2 -0
  18. package/dest/block_synchronizer/index.d.ts.map +1 -0
  19. package/dest/block_synchronizer/index.js +1 -0
  20. package/dest/config/index.d.ts +57 -0
  21. package/dest/config/index.d.ts.map +1 -0
  22. package/dest/config/index.js +80 -0
  23. package/dest/config/package_info.d.ts +5 -0
  24. package/dest/config/package_info.d.ts.map +1 -0
  25. package/dest/config/package_info.js +6 -0
  26. package/dest/contract/contract_call_graph.d.ts +51 -0
  27. package/dest/contract/contract_call_graph.d.ts.map +1 -0
  28. package/dest/contract/contract_call_graph.js +91 -0
  29. package/dest/contract/contract_class_service.d.ts +24 -0
  30. package/dest/contract/contract_class_service.d.ts.map +1 -0
  31. package/dest/contract/contract_class_service.js +36 -0
  32. package/dest/contract/contract_sync_service.d.ts +82 -0
  33. package/dest/contract/contract_sync_service.d.ts.map +1 -0
  34. package/dest/contract/contract_sync_service.js +210 -0
  35. package/dest/contract/helpers.d.ts +7 -0
  36. package/dest/contract/helpers.d.ts.map +1 -0
  37. package/dest/contract/helpers.js +20 -0
  38. package/dest/contract/skip_sync_contracts.d.ts +11 -0
  39. package/dest/contract/skip_sync_contracts.d.ts.map +1 -0
  40. package/dest/contract/skip_sync_contracts.js +18 -0
  41. package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
  42. package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
  43. package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
  44. package/dest/contract_function_simulator/contract_function_simulator.d.ts +114 -0
  45. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -0
  46. package/dest/contract_function_simulator/contract_function_simulator.js +495 -0
  47. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  48. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  49. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  50. package/dest/contract_function_simulator/execution_note_cache.d.ts +98 -0
  51. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -0
  52. package/dest/contract_function_simulator/execution_note_cache.js +189 -0
  53. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +12 -0
  54. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -0
  55. package/dest/contract_function_simulator/execution_tagging_index_cache.js +30 -0
  56. package/dest/contract_function_simulator/hashed_values_cache.d.ts +28 -0
  57. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -0
  58. package/dest/contract_function_simulator/hashed_values_cache.js +36 -0
  59. package/dest/contract_function_simulator/index.d.ts +36 -0
  60. package/dest/contract_function_simulator/index.d.ts.map +1 -0
  61. package/dest/contract_function_simulator/index.js +20 -0
  62. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
  63. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  64. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
  65. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  66. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  67. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  68. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  69. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  70. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  71. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  72. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  73. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  74. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +20 -0
  75. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -0
  76. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +39 -0
  77. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  78. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  79. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  80. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  81. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  82. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  83. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +25 -0
  84. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -0
  85. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +14 -0
  86. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +19 -0
  87. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -0
  88. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +4 -0
  89. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  90. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  91. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  92. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +22 -0
  93. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -0
  94. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +47 -0
  95. package/dest/contract_function_simulator/noir-structs/nullifier_membership_witness_data.d.ts +12 -0
  96. package/dest/contract_function_simulator/noir-structs/nullifier_membership_witness_data.d.ts.map +1 -0
  97. package/dest/contract_function_simulator/noir-structs/nullifier_membership_witness_data.js +6 -0
  98. package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
  99. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  100. package/dest/contract_function_simulator/noir-structs/option.js +67 -0
  101. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  102. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  103. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  104. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  105. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  106. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  107. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
  108. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  109. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
  110. package/dest/contract_function_simulator/noir-structs/public_data_witness_data.d.ts +13 -0
  111. package/dest/contract_function_simulator/noir-structs/public_data_witness_data.d.ts.map +1 -0
  112. package/dest/contract_function_simulator/noir-structs/public_data_witness_data.js +3 -0
  113. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  114. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  115. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
  116. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +19 -0
  117. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  118. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +9 -0
  119. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -0
  120. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  121. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  122. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +11 -0
  123. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -0
  124. package/dest/contract_function_simulator/noir-structs/utility_context.js +3 -0
  125. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  126. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  127. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  128. package/dest/contract_function_simulator/oracle/index.d.ts +3 -0
  129. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -0
  130. package/dest/contract_function_simulator/oracle/index.js +2 -0
  131. package/dest/contract_function_simulator/oracle/interfaces.d.ts +24 -0
  132. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -0
  133. package/dest/contract_function_simulator/oracle/interfaces.js +4 -0
  134. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  135. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  136. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
  137. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +28 -0
  138. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -0
  139. package/dest/contract_function_simulator/oracle/note_packing_utils.js +54 -0
  140. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +139 -0
  141. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  142. package/dest/contract_function_simulator/oracle/oracle_registry.js +1024 -0
  143. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +292 -0
  144. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  145. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1258 -0
  146. package/dest/contract_function_simulator/oracle/private_execution.d.ts +23 -0
  147. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -0
  148. package/dest/contract_function_simulator/oracle/private_execution.js +88 -0
  149. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +226 -0
  150. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -0
  151. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +585 -0
  152. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +333 -0
  153. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -0
  154. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +900 -0
  155. package/dest/contract_function_simulator/pick_notes.d.ts +85 -0
  156. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -0
  157. package/dest/contract_function_simulator/pick_notes.js +68 -0
  158. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  159. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  160. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  161. package/dest/contract_logging.d.ts +27 -0
  162. package/dest/contract_logging.d.ts.map +1 -0
  163. package/dest/contract_logging.js +38 -0
  164. package/dest/debug/pxe_debug_utils.d.ts +38 -0
  165. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  166. package/dest/debug/pxe_debug_utils.js +44 -0
  167. package/dest/entrypoints/client/bundle/index.d.ts +10 -0
  168. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -0
  169. package/dest/entrypoints/client/bundle/index.js +8 -0
  170. package/dest/entrypoints/client/bundle/utils.d.ts +16 -0
  171. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -0
  172. package/dest/entrypoints/client/bundle/utils.js +78 -0
  173. package/dest/entrypoints/client/lazy/index.d.ts +10 -0
  174. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -0
  175. package/dest/entrypoints/client/lazy/index.js +8 -0
  176. package/dest/entrypoints/client/lazy/utils.d.ts +15 -0
  177. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -0
  178. package/dest/entrypoints/client/lazy/utils.js +77 -0
  179. package/dest/entrypoints/client/store.d.ts +14 -0
  180. package/dest/entrypoints/client/store.d.ts.map +1 -0
  181. package/dest/entrypoints/client/store.js +42 -0
  182. package/dest/entrypoints/pxe_creation_options.d.ts +32 -0
  183. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -0
  184. package/dest/entrypoints/pxe_creation_options.js +3 -0
  185. package/dest/entrypoints/server/circuit_recording/circuit_recorder.d.ts +121 -0
  186. package/dest/entrypoints/server/circuit_recording/circuit_recorder.d.ts.map +1 -0
  187. package/dest/entrypoints/server/circuit_recording/circuit_recorder.js +208 -0
  188. package/dest/entrypoints/server/circuit_recording/file_circuit_recorder.d.ts +20 -0
  189. package/dest/entrypoints/server/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
  190. package/dest/entrypoints/server/circuit_recording/file_circuit_recorder.js +131 -0
  191. package/dest/entrypoints/server/circuit_recording/memory_circuit_recorder.d.ts +10 -0
  192. package/dest/entrypoints/server/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
  193. package/dest/entrypoints/server/circuit_recording/memory_circuit_recorder.js +9 -0
  194. package/dest/entrypoints/server/circuit_recording/simulator_recorder_wrapper.d.ts +18 -0
  195. package/dest/entrypoints/server/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
  196. package/dest/entrypoints/server/circuit_recording/simulator_recorder_wrapper.js +41 -0
  197. package/dest/entrypoints/server/index.d.ts +17 -0
  198. package/dest/entrypoints/server/index.d.ts.map +1 -0
  199. package/dest/entrypoints/server/index.js +14 -0
  200. package/dest/entrypoints/server/store.d.ts +18 -0
  201. package/dest/entrypoints/server/store.d.ts.map +1 -0
  202. package/dest/entrypoints/server/store.js +28 -0
  203. package/dest/entrypoints/server/utils.d.ts +9 -0
  204. package/dest/entrypoints/server/utils.d.ts.map +1 -0
  205. package/dest/entrypoints/server/utils.js +84 -0
  206. package/dest/error_enriching.d.ts +13 -0
  207. package/dest/error_enriching.d.ts.map +1 -0
  208. package/dest/error_enriching.js +80 -0
  209. package/dest/events/event_service.d.ts +30 -0
  210. package/dest/events/event_service.d.ts.map +1 -0
  211. package/dest/events/event_service.js +76 -0
  212. package/dest/events/index.d.ts +2 -0
  213. package/dest/events/index.d.ts.map +1 -0
  214. package/dest/events/index.js +1 -0
  215. package/dest/events/private_event_filter_validator.d.ts +10 -0
  216. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  217. package/dest/events/private_event_filter_validator.js +53 -0
  218. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  219. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  220. package/dest/hooks/authorize_utility_call.js +4 -0
  221. package/dest/hooks/execution_hooks.d.ts +62 -0
  222. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  223. package/dest/hooks/execution_hooks.js +9 -0
  224. package/dest/hooks/index.d.ts +5 -0
  225. package/dest/hooks/index.d.ts.map +1 -0
  226. package/dest/hooks/index.js +2 -0
  227. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  228. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  229. package/dest/hooks/resolve_custom_request.js +3 -0
  230. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  231. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  232. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  233. package/dest/logs/log_service.d.ts +40 -0
  234. package/dest/logs/log_service.d.ts.map +1 -0
  235. package/dest/logs/log_service.js +217 -0
  236. package/dest/messages/tx_resolver_service.d.ts +28 -0
  237. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  238. package/dest/messages/tx_resolver_service.js +62 -0
  239. package/dest/node/benchmarked_node.d.ts +22 -0
  240. package/dest/node/benchmarked_node.d.ts.map +1 -0
  241. package/dest/node/benchmarked_node.js +93 -0
  242. package/dest/node/caching_aztec_node.d.ts +24 -0
  243. package/dest/node/caching_aztec_node.d.ts.map +1 -0
  244. package/dest/node/caching_aztec_node.js +268 -0
  245. package/dest/notes/index.d.ts +2 -0
  246. package/dest/notes/index.d.ts.map +1 -0
  247. package/dest/notes/index.js +1 -0
  248. package/dest/notes/note_service.d.ts +77 -0
  249. package/dest/notes/note_service.d.ts.map +1 -0
  250. package/dest/notes/note_service.js +173 -0
  251. package/dest/notes_filter.d.ts +24 -0
  252. package/dest/notes_filter.d.ts.map +1 -0
  253. package/dest/notes_filter.js +4 -0
  254. package/dest/operation_lifecycle.d.ts +45 -0
  255. package/dest/operation_lifecycle.d.ts.map +1 -0
  256. package/dest/operation_lifecycle.js +68 -0
  257. package/dest/operation_queue.d.ts +75 -0
  258. package/dest/operation_queue.d.ts.map +1 -0
  259. package/dest/operation_queue.js +100 -0
  260. package/dest/oracle_version.d.ts +4 -0
  261. package/dest/oracle_version.d.ts.map +1 -0
  262. package/dest/oracle_version.js +21 -0
  263. package/dest/private_kernel/batch_planner.d.ts +47 -0
  264. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  265. package/dest/private_kernel/batch_planner.js +104 -0
  266. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  267. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  268. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.js +41 -0
  269. package/dest/private_kernel/hints/index.d.ts +3 -0
  270. package/dest/private_kernel/hints/index.d.ts.map +1 -0
  271. package/dest/private_kernel/hints/index.js +2 -0
  272. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -0
  273. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  274. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +343 -0
  275. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  276. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  277. package/dest/private_kernel/hints/test_utils.js +202 -0
  278. package/dest/private_kernel/index.d.ts +3 -0
  279. package/dest/private_kernel/index.d.ts.map +1 -0
  280. package/dest/private_kernel/index.js +2 -0
  281. package/dest/private_kernel/private_kernel_execution_prover.d.ts +49 -0
  282. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -0
  283. package/dest/private_kernel/private_kernel_execution_prover.js +408 -0
  284. package/dest/private_kernel/private_kernel_oracle.d.ts +65 -0
  285. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -0
  286. package/dest/private_kernel/private_kernel_oracle.js +110 -0
  287. package/dest/pxe.d.ts +364 -0
  288. package/dest/pxe.d.ts.map +1 -0
  289. package/dest/pxe.js +903 -0
  290. package/dest/storage/address_store/address_store.d.ts +11 -0
  291. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  292. package/dest/storage/address_store/address_store.js +49 -0
  293. package/dest/storage/address_store/index.d.ts +2 -0
  294. package/dest/storage/address_store/index.d.ts.map +1 -0
  295. package/dest/storage/address_store/index.js +1 -0
  296. package/dest/storage/allowed_scopes.d.ts +6 -0
  297. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  298. package/dest/storage/allowed_scopes.js +7 -0
  299. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +20 -0
  300. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  301. package/dest/storage/anchor_block_store/anchor_block_store.js +28 -0
  302. package/dest/storage/anchor_block_store/index.d.ts +2 -0
  303. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  304. package/dest/storage/anchor_block_store/index.js +1 -0
  305. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  306. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  307. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  308. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  309. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  310. package/dest/storage/backwards_compatibility_tests/schema_tests.js +674 -0
  311. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  312. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  313. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  314. package/dest/storage/base_staging_store.d.ts +110 -0
  315. package/dest/storage/base_staging_store.d.ts.map +1 -0
  316. package/dest/storage/base_staging_store.js +141 -0
  317. package/dest/storage/capsule_store/capsule_service.d.ts +22 -0
  318. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  319. package/dest/storage/capsule_store/capsule_service.js +47 -0
  320. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  321. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  322. package/dest/storage/capsule_store/capsule_store.js +256 -0
  323. package/dest/storage/capsule_store/index.d.ts +3 -0
  324. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  325. package/dest/storage/capsule_store/index.js +2 -0
  326. package/dest/storage/contract_store/contract_store.d.ts +96 -0
  327. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  328. package/dest/storage/contract_store/contract_store.js +282 -0
  329. package/dest/storage/contract_store/index.d.ts +2 -0
  330. package/dest/storage/contract_store/index.d.ts.map +1 -0
  331. package/dest/storage/contract_store/index.js +1 -0
  332. package/dest/storage/contract_store/private_functions_tree.d.ts +27 -0
  333. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  334. package/dest/storage/contract_store/private_functions_tree.js +48 -0
  335. package/dest/storage/fact_store/fact_service.d.ts +23 -0
  336. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  337. package/dest/storage/fact_store/fact_service.js +45 -0
  338. package/dest/storage/fact_store/fact_store.d.ts +101 -0
  339. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  340. package/dest/storage/fact_store/fact_store.js +350 -0
  341. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  342. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  343. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  344. package/dest/storage/fact_store/index.d.ts +6 -0
  345. package/dest/storage/fact_store/index.d.ts.map +1 -0
  346. package/dest/storage/fact_store/index.js +4 -0
  347. package/dest/storage/fact_store/origin_state.d.ts +59 -0
  348. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  349. package/dest/storage/fact_store/origin_state.js +60 -0
  350. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  351. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  352. package/dest/storage/fact_store/stored_fact.js +64 -0
  353. package/dest/storage/index.d.ts +10 -0
  354. package/dest/storage/index.d.ts.map +1 -0
  355. package/dest/storage/index.js +9 -0
  356. package/dest/storage/metadata.d.ts +2 -0
  357. package/dest/storage/metadata.d.ts.map +1 -0
  358. package/dest/storage/metadata.js +1 -0
  359. package/dest/storage/note_store/index.d.ts +3 -0
  360. package/dest/storage/note_store/index.d.ts.map +1 -0
  361. package/dest/storage/note_store/index.js +2 -0
  362. package/dest/storage/note_store/note_store.d.ts +92 -0
  363. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  364. package/dest/storage/note_store/note_store.js +273 -0
  365. package/dest/storage/note_store/stored_note.d.ts +11 -0
  366. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  367. package/dest/storage/note_store/stored_note.js +27 -0
  368. package/dest/storage/note_store/test_utils.d.ts +9 -0
  369. package/dest/storage/note_store/test_utils.d.ts.map +1 -0
  370. package/dest/storage/note_store/test_utils.js +10 -0
  371. package/dest/storage/open_pxe_stores.d.ts +35 -0
  372. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  373. package/dest/storage/open_pxe_stores.js +29 -0
  374. package/dest/storage/private_event_store/private_event_store.d.ts +90 -0
  375. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  376. package/dest/storage/private_event_store/private_event_store.js +276 -0
  377. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  378. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  379. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  380. package/dest/storage/rollbackable.d.ts +15 -0
  381. package/dest/storage/rollbackable.d.ts.map +1 -0
  382. package/dest/storage/rollbackable.js +3 -0
  383. package/dest/storage/staged_write_coordinator.d.ts +103 -0
  384. package/dest/storage/staged_write_coordinator.d.ts.map +1 -0
  385. package/dest/storage/staged_write_coordinator.js +141 -0
  386. package/dest/storage/store_identity.d.ts +35 -0
  387. package/dest/storage/store_identity.d.ts.map +1 -0
  388. package/dest/storage/store_identity.js +44 -0
  389. package/dest/storage/tagging_store/index.d.ts +4 -0
  390. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  391. package/dest/storage/tagging_store/index.js +3 -0
  392. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +36 -0
  393. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  394. package/dest/storage/tagging_store/recipient_tagging_store.js +74 -0
  395. package/dest/storage/tagging_store/sender_tagging_store.d.ts +113 -0
  396. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  397. package/dest/storage/tagging_store/sender_tagging_store.js +432 -0
  398. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  399. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  400. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  401. package/dest/tagging/constants.d.ts +11 -0
  402. package/dest/tagging/constants.d.ts.map +1 -0
  403. package/dest/tagging/constants.js +38 -0
  404. package/dest/tagging/get_all_logs_by_tags.d.ts +69 -0
  405. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  406. package/dest/tagging/get_all_logs_by_tags.js +79 -0
  407. package/dest/tagging/index.d.ts +18 -0
  408. package/dest/tagging/index.d.ts.map +1 -0
  409. package/dest/tagging/index.js +16 -0
  410. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +31 -0
  411. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  412. package/dest/tagging/persist_sender_tagging_index_ranges.js +43 -0
  413. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +75 -0
  414. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  415. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +235 -0
  416. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  417. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  418. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  419. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  420. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  421. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  422. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +20 -0
  423. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  424. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +77 -0
  425. package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts +22 -0
  426. package/dest/tagging/sender_sync/utils/classify_pending_txs.d.ts.map +1 -0
  427. package/dest/tagging/sender_sync/utils/classify_pending_txs.js +62 -0
  428. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +30 -0
  429. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  430. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +74 -0
  431. package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts +29 -0
  432. package/dest/tagging/sender_sync/utils/resolve_pending_txs.d.ts.map +1 -0
  433. package/dest/tagging/sender_sync/utils/resolve_pending_txs.js +42 -0
  434. package/dest/tagging/sender_sync/utils/test_utils.d.ts +16 -0
  435. package/dest/tagging/sender_sync/utils/test_utils.d.ts.map +1 -0
  436. package/dest/tagging/sender_sync/utils/test_utils.js +24 -0
  437. package/dest/tagging/testing/tag_query_test_utils.d.ts +6 -0
  438. package/dest/tagging/testing/tag_query_test_utils.d.ts.map +1 -0
  439. package/dest/tagging/testing/tag_query_test_utils.js +10 -0
  440. package/dest/test_utils.d.ts +3 -0
  441. package/dest/test_utils.d.ts.map +1 -0
  442. package/dest/test_utils.js +1 -0
  443. package/package.json +119 -0
  444. package/src/bin/check_oracle_version.ts +28 -0
  445. package/src/bin/index.ts +1 -0
  446. package/src/bin/oracle_version_helpers.ts +30 -0
  447. package/src/block_synchronizer/block_stream_source.ts +48 -0
  448. package/src/block_synchronizer/block_synchronizer.ts +225 -0
  449. package/src/block_synchronizer/index.ts +1 -0
  450. package/src/config/index.ts +141 -0
  451. package/src/config/package_info.ts +3 -0
  452. package/src/contract/contract_call_graph.ts +121 -0
  453. package/src/contract/contract_class_service.ts +45 -0
  454. package/src/contract/contract_sync_service.ts +349 -0
  455. package/src/contract/helpers.ts +35 -0
  456. package/src/contract/skip_sync_contracts.ts +23 -0
  457. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  458. package/src/contract_function_simulator/contract_function_simulator.ts +928 -0
  459. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  460. package/src/contract_function_simulator/execution_note_cache.ts +232 -0
  461. package/src/contract_function_simulator/execution_tagging_index_cache.ts +33 -0
  462. package/src/contract_function_simulator/hashed_values_cache.ts +47 -0
  463. package/src/contract_function_simulator/index.ts +107 -0
  464. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
  465. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  466. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  467. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  468. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +52 -0
  469. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  470. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  471. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +35 -0
  472. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +19 -0
  473. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  474. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +59 -0
  475. package/src/contract_function_simulator/noir-structs/nullifier_membership_witness_data.ts +15 -0
  476. package/src/contract_function_simulator/noir-structs/option.ts +75 -0
  477. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  478. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  479. package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
  480. package/src/contract_function_simulator/noir-structs/public_data_witness_data.ts +13 -0
  481. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
  482. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +19 -0
  483. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
  484. package/src/contract_function_simulator/noir-structs/utility_context.ts +11 -0
  485. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  486. package/src/contract_function_simulator/oracle/index.ts +2 -0
  487. package/src/contract_function_simulator/oracle/interfaces.ts +20 -0
  488. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
  489. package/src/contract_function_simulator/oracle/note_packing_utils.ts +68 -0
  490. package/src/contract_function_simulator/oracle/oracle_registry.ts +709 -0
  491. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +1089 -0
  492. package/src/contract_function_simulator/oracle/private_execution.ts +140 -0
  493. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +812 -0
  494. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +1341 -0
  495. package/src/contract_function_simulator/pick_notes.ts +160 -0
  496. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  497. package/src/contract_logging.ts +52 -0
  498. package/src/debug/pxe_debug_utils.ts +89 -0
  499. package/src/entrypoints/client/bundle/index.ts +9 -0
  500. package/src/entrypoints/client/bundle/utils.ts +89 -0
  501. package/src/entrypoints/client/lazy/index.ts +9 -0
  502. package/src/entrypoints/client/lazy/utils.ts +89 -0
  503. package/src/entrypoints/client/store.ts +54 -0
  504. package/src/entrypoints/pxe_creation_options.ts +34 -0
  505. package/src/entrypoints/server/circuit_recording/circuit_recorder.ts +267 -0
  506. package/src/entrypoints/server/circuit_recording/file_circuit_recorder.ts +152 -0
  507. package/src/entrypoints/server/circuit_recording/memory_circuit_recorder.ts +13 -0
  508. package/src/entrypoints/server/circuit_recording/simulator_recorder_wrapper.ts +90 -0
  509. package/src/entrypoints/server/index.ts +17 -0
  510. package/src/entrypoints/server/store.ts +46 -0
  511. package/src/entrypoints/server/utils.ts +103 -0
  512. package/src/error_enriching.ts +124 -0
  513. package/src/events/event_service.ts +129 -0
  514. package/src/events/index.ts +1 -0
  515. package/src/events/private_event_filter_validator.ts +66 -0
  516. package/src/hooks/authorize_utility_call.ts +44 -0
  517. package/src/hooks/execution_hooks.ts +68 -0
  518. package/src/hooks/index.ts +13 -0
  519. package/src/hooks/resolve_custom_request.ts +24 -0
  520. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  521. package/src/logs/log_service.ts +295 -0
  522. package/src/messages/tx_resolver_service.ts +81 -0
  523. package/src/node/benchmarked_node.ts +141 -0
  524. package/src/node/caching_aztec_node.ts +407 -0
  525. package/src/notes/index.ts +1 -0
  526. package/src/notes/note_service.ts +238 -0
  527. package/src/notes_filter.ts +24 -0
  528. package/src/operation_lifecycle.ts +99 -0
  529. package/src/operation_queue.ts +149 -0
  530. package/src/oracle_version.ts +22 -0
  531. package/src/private_kernel/batch_planner.ts +168 -0
  532. package/src/private_kernel/hints/compute_tx_expiration_timestamp.ts +58 -0
  533. package/src/private_kernel/hints/index.ts +2 -0
  534. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +553 -0
  535. package/src/private_kernel/hints/test_utils.ts +318 -0
  536. package/src/private_kernel/index.ts +2 -0
  537. package/src/private_kernel/private_kernel_execution_prover.ts +656 -0
  538. package/src/private_kernel/private_kernel_oracle.ts +184 -0
  539. package/src/pxe.ts +1417 -0
  540. package/src/storage/address_store/address_store.ts +66 -0
  541. package/src/storage/address_store/index.ts +1 -0
  542. package/src/storage/allowed_scopes.ts +14 -0
  543. package/src/storage/anchor_block_store/anchor_block_store.ts +35 -0
  544. package/src/storage/anchor_block_store/index.ts +1 -0
  545. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  546. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  547. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  548. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  549. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  550. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  551. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
  552. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
  553. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  554. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +26 -0
  555. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +30 -0
  556. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  557. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
  558. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  559. package/src/storage/backwards_compatibility_tests/schema_tests.ts +813 -0
  560. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  561. package/src/storage/base_staging_store.ts +227 -0
  562. package/src/storage/capsule_store/capsule_service.ts +97 -0
  563. package/src/storage/capsule_store/capsule_store.ts +349 -0
  564. package/src/storage/capsule_store/index.ts +2 -0
  565. package/src/storage/contract_store/contract_store.ts +403 -0
  566. package/src/storage/contract_store/index.ts +1 -0
  567. package/src/storage/contract_store/private_functions_tree.ts +68 -0
  568. package/src/storage/fact_store/fact_service.ts +70 -0
  569. package/src/storage/fact_store/fact_store.ts +424 -0
  570. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  571. package/src/storage/fact_store/index.ts +15 -0
  572. package/src/storage/fact_store/origin_state.ts +84 -0
  573. package/src/storage/fact_store/stored_fact.ts +80 -0
  574. package/src/storage/index.ts +9 -0
  575. package/src/storage/metadata.ts +1 -0
  576. package/src/storage/note_store/index.ts +2 -0
  577. package/src/storage/note_store/note_store.ts +367 -0
  578. package/src/storage/note_store/stored_note.ts +26 -0
  579. package/src/storage/note_store/test_utils.ts +16 -0
  580. package/src/storage/open_pxe_stores.ts +52 -0
  581. package/src/storage/private_event_store/private_event_store.ts +383 -0
  582. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  583. package/src/storage/rollbackable.ts +14 -0
  584. package/src/storage/staged_write_coordinator.ts +218 -0
  585. package/src/storage/store_identity.ts +72 -0
  586. package/src/storage/tagging_store/index.ts +3 -0
  587. package/src/storage/tagging_store/recipient_tagging_store.ts +114 -0
  588. package/src/storage/tagging_store/sender_tagging_store.ts +564 -0
  589. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  590. package/src/tagging/constants.ts +42 -0
  591. package/src/tagging/get_all_logs_by_tags.ts +157 -0
  592. package/src/tagging/index.ts +25 -0
  593. package/src/tagging/persist_sender_tagging_index_ranges.ts +59 -0
  594. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +357 -0
  595. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  596. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  597. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +113 -0
  598. package/src/tagging/sender_sync/utils/classify_pending_txs.ts +92 -0
  599. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +92 -0
  600. package/src/tagging/sender_sync/utils/resolve_pending_txs.ts +65 -0
  601. package/src/tagging/sender_sync/utils/test_utils.ts +46 -0
  602. package/src/tagging/testing/tag_query_test_utils.ts +11 -0
  603. package/src/test_utils.ts +2 -0
@@ -0,0 +1,495 @@
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-labs/constants';
3
+ import { arrayNonEmptyLength, padArrayEnd } from '@aztec-labs/foundation/collection';
4
+ import { Fr } from '@aztec-labs/foundation/curves/bn254';
5
+ import { createLogger } from '@aztec-labs/foundation/log';
6
+ import { allToCompletion } from '@aztec-labs/foundation/promise';
7
+ import { Timer } from '@aztec-labs/foundation/timer';
8
+ import { getVKTreeRoot } from '@aztec-labs/noir-protocol-circuits-types/vk-tree';
9
+ import { protocolContractsHash } from '@aztec-labs/protocol-contracts';
10
+ import { ExecutionError, createSimulationError, extractCallStack, resolveAssertionMessageFromError, toACVMWitness, witnessMapToFields } from '@aztec-labs/simulator/client';
11
+ import { FunctionSelector, FunctionType } from '@aztec-labs/stdlib/abi';
12
+ import { AztecAddress } from '@aztec-labs/stdlib/aztec-address';
13
+ import { Gas } from '@aztec-labs/stdlib/gas';
14
+ import { computeNoteHashNonce, computeProtocolNullifier, computeSiloedPrivateLogFirstField, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec-labs/stdlib/hash';
15
+ import { ClaimedLengthArray, PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PrivateToRollupAccumulatedData, PublicCallRequest, ReadRequestActionEnum, ScopedLogHash, ScopedNoteHash, ScopedNullifier, ScopedReadRequest, buildTransientDataHints, getNoteHashReadRequestResetActions, getNullifierReadRequestResetActions } from '@aztec-labs/stdlib/kernel';
16
+ import { PrivateLog } from '@aztec-labs/stdlib/logs';
17
+ import { ScopedL2ToL1Message } from '@aztec-labs/stdlib/messaging';
18
+ import { ChonkProof } from '@aztec-labs/stdlib/proofs';
19
+ import { MerkleTreeId } from '@aztec-labs/stdlib/trees';
20
+ import { CallContext, HashedValues, PrivateExecutionResult, TxConstantData, collectNested, collectNoteHashNullifierCounterMap, getFinalMinRevertibleSideEffectCounter } from '@aztec-labs/stdlib/tx';
21
+ import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
22
+ import { FactService } from '../storage/fact_store/index.js';
23
+ import { AnchoredContractData } from './anchored_contract_data.js';
24
+ import { ExecutionNoteCache } from './execution_note_cache.js';
25
+ import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
26
+ import { HashedValuesCache } from './hashed_values_cache.js';
27
+ import { buildACIRCallback } from './oracle/acir_callback.js';
28
+ import { executePrivateFunction } from './oracle/private_execution.js';
29
+ import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
30
+ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
31
+ import { TransientArrayService } from './transient_array_service.js';
32
+ /**
33
+ * The contract function simulator.
34
+ */ export class ContractFunctionSimulator {
35
+ log;
36
+ contractStore;
37
+ contractClassService;
38
+ overrides;
39
+ noteStore;
40
+ keyStore;
41
+ addressStore;
42
+ aztecNode;
43
+ l2TipsStore;
44
+ senderTaggingStore;
45
+ recipientTaggingStore;
46
+ taggingSecretSourcesStore;
47
+ capsuleStore;
48
+ factStore;
49
+ privateEventStore;
50
+ simulator;
51
+ contractSyncService;
52
+ txResolver;
53
+ hooks;
54
+ constructor(args){
55
+ this.contractStore = args.contractStore;
56
+ this.contractClassService = args.contractClassService;
57
+ this.overrides = args.overrides;
58
+ this.noteStore = args.noteStore;
59
+ this.keyStore = args.keyStore;
60
+ this.addressStore = args.addressStore;
61
+ this.aztecNode = args.aztecNode;
62
+ this.l2TipsStore = args.l2TipsStore;
63
+ this.senderTaggingStore = args.senderTaggingStore;
64
+ this.recipientTaggingStore = args.recipientTaggingStore;
65
+ this.taggingSecretSourcesStore = args.taggingSecretSourcesStore;
66
+ this.capsuleStore = args.capsuleStore;
67
+ this.factStore = args.factStore;
68
+ this.privateEventStore = args.privateEventStore;
69
+ this.simulator = args.simulator;
70
+ this.contractSyncService = args.contractSyncService;
71
+ this.txResolver = args.txResolver;
72
+ this.hooks = args.hooks;
73
+ this.log = createLogger('simulator');
74
+ }
75
+ /**
76
+ * Runs a private function.
77
+ * @param request - The transaction request.
78
+ */ async run(request, { msgSender = AztecAddress.NULL_MSG_SENDER, anchorBlockHeader, senderForTags, scopes, changeSetId }) {
79
+ const simulatorSetupTimer = new Timer();
80
+ const contractAddress = request.origin;
81
+ const anchoredContractData = new AnchoredContractData(this.contractStore, this.contractClassService, anchorBlockHeader, this.overrides);
82
+ const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(contractAddress, request.functionSelector);
83
+ if (!entryPointArtifact) {
84
+ throw new Error(`Cannot run function ${request.functionSelector} on ${contractAddress}: the contract is not registered. ` + `Register it via wallet.registerContract(...).`);
85
+ }
86
+ if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
87
+ throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
88
+ }
89
+ // reserve the first side effect for the tx hash (inserted by the private kernel)
90
+ const startSideEffectCounter = 2;
91
+ const callContext = new CallContext(msgSender, contractAddress, await FunctionSelector.fromNameAndParameters(entryPointArtifact.name, entryPointArtifact.parameters), entryPointArtifact.isStatic);
92
+ const protocolNullifier = await computeProtocolNullifier(await request.toTxRequest().hash());
93
+ const noteCache = new ExecutionNoteCache(protocolNullifier);
94
+ const taggingIndexCache = new ExecutionTaggingIndexCache();
95
+ // One shared transient store for the whole execution tree rooted at this transaction. Threaded into every child
96
+ // private oracle and inherited by nested utility frames, so that frames of the same contract see each other's
97
+ // transient arrays, then discarded when run() returns.
98
+ const transientArrayService = new TransientArrayService();
99
+ const privateExecutionOracle = new PrivateExecutionOracle({
100
+ argsHash: request.firstCallArgsHash,
101
+ txContext: request.txContext,
102
+ txRequestSalt: request.salt,
103
+ callContext,
104
+ anchorBlockHeader,
105
+ utilityExecutor: async (call, execScopes)=>{
106
+ await this.runUtility(call, [], anchorBlockHeader, execScopes, changeSetId);
107
+ },
108
+ authWitnesses: request.authWitnesses,
109
+ capsules: request.capsules,
110
+ executionCache: HashedValuesCache.create(request.argsOfCalls),
111
+ noteCache,
112
+ taggingIndexCache,
113
+ anchoredContractData,
114
+ noteStore: this.noteStore,
115
+ keyStore: this.keyStore,
116
+ addressStore: this.addressStore,
117
+ aztecNode: this.aztecNode,
118
+ senderTaggingStore: this.senderTaggingStore,
119
+ recipientTaggingStore: this.recipientTaggingStore,
120
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
121
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
122
+ factService: new FactService(this.factStore, scopes),
123
+ privateEventStore: this.privateEventStore,
124
+ txResolver: this.txResolver,
125
+ contractSyncService: this.contractSyncService,
126
+ changeSetId,
127
+ totalPublicCalldataCount: 0,
128
+ sideEffectCounter: startSideEffectCounter,
129
+ scopes,
130
+ senderForTags,
131
+ simulator: this.simulator,
132
+ l2TipsStore: this.l2TipsStore,
133
+ hooks: this.hooks,
134
+ transientArrayService
135
+ });
136
+ const setupTime = simulatorSetupTimer.ms();
137
+ try {
138
+ // Note: any nested private function calls are made recursively within this
139
+ // function call. So this execution result is the result of executing _all_
140
+ // private functions of this tx (the results of those executions are contained
141
+ // within executionResult.nestedExecutionResults).
142
+ const executionResult = await executePrivateFunction(this.simulator, privateExecutionOracle, entryPointArtifact, contractAddress, request.functionSelector);
143
+ const simulatorTeardownTimer = new Timer();
144
+ const firstNullifierHint = noteCache.getNonceGenerator();
145
+ const publicCallRequests = collectNested([
146
+ executionResult
147
+ ], (r)=>r.publicInputs.publicCallRequests.getActiveItems().map((r)=>r.inner).concat(r.publicInputs.publicTeardownCallRequest.isEmpty() ? [] : [
148
+ r.publicInputs.publicTeardownCallRequest
149
+ ]));
150
+ const publicFunctionsCalldata = await allToCompletion(publicCallRequests.map(async (r)=>{
151
+ const calldata = await privateExecutionOracle.getHashPreimage(r.calldataHash);
152
+ return new HashedValues(calldata, r.calldataHash);
153
+ }));
154
+ const teardownTime = simulatorTeardownTimer.ms();
155
+ // Add simulator overhead to topmost call in the stack
156
+ if (executionResult.profileResult) {
157
+ executionResult.profileResult.timings.witgen += setupTime + teardownTime;
158
+ }
159
+ // Not to be confused with a PrivateCallExecutionResult. This is a superset
160
+ // of the PrivateCallExecutionResult, containing also firstNullifierHint
161
+ // and publicFunctionsCalldata.
162
+ return new PrivateExecutionResult(executionResult, firstNullifierHint, publicFunctionsCalldata);
163
+ } catch (err) {
164
+ throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
165
+ }
166
+ }
167
+ /**
168
+ * Runs a utility function.
169
+ * @param call - The function call to execute.
170
+ * @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
171
+ */ async runUtility(call, authwits, anchorBlockHeader, scopes, changeSetId) {
172
+ const anchoredContractData = new AnchoredContractData(this.contractStore, this.contractClassService, anchorBlockHeader, this.overrides);
173
+ const entryPointArtifact = await anchoredContractData.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
174
+ if (!entryPointArtifact) {
175
+ throw new Error(`Cannot run function ${call.selector} on ${call.to}: the contract is not registered. ` + `Register it via wallet.registerContract(...).`);
176
+ }
177
+ if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
178
+ throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
179
+ }
180
+ const utilityExecutor = async (syncCall, execScopes)=>{
181
+ await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, changeSetId);
182
+ };
183
+ const oracle = new UtilityExecutionOracle({
184
+ callContext: CallContext.from({
185
+ msgSender: AztecAddress.NULL_MSG_SENDER,
186
+ contractAddress: call.to,
187
+ functionSelector: call.selector,
188
+ isStaticCall: true
189
+ }),
190
+ authWitnesses: authwits,
191
+ capsules: [],
192
+ anchorBlockHeader,
193
+ anchoredContractData,
194
+ noteStore: this.noteStore,
195
+ keyStore: this.keyStore,
196
+ addressStore: this.addressStore,
197
+ aztecNode: this.aztecNode,
198
+ recipientTaggingStore: this.recipientTaggingStore,
199
+ taggingSecretSourcesStore: this.taggingSecretSourcesStore,
200
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
201
+ factService: new FactService(this.factStore, scopes),
202
+ privateEventStore: this.privateEventStore,
203
+ txResolver: this.txResolver,
204
+ contractSyncService: this.contractSyncService,
205
+ l2TipsStore: this.l2TipsStore,
206
+ changeSetId,
207
+ scopes,
208
+ simulator: this.simulator,
209
+ hooks: this.hooks,
210
+ utilityExecutor,
211
+ // Execution-tree root (top-level utility run or contract sync): own store; nested frames inherit it.
212
+ transientArrayService: new TransientArrayService()
213
+ });
214
+ try {
215
+ this.log.verbose(`Executing utility function ${entryPointArtifact.name}`, {
216
+ contract: call.to,
217
+ selector: call.selector
218
+ });
219
+ const initialWitness = toACVMWitness(0, call.args);
220
+ const acirExecutionResult = await this.simulator.executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle)).catch((err)=>{
221
+ err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
222
+ throw new ExecutionError(err.message, {
223
+ contractAddress: call.to,
224
+ functionSelector: call.selector
225
+ }, extractCallStack(err, entryPointArtifact.debug), {
226
+ cause: err
227
+ });
228
+ });
229
+ this.log.verbose(`Utility execution for ${call.to}.${call.selector} completed`);
230
+ return {
231
+ result: witnessMapToFields(acirExecutionResult.returnWitness),
232
+ offchainEffects: oracle.getOffchainEffects()
233
+ };
234
+ } catch (err) {
235
+ throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
236
+ }
237
+ }
238
+ }
239
+ class OrderedSideEffect {
240
+ sideEffect;
241
+ counter;
242
+ constructor(sideEffect, counter){
243
+ this.sideEffect = sideEffect;
244
+ this.counter = counter;
245
+ }
246
+ }
247
+ /**
248
+ * Generates the final public inputs of the tail kernel circuit, an empty Chonk proof
249
+ * and the execution steps for a `PrivateExecutionResult` as if it had been
250
+ * processed by the private kernel prover. This skips many of the checks performed by the kernels
251
+ * (allowing state overrides) and is much faster, while still generating a valid
252
+ * output that can be sent to the node for public simulation
253
+ * @param privateExecutionResult - The result of the private execution.
254
+ * @param debugFunctionNameGetter - A provider for contract data in order to get function names and debug info.
255
+ * @param node - AztecNode for verifying settled read requests against the note hash and nullifier trees.
256
+ * @param minRevertibleSideEffectCounterOverride - Optional override for the min revertible side effect counter.
257
+ * Used by TXE to simulate account contract behavior (setting the counter before app execution).
258
+ * @returns The simulated proving result.
259
+ */ export async function generateSimulatedProvingResult(privateExecutionResult, debugFunctionNameGetter, node, minRevertibleSideEffectCounterOverride) {
260
+ const taggedPrivateLogs = [];
261
+ const l2ToL1Messages = [];
262
+ const contractClassLogsHashes = [];
263
+ const publicCallRequests = [];
264
+ const executionSteps = [];
265
+ // Unsiloed scoped arrays — used for squashing, read request verification,
266
+ // and siloed at the end only for the surviving items
267
+ const scopedNoteHashes = [];
268
+ const scopedNullifiers = [];
269
+ // Read requests for verification
270
+ const noteHashReadRequests = [];
271
+ const nullifierReadRequests = [];
272
+ let publicTeardownCallRequest;
273
+ // We set expiration timestamp to anchor_block_timestamp + MAX_TX_LIFETIME (24h) just like kernels do
274
+ let expirationTimestamp = privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.globalVariables.timestamp + BigInt(MAX_TX_LIFETIME);
275
+ let feePayer = AztecAddress.zero();
276
+ const executions = [
277
+ privateExecutionResult.entrypoint
278
+ ];
279
+ while(executions.length !== 0){
280
+ const execution = executions.shift();
281
+ executions.unshift(...execution.nestedExecutionResults);
282
+ // Just like kernels we overwrite the default value if the call sets it.
283
+ const callExpirationTimestamp = execution.publicInputs.expirationTimestamp;
284
+ if (callExpirationTimestamp !== 0n && callExpirationTimestamp < expirationTimestamp) {
285
+ expirationTimestamp = callExpirationTimestamp;
286
+ }
287
+ const { contractAddress } = execution.publicInputs.callContext;
288
+ if (execution.publicInputs.isFeePayer) {
289
+ if (!feePayer.isZero()) {
290
+ throw new Error('Multiple fee payers found in private execution result');
291
+ }
292
+ feePayer = contractAddress;
293
+ }
294
+ scopedNoteHashes.push(...execution.publicInputs.noteHashes.getActiveItems().filter((nh)=>!nh.isEmpty()).map((nh)=>nh.scope(contractAddress)));
295
+ scopedNullifiers.push(...execution.publicInputs.nullifiers.getActiveItems().map((n)=>n.scope(contractAddress)));
296
+ taggedPrivateLogs.push(...await allToCompletion(execution.publicInputs.privateLogs.getActiveItems().map(async (metadata)=>{
297
+ metadata.log.fields[0] = await computeSiloedPrivateLogFirstField(contractAddress, metadata.log.fields[0]);
298
+ return new OrderedSideEffect(metadata, metadata.counter);
299
+ })));
300
+ noteHashReadRequests.push(...execution.publicInputs.noteHashReadRequests.getActiveItems());
301
+ nullifierReadRequests.push(...execution.publicInputs.nullifierReadRequests.getActiveItems());
302
+ l2ToL1Messages.push(...execution.publicInputs.l2ToL1Msgs.getActiveItems().map((message)=>new OrderedSideEffect(message.message.scope(contractAddress), message.counter)));
303
+ contractClassLogsHashes.push(...execution.publicInputs.contractClassLogsHashes.getActiveItems().map((contractClassLogHash)=>new OrderedSideEffect(contractClassLogHash.logHash.scope(contractAddress), contractClassLogHash.counter)));
304
+ publicCallRequests.push(...execution.publicInputs.publicCallRequests.getActiveItems().map((callRequest)=>new OrderedSideEffect(callRequest.inner, callRequest.counter)));
305
+ if (publicTeardownCallRequest !== undefined && !execution.publicInputs.publicTeardownCallRequest.isEmpty()) {
306
+ throw new Error('Trying to set multiple teardown requests');
307
+ }
308
+ publicTeardownCallRequest = execution.publicInputs.publicTeardownCallRequest.isEmpty() ? publicTeardownCallRequest : execution.publicInputs.publicTeardownCallRequest;
309
+ executionSteps.push({
310
+ functionName: await debugFunctionNameGetter(execution.publicInputs.callContext.contractAddress, execution.publicInputs.callContext.functionSelector),
311
+ timings: execution.profileResult?.timings ?? {
312
+ witgen: 0,
313
+ oracles: {}
314
+ },
315
+ kind: CircuitKind.App,
316
+ bytecode: execution.acir,
317
+ vk: execution.vk,
318
+ witness: execution.partialWitness
319
+ });
320
+ }
321
+ const noteHashNullifierCounterMap = collectNoteHashNullifierCounterMap(privateExecutionResult);
322
+ const minRevertibleSideEffectCounter = minRevertibleSideEffectCounterOverride ?? getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
323
+ const scopedNoteHashesCLA = new ClaimedLengthArray(padArrayEnd(scopedNoteHashes, ScopedNoteHash.empty(), MAX_NOTE_HASHES_PER_TX), scopedNoteHashes.length);
324
+ const scopedNullifiersCLA = new ClaimedLengthArray(padArrayEnd(scopedNullifiers, ScopedNullifier.empty(), MAX_NULLIFIERS_PER_TX), scopedNullifiers.length);
325
+ const { filteredNoteHashes, filteredNullifiers, filteredPrivateLogs } = squashTransientSideEffects(taggedPrivateLogs, scopedNoteHashesCLA, scopedNullifiersCLA, noteHashNullifierCounterMap, minRevertibleSideEffectCounter);
326
+ await verifyReadRequests(node, await privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.hash(), noteHashReadRequests, nullifierReadRequests, scopedNoteHashesCLA, scopedNullifiersCLA);
327
+ const siloedNoteHashes = await allToCompletion(filteredNoteHashes.sort((a, b)=>a.counter - b.counter).map(async (nh)=>new OrderedSideEffect(await siloNoteHash(nh.contractAddress, nh.value), nh.counter)));
328
+ const siloedNullifiers = await allToCompletion(filteredNullifiers.sort((a, b)=>a.counter - b.counter).map(async (n)=>new OrderedSideEffect(await siloNullifier(n.contractAddress, n.value), n.counter)));
329
+ const constantData = new TxConstantData(privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader, privateExecutionResult.entrypoint.publicInputs.txContext, getVKTreeRoot(), protocolContractsHash);
330
+ const hasPublicCalls = privateExecutionResult.publicFunctionCalldata.length !== 0;
331
+ let inputsForRollup;
332
+ let inputsForPublic;
333
+ let gasUsed;
334
+ const sortByCounter = (a, b)=>a.counter - b.counter;
335
+ const getEffect = (orderedSideEffect)=>orderedSideEffect.sideEffect;
336
+ const isPrivateOnlyTx = privateExecutionResult.publicFunctionCalldata.length === 0;
337
+ const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(siloedNullifiers, minRevertibleSideEffectCounter);
338
+ // The protocol nullifier is the nonce generator and the tx's first nullifier. It is injected by the
339
+ // init kernel (at counter 1, index 0) rather than emitted by any private call, so it is absent from
340
+ // the executed nullifiers above. Mirror the kernel here by prepending it as the first non-revertible
341
+ // nullifier.
342
+ const nonceGenerator = privateExecutionResult.firstNullifier;
343
+ nonRevertibleNullifiers.unshift(nonceGenerator);
344
+ if (isPrivateOnlyTx) {
345
+ // We must make the note hashes unique by using the
346
+ // nonce generator and their index in the tx.
347
+ const uniqueNoteHashes = await allToCompletion(siloedNoteHashes.map(async (orderedSideEffect, i)=>{
348
+ const siloedNoteHash = orderedSideEffect.sideEffect;
349
+ const nonce = await computeNoteHashNonce(nonceGenerator, i);
350
+ const uniqueNoteHash = await computeUniqueNoteHash(nonce, siloedNoteHash);
351
+ return uniqueNoteHash;
352
+ }));
353
+ 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));
354
+ gasUsed = meterGasUsed(accumulatedDataForRollup, isPrivateOnlyTx);
355
+ inputsForRollup = new PartialPrivateTailPublicInputsForRollup(accumulatedDataForRollup);
356
+ } else {
357
+ const [nonRevertibleNoteHashes, revertibleNoteHashes] = splitOrderedSideEffects(siloedNoteHashes, minRevertibleSideEffectCounter);
358
+ const nonRevertibleUniqueNoteHashes = await allToCompletion(nonRevertibleNoteHashes.map(async (noteHash, i)=>{
359
+ const nonce = await computeNoteHashNonce(nonceGenerator, i);
360
+ return await computeUniqueNoteHash(nonce, noteHash);
361
+ }));
362
+ const [nonRevertibleL2ToL1Messages, revertibleL2ToL1Messages] = splitOrderedSideEffects(l2ToL1Messages.sort(sortByCounter), minRevertibleSideEffectCounter);
363
+ const [nonRevertibleTaggedPrivateLogs, revertibleTaggedPrivateLogs] = splitOrderedSideEffects(filteredPrivateLogs, minRevertibleSideEffectCounter);
364
+ const [nonRevertibleContractClassLogHashes, revertibleContractClassLogHashes] = splitOrderedSideEffects(contractClassLogsHashes.sort(sortByCounter), minRevertibleSideEffectCounter);
365
+ const [nonRevertiblePublicCallRequests, revertiblePublicCallRequests] = splitOrderedSideEffects(publicCallRequests.sort(sortByCounter), minRevertibleSideEffectCounter);
366
+ 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));
367
+ 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));
368
+ gasUsed = meterGasUsed(revertibleData, isPrivateOnlyTx).add(meterGasUsed(nonRevertibleData, isPrivateOnlyTx));
369
+ if (publicTeardownCallRequest) {
370
+ gasUsed = gasUsed.add(privateExecutionResult.entrypoint.publicInputs.txContext.gasSettings.teardownGasLimits);
371
+ }
372
+ inputsForPublic = new PartialPrivateTailPublicInputsForPublic(nonRevertibleData, revertibleData, publicTeardownCallRequest ?? PublicCallRequest.empty());
373
+ }
374
+ const publicInputs = new PrivateKernelTailCircuitPublicInputs(constantData, /*gasUsed=*/ gasUsed.add(Gas.from({
375
+ l2Gas: isPrivateOnlyTx ? PRIVATE_TX_L2_GAS_OVERHEAD : PUBLIC_TX_L2_GAS_OVERHEAD,
376
+ daGas: TX_DA_GAS_OVERHEAD
377
+ })), /*feePayer=*/ feePayer, /*expirationTimestamp=*/ expirationTimestamp, hasPublicCalls ? inputsForPublic : undefined, !hasPublicCalls ? inputsForRollup : undefined);
378
+ return {
379
+ publicInputs,
380
+ chonkProof: ChonkProof.empty(),
381
+ executionSteps
382
+ };
383
+ }
384
+ /**
385
+ * Squashes transient note hashes and nullifiers, mimicking the behavior
386
+ * of the reset kernels. Returns the filtered (surviving) scoped items and private logs.
387
+ */ function squashTransientSideEffects(taggedPrivateLogs, scopedNoteHashesCLA, scopedNullifiersCLA, noteHashNullifierCounterMap, minRevertibleSideEffectCounter) {
388
+ const { numTransientData, hints: transientDataHints } = buildTransientDataHints(scopedNoteHashesCLA, scopedNullifiersCLA, /*futureNoteHashReads=*/ [], /*futureNullifierReads=*/ [], /*futureLogs=*/ [], noteHashNullifierCounterMap, minRevertibleSideEffectCounter);
389
+ const squashedNoteHashCounters = new Set();
390
+ const squashedNullifierCounters = new Set();
391
+ for(let i = 0; i < numTransientData; i++){
392
+ const hint = transientDataHints[i];
393
+ squashedNoteHashCounters.add(scopedNoteHashesCLA.array[hint.noteHashIndex].counter);
394
+ squashedNullifierCounters.add(scopedNullifiersCLA.array[hint.nullifierIndex].counter);
395
+ }
396
+ return {
397
+ filteredNoteHashes: scopedNoteHashesCLA.getActiveItems().filter((nh)=>!squashedNoteHashCounters.has(nh.counter)),
398
+ filteredNullifiers: scopedNullifiersCLA.getActiveItems().filter((n)=>!squashedNullifierCounters.has(n.counter)),
399
+ filteredPrivateLogs: taggedPrivateLogs.filter((item)=>!squashedNoteHashCounters.has(item.sideEffect.noteHashCounter)).map((item)=>new OrderedSideEffect(item.sideEffect.log, item.counter))
400
+ };
401
+ }
402
+ /**
403
+ * Verifies settled read requests by checking membership in the note hash and nullifier trees
404
+ * at the tx's anchor block, mimicking the behavior of the kernels
405
+ */ async function verifyReadRequests(node, anchorBlockHash, noteHashReadRequests, nullifierReadRequests, scopedNoteHashesCLA, scopedNullifiersCLA) {
406
+ const noteHashReadRequestsCLA = new ClaimedLengthArray(padArrayEnd(noteHashReadRequests, ScopedReadRequest.empty(), MAX_NOTE_HASH_READ_REQUESTS_PER_TX), noteHashReadRequests.length);
407
+ const nullifierReadRequestsCLA = new ClaimedLengthArray(padArrayEnd(nullifierReadRequests, ScopedReadRequest.empty(), MAX_NULLIFIER_READ_REQUESTS_PER_TX), nullifierReadRequests.length);
408
+ const noteHashResetActions = getNoteHashReadRequestResetActions(noteHashReadRequestsCLA, scopedNoteHashesCLA);
409
+ const nullifierResetActions = getNullifierReadRequestResetActions(nullifierReadRequestsCLA, scopedNullifiersCLA);
410
+ const settledNoteHashReads = [];
411
+ for(let i = 0; i < noteHashResetActions.actions.length; i++){
412
+ if (noteHashResetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
413
+ settledNoteHashReads.push({
414
+ index: i,
415
+ value: noteHashReadRequests[i].value
416
+ });
417
+ }
418
+ }
419
+ const settledNullifierReads = [];
420
+ for(let i = 0; i < nullifierResetActions.actions.length; i++){
421
+ if (nullifierResetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
422
+ settledNullifierReads.push({
423
+ index: i,
424
+ value: nullifierReadRequests[i].value
425
+ });
426
+ }
427
+ }
428
+ const [noteHashResults, nullifierResults] = await allToCompletion([
429
+ settledNoteHashReads.length > 0 ? node.findLeavesIndexes(anchorBlockHash, MerkleTreeId.NOTE_HASH_TREE, settledNoteHashReads.map(({ value })=>value)) : [],
430
+ settledNullifierReads.length > 0 ? node.findLeavesIndexes(anchorBlockHash, MerkleTreeId.NULLIFIER_TREE, settledNullifierReads.map(({ value })=>value)) : []
431
+ ]);
432
+ for(let i = 0; i < settledNoteHashReads.length; i++){
433
+ if (!noteHashResults[i]) {
434
+ throw new Error(`Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`);
435
+ }
436
+ }
437
+ for(let i = 0; i < settledNullifierReads.length; i++){
438
+ if (!nullifierResults[i]) {
439
+ throw new Error(`Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`);
440
+ }
441
+ }
442
+ }
443
+ function splitOrderedSideEffects(effects, minRevertibleSideEffectCounter) {
444
+ const revertibleSideEffects = [];
445
+ const nonRevertibleSideEffects = [];
446
+ effects.forEach((effect)=>{
447
+ if (minRevertibleSideEffectCounter === 0 || effect.counter < minRevertibleSideEffectCounter) {
448
+ nonRevertibleSideEffects.push(effect.sideEffect);
449
+ } else {
450
+ revertibleSideEffects.push(effect.sideEffect);
451
+ }
452
+ });
453
+ return [
454
+ nonRevertibleSideEffects,
455
+ revertibleSideEffects
456
+ ];
457
+ }
458
+ function meterGasUsed(data, isPrivateOnlyTx) {
459
+ let meteredDAFields = 0;
460
+ let meteredL2Gas = 0;
461
+ const numNoteHashes = arrayNonEmptyLength(data.noteHashes, (hash)=>hash.isEmpty());
462
+ meteredDAFields += numNoteHashes;
463
+ const noteHashBaseGas = isPrivateOnlyTx ? L2_GAS_PER_NOTE_HASH : AVM_EMITNOTEHASH_BASE_L2_GAS;
464
+ meteredL2Gas += numNoteHashes * noteHashBaseGas;
465
+ const numNullifiers = arrayNonEmptyLength(data.nullifiers, (nullifier)=>nullifier.isEmpty());
466
+ meteredDAFields += numNullifiers;
467
+ const nullifierBaseGas = isPrivateOnlyTx ? L2_GAS_PER_NULLIFIER : AVM_EMITNULLIFIER_BASE_L2_GAS;
468
+ meteredL2Gas += numNullifiers * nullifierBaseGas;
469
+ const numL2toL1Messages = arrayNonEmptyLength(data.l2ToL1Msgs, (msg)=>msg.isEmpty());
470
+ meteredDAFields += numL2toL1Messages;
471
+ const l2ToL1MessageBaseGas = isPrivateOnlyTx ? L2_GAS_PER_L2_TO_L1_MSG : AVM_SENDL2TOL1MSG_BASE_L2_GAS;
472
+ meteredL2Gas += numL2toL1Messages * l2ToL1MessageBaseGas;
473
+ const numPrivatelogs = arrayNonEmptyLength(data.privateLogs, (log)=>log.isEmpty());
474
+ // Every private log emits its length as an additional field
475
+ meteredDAFields += data.privateLogs.reduce((acc, log)=>!log.isEmpty() ? acc + log.emittedLength + 1 : acc, 0);
476
+ meteredL2Gas += numPrivatelogs * L2_GAS_PER_PRIVATE_LOG;
477
+ const numContractClassLogs = arrayNonEmptyLength(data.contractClassLogsHashes, (log)=>log.isEmpty());
478
+ // Every contract class log emits its contract address as an additional field
479
+ meteredDAFields += data.contractClassLogsHashes.reduce((acc, log)=>!log.isEmpty() ? acc + log.logHash.length + 1 : acc, 0);
480
+ meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
481
+ if (isPrivateOnlyTx) {
482
+ // The public data write that the private tx base rollup always performs to update the fee payer's balance.
483
+ meteredDAFields += PUBLIC_DATA_WRITE_LENGTH;
484
+ }
485
+ const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
486
+ if (data.publicCallRequests) {
487
+ const dataForPublic = data;
488
+ const numPublicCallRequests = arrayNonEmptyLength(dataForPublic.publicCallRequests, (req)=>req.isEmpty());
489
+ meteredL2Gas += numPublicCallRequests * FIXED_AVM_STARTUP_L2_GAS;
490
+ }
491
+ return Gas.from({
492
+ l2Gas: meteredL2Gas,
493
+ daGas: meteredDAGas
494
+ });
495
+ }
@@ -0,0 +1,28 @@
1
+ import { Fr } from '@aztec-labs/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBoZW1lcmFsX2FycmF5X3NlcnZpY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXBoZW1lcmFsX2FycmF5X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXpELG1GQUFtRjtBQUNuRixxQkFBYSxxQkFBcUI7O0lBT2hDLDZFQUE2RTtJQUM3RSxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUU1QjtJQU1ELHFFQUFxRTtJQUNyRSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBRXBCO0lBRUQsa0VBQWtFO0lBQ2xFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBS3JDO0lBRUQsNkRBQTZEO0lBQzdELEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQVFsQjtJQUVELHVFQUF1RTtJQUN2RSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQVFqQztJQUVELDBFQUEwRTtJQUMxRSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBUTlDO0lBRUQsOEdBQThHO0lBQzlHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQVFwQztJQUVELDJDQUEyQztJQUMzQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBRXBCO0lBRUQsZ0VBQWdFO0lBQ2hFLFlBQVksSUFBSSxFQUFFLENBTWpCO0lBRUQsZ0dBQWdHO0lBQ2hHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBSTdCO0lBRUQsdUdBQXVHO0lBQ3ZHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBVWxEO0NBQ0YifQ==
@@ -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,qCAAqC,CAAC;AAEzD,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"}
@@ -0,0 +1,78 @@
1
+ import { Fr } from '@aztec-labs/foundation/curves/bn254';
2
+ /** In-memory store for ephemeral arrays scoped to a single contract call frame. */ export class EphemeralArrayService {
3
+ /**
4
+ * Maps a slot to the elements of the array stored at that slot. Each element is a serialized representation of
5
+ * the original type.
6
+ */ #arrays = new Map();
7
+ /** Returns all elements in the array, or an empty array if uninitialized. */ readArrayAt(slot) {
8
+ return this.#arrays.get(slot.toString()) ?? [];
9
+ }
10
+ #setArray(slot, array) {
11
+ this.#arrays.set(slot.toString(), array);
12
+ }
13
+ /** Returns the number of elements in the array at the given slot. */ len(slot) {
14
+ return this.readArrayAt(slot).length;
15
+ }
16
+ /** Appends an element to the array and returns the new length. */ push(slot, elements) {
17
+ const array = this.readArrayAt(slot);
18
+ array.push(elements);
19
+ this.#setArray(slot, array);
20
+ return array.length;
21
+ }
22
+ /** Removes and returns the last element. Throws if empty. */ pop(slot) {
23
+ const array = this.readArrayAt(slot);
24
+ if (array.length === 0) {
25
+ throw new Error(`Ephemeral array at slot ${slot} is empty`);
26
+ }
27
+ const element = array.pop();
28
+ this.#setArray(slot, array);
29
+ return element;
30
+ }
31
+ /** Returns the element at the given index. Throws if out of bounds. */ get(slot, index) {
32
+ const array = this.readArrayAt(slot);
33
+ if (index < 0 || index >= array.length) {
34
+ throw new Error(`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`);
35
+ }
36
+ return array[index];
37
+ }
38
+ /** Overwrites the element at the given index. Throws if out of bounds. */ set(slot, index, value) {
39
+ const array = this.readArrayAt(slot);
40
+ if (index < 0 || index >= array.length) {
41
+ throw new Error(`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`);
42
+ }
43
+ array[index] = value;
44
+ }
45
+ /** Removes the element at the given index, shifting subsequent elements backward. Throws if out of bounds. */ remove(slot, index) {
46
+ const array = this.readArrayAt(slot);
47
+ if (index < 0 || index >= array.length) {
48
+ throw new Error(`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`);
49
+ }
50
+ array.splice(index, 1);
51
+ }
52
+ /** Removes all elements from the array. */ clear(slot) {
53
+ this.#arrays.delete(slot.toString());
54
+ }
55
+ /** Allocates a fresh, unused slot for a new ephemeral array. */ allocateSlot() {
56
+ let slot;
57
+ do {
58
+ slot = Fr.random();
59
+ }while (this.#arrays.has(slot.toString()))
60
+ return slot;
61
+ }
62
+ /** Creates a new ephemeral array pre-populated with the given elements and returns its slot. */ newArray(elements) {
63
+ const slot = this.allocateSlot();
64
+ this.#setArray(slot, elements);
65
+ return slot;
66
+ }
67
+ /** Copies `count` elements from the source array to the destination array (overwrites destination). */ copy(srcSlot, dstSlot, count) {
68
+ const srcArray = this.readArrayAt(srcSlot);
69
+ if (count > srcArray.length) {
70
+ throw new Error(`Cannot copy ${count} elements from ephemeral array of length ${srcArray.length} at slot ${srcSlot}`);
71
+ }
72
+ // Deep copy the elements to avoid aliasing
73
+ const copied = srcArray.slice(0, count).map((el)=>[
74
+ ...el
75
+ ]);
76
+ this.#setArray(dstSlot, copied);
77
+ }
78
+ }