@aztec/pxe 0.0.1-commit.a89ec08 → 0.0.1-commit.aa0c64f

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 (486) hide show
  1. package/dest/bin/check_oracle_version.js +39 -110
  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 +78 -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_sync → contract}/contract_sync_service.js +42 -42
  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 +22 -18
  37. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  38. package/dest/contract_function_simulator/contract_function_simulator.js +80 -41
  39. package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -10
  40. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  41. package/dest/contract_function_simulator/execution_note_cache.js +8 -28
  42. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -9
  43. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  44. package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -7
  45. package/dest/contract_function_simulator/index.d.ts +26 -6
  46. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  47. package/dest/contract_function_simulator/index.js +11 -4
  48. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
  49. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  50. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
  51. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  52. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  53. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  54. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  55. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  56. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  57. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  58. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  59. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  60. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +3 -2
  61. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  62. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +4 -3
  63. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  64. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  65. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  66. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  67. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  68. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  69. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +18 -9
  70. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  71. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +12 -24
  72. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +10 -8
  73. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  74. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -60
  75. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  76. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  77. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  78. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -2
  79. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  80. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +5 -4
  81. package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
  82. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  83. package/dest/contract_function_simulator/noir-structs/option.js +67 -0
  84. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  85. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  86. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  87. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  88. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  89. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  90. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
  91. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  92. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
  93. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  94. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  95. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
  96. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +19 -0
  97. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  98. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +9 -0
  99. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -0
  100. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  101. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  102. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  103. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  104. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  105. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  106. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  107. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  108. package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
  109. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
  110. package/dest/contract_function_simulator/oracle/index.js +1 -1
  111. package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -114
  112. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  113. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  114. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  115. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  116. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
  117. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  118. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  119. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  120. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  121. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  122. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  123. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +139 -0
  124. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  125. package/dest/contract_function_simulator/oracle/oracle_registry.js +1016 -0
  126. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +274 -0
  127. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  128. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1243 -0
  129. package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
  130. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  131. package/dest/contract_function_simulator/oracle/private_execution.js +2 -3
  132. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +47 -36
  133. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  134. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +181 -63
  135. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +126 -64
  136. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  137. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +430 -195
  138. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  139. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  140. package/dest/contract_function_simulator/pick_notes.js +6 -0
  141. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  142. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  143. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  144. package/dest/debug/pxe_debug_utils.d.ts +2 -7
  145. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  146. package/dest/debug/pxe_debug_utils.js +0 -6
  147. package/dest/entrypoints/client/bundle/index.d.ts +2 -1
  148. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  149. package/dest/entrypoints/client/bundle/index.js +1 -0
  150. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  151. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  152. package/dest/entrypoints/client/bundle/utils.js +25 -6
  153. package/dest/entrypoints/client/lazy/index.d.ts +2 -1
  154. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  155. package/dest/entrypoints/client/lazy/index.js +1 -0
  156. package/dest/entrypoints/client/lazy/utils.d.ts +1 -1
  157. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  158. package/dest/entrypoints/client/lazy/utils.js +25 -6
  159. package/dest/entrypoints/client/store.d.ts +14 -0
  160. package/dest/entrypoints/client/store.d.ts.map +1 -0
  161. package/dest/entrypoints/client/store.js +42 -0
  162. package/dest/entrypoints/pxe_creation_options.d.ts +14 -2
  163. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  164. package/dest/entrypoints/server/index.d.ts +6 -2
  165. package/dest/entrypoints/server/index.d.ts.map +1 -1
  166. package/dest/entrypoints/server/index.js +4 -1
  167. package/dest/entrypoints/server/store.d.ts +18 -0
  168. package/dest/entrypoints/server/store.d.ts.map +1 -0
  169. package/dest/entrypoints/server/store.js +28 -0
  170. package/dest/entrypoints/server/utils.d.ts +3 -2
  171. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  172. package/dest/entrypoints/server/utils.js +26 -6
  173. package/dest/error_enriching.d.ts +5 -3
  174. package/dest/error_enriching.d.ts.map +1 -1
  175. package/dest/error_enriching.js +13 -11
  176. package/dest/events/event_service.d.ts +13 -5
  177. package/dest/events/event_service.d.ts.map +1 -1
  178. package/dest/events/event_service.js +30 -9
  179. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  180. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  181. package/dest/hooks/authorize_utility_call.js +4 -0
  182. package/dest/hooks/execution_hooks.d.ts +62 -0
  183. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  184. package/dest/hooks/execution_hooks.js +9 -0
  185. package/dest/hooks/index.d.ts +5 -0
  186. package/dest/hooks/index.d.ts.map +1 -0
  187. package/dest/hooks/index.js +2 -0
  188. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  189. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  190. package/dest/hooks/resolve_custom_request.js +3 -0
  191. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  192. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  193. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  194. package/dest/logs/log_service.d.ts +12 -9
  195. package/dest/logs/log_service.d.ts.map +1 -1
  196. package/dest/logs/log_service.js +186 -62
  197. package/dest/messages/tx_resolver_service.d.ts +17 -0
  198. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  199. package/dest/messages/tx_resolver_service.js +60 -0
  200. package/dest/notes/note_service.d.ts +26 -4
  201. package/dest/notes/note_service.d.ts.map +1 -1
  202. package/dest/notes/note_service.js +81 -66
  203. package/dest/oracle_version.d.ts +3 -3
  204. package/dest/oracle_version.js +6 -6
  205. package/dest/private_kernel/batch_planner.d.ts +47 -0
  206. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  207. package/dest/private_kernel/batch_planner.js +104 -0
  208. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +1 -1
  209. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  210. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +7 -3
  211. package/dest/private_kernel/hints/test_utils.d.ts +1 -1
  212. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -1
  213. package/dest/private_kernel/hints/test_utils.js +3 -4
  214. package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
  215. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  216. package/dest/private_kernel/private_kernel_execution_prover.js +200 -83
  217. package/dest/private_kernel/private_kernel_oracle.d.ts +12 -10
  218. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  219. package/dest/private_kernel/private_kernel_oracle.js +40 -26
  220. package/dest/pxe.d.ts +165 -52
  221. package/dest/pxe.d.ts.map +1 -1
  222. package/dest/pxe.js +337 -209
  223. package/dest/storage/allowed_scopes.d.ts +6 -0
  224. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  225. package/dest/storage/allowed_scopes.js +7 -0
  226. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -6
  227. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  228. package/dest/storage/anchor_block_store/anchor_block_store.js +8 -6
  229. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  230. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  231. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  232. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  233. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  234. package/dest/storage/backwards_compatibility_tests/schema_tests.js +671 -0
  235. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  236. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  237. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  238. package/dest/storage/capsule_store/capsule_service.d.ts +1 -1
  239. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -1
  240. package/dest/storage/capsule_store/capsule_service.js +6 -9
  241. package/dest/storage/contract_store/contract_store.d.ts +27 -24
  242. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  243. package/dest/storage/contract_store/contract_store.js +67 -97
  244. package/dest/storage/fact_store/fact_service.d.ts +22 -0
  245. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  246. package/dest/storage/fact_store/fact_service.js +45 -0
  247. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  248. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  249. package/dest/storage/fact_store/fact_store.js +408 -0
  250. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  251. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  252. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  253. package/dest/storage/fact_store/index.d.ts +6 -0
  254. package/dest/storage/fact_store/index.d.ts.map +1 -0
  255. package/dest/storage/fact_store/index.js +4 -0
  256. package/dest/storage/fact_store/origin_state.d.ts +59 -0
  257. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  258. package/dest/storage/fact_store/origin_state.js +60 -0
  259. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  260. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  261. package/dest/storage/fact_store/stored_fact.js +64 -0
  262. package/dest/storage/index.d.ts +3 -2
  263. package/dest/storage/index.d.ts.map +1 -1
  264. package/dest/storage/index.js +2 -1
  265. package/dest/storage/metadata.d.ts +2 -2
  266. package/dest/storage/metadata.d.ts.map +1 -1
  267. package/dest/storage/metadata.js +1 -1
  268. package/dest/storage/note_store/note_store.d.ts +42 -33
  269. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  270. package/dest/storage/note_store/note_store.js +197 -168
  271. package/dest/storage/note_store/stored_note.d.ts +3 -8
  272. package/dest/storage/note_store/stored_note.d.ts.map +1 -1
  273. package/dest/storage/note_store/stored_note.js +4 -20
  274. package/dest/storage/open_pxe_stores.d.ts +35 -0
  275. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  276. package/dest/storage/open_pxe_stores.js +29 -0
  277. package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
  278. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  279. package/dest/storage/private_event_store/private_event_store.js +43 -43
  280. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  281. package/dest/storage/store_identity.d.ts +35 -0
  282. package/dest/storage/store_identity.d.ts.map +1 -0
  283. package/dest/storage/store_identity.js +44 -0
  284. package/dest/storage/tagging_store/index.d.ts +2 -2
  285. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  286. package/dest/storage/tagging_store/index.js +1 -1
  287. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  288. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  289. package/dest/storage/tagging_store/sender_tagging_store.d.ts +23 -7
  290. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  291. package/dest/storage/tagging_store/sender_tagging_store.js +51 -14
  292. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  293. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  294. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  295. package/dest/tagging/constants.d.ts +3 -2
  296. package/dest/tagging/constants.d.ts.map +1 -1
  297. package/dest/tagging/constants.js +28 -10
  298. package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
  299. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  300. package/dest/tagging/get_all_logs_by_tags.js +36 -37
  301. package/dest/tagging/index.d.ts +6 -5
  302. package/dest/tagging/index.d.ts.map +1 -1
  303. package/dest/tagging/index.js +5 -4
  304. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  305. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  306. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  307. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +74 -0
  308. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  309. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +238 -0
  310. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  311. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  312. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  313. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  314. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  315. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -5
  316. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  317. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +26 -14
  318. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -6
  319. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  320. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +21 -0
  321. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -4
  322. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  323. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +8 -4
  324. package/dest/tagging/testing/tag_query_test_utils.d.ts +6 -0
  325. package/dest/tagging/testing/tag_query_test_utils.d.ts.map +1 -0
  326. package/dest/tagging/testing/tag_query_test_utils.js +10 -0
  327. package/package.json +20 -17
  328. package/src/bin/check_oracle_version.ts +44 -133
  329. package/src/bin/index.ts +1 -0
  330. package/src/bin/oracle_version_helpers.ts +54 -0
  331. package/src/block_synchronizer/block_stream_source.ts +42 -0
  332. package/src/block_synchronizer/block_synchronizer.ts +96 -39
  333. package/src/config/index.ts +16 -9
  334. package/src/config/package_info.ts +1 -1
  335. package/src/contract/contract_class_service.ts +83 -0
  336. package/src/{contract_sync → contract}/contract_sync_service.ts +61 -61
  337. package/src/contract/helpers.ts +35 -0
  338. package/src/contract/skip_sync_contracts.ts +23 -0
  339. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  340. package/src/contract_function_simulator/aztec_node_read_cache.ts +89 -0
  341. package/src/contract_function_simulator/contract_function_simulator.ts +130 -53
  342. package/src/contract_function_simulator/execution_note_cache.ts +8 -29
  343. package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -9
  344. package/src/contract_function_simulator/index.ts +89 -5
  345. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
  346. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  347. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  348. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  349. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +4 -3
  350. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  351. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  352. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +26 -19
  353. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +13 -60
  354. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  355. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +5 -4
  356. package/src/contract_function_simulator/noir-structs/option.ts +75 -0
  357. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  358. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  359. package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
  360. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
  361. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +19 -0
  362. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
  363. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  364. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  365. package/src/contract_function_simulator/oracle/index.ts +1 -15
  366. package/src/contract_function_simulator/oracle/interfaces.ts +11 -204
  367. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
  368. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  369. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  370. package/src/contract_function_simulator/oracle/oracle_registry.ts +710 -0
  371. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +1052 -0
  372. package/src/contract_function_simulator/oracle/private_execution.ts +2 -3
  373. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +232 -83
  374. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +676 -367
  375. package/src/contract_function_simulator/pick_notes.ts +8 -0
  376. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  377. package/src/debug/pxe_debug_utils.ts +1 -9
  378. package/src/entrypoints/client/bundle/index.ts +1 -0
  379. package/src/entrypoints/client/bundle/utils.ts +30 -5
  380. package/src/entrypoints/client/lazy/index.ts +1 -0
  381. package/src/entrypoints/client/lazy/utils.ts +30 -5
  382. package/src/entrypoints/client/store.ts +54 -0
  383. package/src/entrypoints/pxe_creation_options.ts +14 -1
  384. package/src/entrypoints/server/index.ts +6 -1
  385. package/src/entrypoints/server/store.ts +47 -0
  386. package/src/entrypoints/server/utils.ts +43 -11
  387. package/src/error_enriching.ts +27 -11
  388. package/src/events/event_service.ts +54 -19
  389. package/src/hooks/authorize_utility_call.ts +44 -0
  390. package/src/hooks/execution_hooks.ts +68 -0
  391. package/src/hooks/index.ts +13 -0
  392. package/src/hooks/resolve_custom_request.ts +24 -0
  393. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  394. package/src/logs/log_service.ts +220 -112
  395. package/src/messages/tx_resolver_service.ts +69 -0
  396. package/src/notes/note_service.ts +116 -92
  397. package/src/oracle_version.ts +6 -6
  398. package/src/private_kernel/batch_planner.ts +168 -0
  399. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +12 -2
  400. package/src/private_kernel/hints/test_utils.ts +3 -10
  401. package/src/private_kernel/private_kernel_execution_prover.ts +333 -114
  402. package/src/private_kernel/private_kernel_oracle.ts +58 -29
  403. package/src/pxe.ts +529 -237
  404. package/src/storage/allowed_scopes.ts +14 -0
  405. package/src/storage/anchor_block_store/anchor_block_store.ts +8 -6
  406. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  407. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  408. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  409. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  410. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  411. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  412. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
  413. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
  414. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  415. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +26 -0
  416. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +30 -0
  417. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  418. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
  419. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  420. package/src/storage/backwards_compatibility_tests/schema_tests.ts +803 -0
  421. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  422. package/src/storage/capsule_store/capsule_service.ts +8 -13
  423. package/src/storage/contract_store/contract_store.ts +90 -120
  424. package/src/storage/fact_store/fact_service.ts +69 -0
  425. package/src/storage/fact_store/fact_store.ts +487 -0
  426. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  427. package/src/storage/fact_store/index.ts +15 -0
  428. package/src/storage/fact_store/origin_state.ts +84 -0
  429. package/src/storage/fact_store/stored_fact.ts +80 -0
  430. package/src/storage/index.ts +2 -1
  431. package/src/storage/metadata.ts +1 -1
  432. package/src/storage/note_store/note_store.ts +226 -187
  433. package/src/storage/note_store/stored_note.ts +5 -27
  434. package/src/storage/open_pxe_stores.ts +52 -0
  435. package/src/storage/private_event_store/private_event_store.ts +52 -54
  436. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  437. package/src/storage/store_identity.ts +72 -0
  438. package/src/storage/tagging_store/index.ts +1 -1
  439. package/src/storage/tagging_store/recipient_tagging_store.ts +5 -9
  440. package/src/storage/tagging_store/sender_tagging_store.ts +68 -21
  441. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  442. package/src/tagging/constants.ts +30 -10
  443. package/src/tagging/get_all_logs_by_tags.ts +78 -50
  444. package/src/tagging/index.ts +5 -4
  445. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  446. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +358 -0
  447. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  448. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  449. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +41 -19
  450. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +23 -8
  451. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +10 -7
  452. package/src/tagging/testing/tag_query_test_utils.ts +11 -0
  453. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +0 -9
  454. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +0 -1
  455. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +0 -47
  456. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -91
  457. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  458. package/dest/contract_function_simulator/oracle/oracle.js +0 -553
  459. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  460. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  461. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -83
  462. package/dest/contract_sync/contract_sync_service.d.ts +0 -44
  463. package/dest/contract_sync/contract_sync_service.d.ts.map +0 -1
  464. package/dest/contract_sync/helpers.d.ts +0 -28
  465. package/dest/contract_sync/helpers.d.ts.map +0 -1
  466. package/dest/contract_sync/helpers.js +0 -60
  467. package/dest/messages/message_context_service.d.ts +0 -17
  468. package/dest/messages/message_context_service.d.ts.map +0 -1
  469. package/dest/messages/message_context_service.js +0 -36
  470. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  471. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  472. package/dest/storage/tagging_store/sender_address_book_store.js +0 -36
  473. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
  474. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  475. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -85
  476. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
  477. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  478. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
  479. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +0 -104
  480. package/src/contract_function_simulator/oracle/oracle.ts +0 -861
  481. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -90
  482. package/src/contract_sync/helpers.ts +0 -98
  483. package/src/messages/message_context_service.ts +0 -44
  484. package/src/storage/tagging_store/sender_address_book_store.ts +0 -48
  485. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -128
  486. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
@@ -1,4 +1,7 @@
1
- import { vkAsFieldsMegaHonk } from '@aztec/foundation/crypto/keys';
1
+ import { CircuitKind } from '@aztec/bb.js';
2
+ import { MAX_APPS_PER_KERNEL } from '@aztec/constants';
3
+ import { uniqueBy } from '@aztec/foundation/collection';
4
+ import { vkAsFields } from '@aztec/foundation/crypto/keys';
2
5
  import { Fr } from '@aztec/foundation/curves/bn254';
3
6
  import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
4
7
  import { pushTestData } from '@aztec/foundation/testing';
@@ -16,23 +19,34 @@ import {
16
19
  PrivateKernelCircuitPublicInputs,
17
20
  PrivateKernelData,
18
21
  type PrivateKernelExecutionProofOutput,
22
+ PrivateKernelInit2CircuitPrivateInputs,
23
+ PrivateKernelInit3CircuitPrivateInputs,
24
+ PrivateKernelInit4CircuitPrivateInputs,
25
+ PrivateKernelInit5CircuitPrivateInputs,
19
26
  PrivateKernelInitCircuitPrivateInputs,
27
+ PrivateKernelInner2CircuitPrivateInputs,
28
+ PrivateKernelInner3CircuitPrivateInputs,
29
+ PrivateKernelInner4CircuitPrivateInputs,
30
+ PrivateKernelInner5CircuitPrivateInputs,
20
31
  PrivateKernelInnerCircuitPrivateInputs,
32
+ PrivateKernelResetTailCircuitPrivateInputs,
21
33
  type PrivateKernelSimulateOutput,
22
- PrivateKernelTailCircuitPrivateInputs,
23
34
  type PrivateKernelTailCircuitPublicInputs,
24
35
  PrivateVerificationKeyHints,
36
+ type UpdatedClassIdHints,
25
37
  } from '@aztec/stdlib/kernel';
26
38
  import { ChonkProof, ChonkProofWithPublicInputs } from '@aztec/stdlib/proofs';
27
39
  import {
28
40
  type PrivateCallExecutionResult,
29
41
  type PrivateExecutionResult,
30
42
  TxRequest,
43
+ collectNested,
31
44
  collectNoteHashNullifierCounterMap,
32
45
  getFinalMinRevertibleSideEffectCounter,
33
46
  } from '@aztec/stdlib/tx';
34
47
  import { VerificationKeyAsFields, VerificationKeyData, VkData } from '@aztec/stdlib/vks';
35
48
 
49
+ import { BatchPlanner } from './batch_planner.js';
36
50
  import { computeTxExpirationTimestamp } from './hints/compute_tx_expiration_timestamp.js';
37
51
  import { PrivateKernelResetPrivateInputsBuilder } from './hints/private_kernel_reset_private_inputs_builder.js';
38
52
  import type { PrivateKernelOracle } from './private_kernel_oracle.js';
@@ -64,6 +78,7 @@ export class PrivateKernelExecutionProver {
64
78
  private proofCreator: PrivateKernelProver,
65
79
  private fakeProofs = false,
66
80
  bindings?: LoggerBindings,
81
+ private maxBatchSize: number = MAX_APPS_PER_KERNEL,
67
82
  ) {
68
83
  this.log = createLogger('pxe:private-kernel-execution-prover', bindings);
69
84
  }
@@ -108,6 +123,13 @@ export class PrivateKernelExecutionProver {
108
123
  const minRevertibleSideEffectCounter = getFinalMinRevertibleSideEffectCounter(executionResult);
109
124
  const splitCounter = isPrivateOnlyTx ? 0 : minRevertibleSideEffectCounter;
110
125
 
126
+ // Each kernel iteration absorbs up to `maxBatchSize` apps. The planner walks the upcoming
127
+ // apps and decides where the next reset must fall by using an accumulator and
128
+ // reusing the existing single-app `needsReset()` check.
129
+ const planner = new BatchPlanner(noteHashNullifierCounterMap, splitCounter, this.maxBatchSize);
130
+
131
+ const updatedClassIdHintsMap = await this.prefetchUpdatedClassIdHints(executionResult);
132
+
111
133
  while (executionStack.length) {
112
134
  if (!firstIteration) {
113
135
  let resetBuilder = new PrivateKernelResetPrivateInputsBuilder(
@@ -128,6 +150,7 @@ export class PrivateKernelExecutionProver {
128
150
  bytecode: output.bytecode,
129
151
  witness: output.outputWitness,
130
152
  vk: output.verificationKey.keyAsBytes,
153
+ kind: CircuitKind.Kernel,
131
154
  timings: {
132
155
  witgen: witgenTimer.ms(),
133
156
  },
@@ -141,84 +164,28 @@ export class PrivateKernelExecutionProver {
141
164
  }
142
165
  }
143
166
 
144
- const currentExecution = executionStack.pop()!;
145
-
146
- executionStack.push(...[...currentExecution.nestedExecutionResults].reverse());
147
-
148
- const functionName = await this.oracle.getDebugFunctionName(
149
- currentExecution.publicInputs.callContext.contractAddress,
150
- currentExecution.publicInputs.callContext.functionSelector,
151
- );
167
+ const batchSize = planner.decideBatchSize(output.publicInputs, executionStack);
168
+ const apps: PrivateCallData[] = [];
169
+ for (let i = 0; i < batchSize; i++) {
170
+ apps.push(await this.consumeNextApp(executionStack, executionSteps, updatedClassIdHintsMap));
171
+ }
152
172
 
153
- executionSteps.push({
154
- functionName: functionName!,
155
- bytecode: currentExecution.acir,
156
- witness: currentExecution.partialWitness,
157
- vk: currentExecution.vk,
158
- timings: {
159
- witgen: currentExecution.profileResult?.timings.witgen ?? 0,
160
- oracles: currentExecution.profileResult?.timings.oracles,
161
- },
173
+ output = await this.runBatchedKernel({
174
+ apps,
175
+ firstIteration,
176
+ previousOutput: output,
177
+ txRequest,
178
+ isPrivateOnlyTx,
179
+ minRevertibleSideEffectCounter,
180
+ executionSteps,
181
+ generateWitnesses,
162
182
  });
163
183
 
164
- const privateCallData = await this.createPrivateCallData(currentExecution);
165
-
166
- if (firstIteration) {
167
- const witgenTimer = new Timer();
168
-
169
- const proofInput = new PrivateKernelInitCircuitPrivateInputs(
170
- txRequest,
171
- getVKTreeRoot(),
172
- ProtocolContractsList,
173
- privateCallData,
174
- isPrivateOnlyTx,
175
- executionResult.firstNullifier,
176
- minRevertibleSideEffectCounter,
177
- );
178
- this.log.debug(
179
- `Calling private kernel init with isPrivateOnly ${isPrivateOnlyTx} and firstNullifierHint ${proofInput.firstNullifierHint}`,
180
- );
181
-
182
- pushTestData('private-kernel-inputs-init', proofInput);
183
-
184
- output = generateWitnesses
185
- ? await this.proofCreator.generateInitOutput(proofInput)
186
- : await this.proofCreator.simulateInit(proofInput);
187
-
188
- executionSteps.push({
189
- functionName: 'private_kernel_init',
190
- bytecode: output.bytecode,
191
- witness: output.outputWitness,
192
- vk: output.verificationKey.keyAsBytes,
193
- timings: {
194
- witgen: witgenTimer.ms(),
195
- },
196
- });
197
- } else {
198
- const witgenTimer = new Timer();
199
- const vkData = await this.getVkData(output.verificationKey);
200
- const previousKernelData = new PrivateKernelData(output.publicInputs, vkData);
201
- const proofInput = new PrivateKernelInnerCircuitPrivateInputs(previousKernelData, privateCallData);
202
-
203
- pushTestData('private-kernel-inputs-inner', proofInput);
204
- output = generateWitnesses
205
- ? await this.proofCreator.generateInnerOutput(proofInput)
206
- : await this.proofCreator.simulateInner(proofInput);
207
-
208
- executionSteps.push({
209
- functionName: 'private_kernel_inner',
210
- bytecode: output.bytecode,
211
- witness: output.outputWitness,
212
- vk: output.verificationKey.keyAsBytes,
213
- timings: {
214
- witgen: witgenTimer.ms(),
215
- },
216
- });
217
- }
218
184
  firstIteration = false;
219
185
  }
220
186
 
221
- // Final reset: include siloing of note hashes, nullifiers and private logs.
187
+ // Terminal reset+tail. The final reset must be performed exactly once because each tx has at
188
+ // least one nullifier that requires siloing, and siloing cannot be done multiple times.
222
189
  const finalResetBuilder = new PrivateKernelResetPrivateInputsBuilder(
223
190
  output,
224
191
  [],
@@ -226,29 +193,9 @@ export class PrivateKernelExecutionProver {
226
193
  splitCounter,
227
194
  );
228
195
  if (!finalResetBuilder.needsReset()) {
229
- // The final reset must be performed exactly once, because each tx has at least one nullifier that requires
230
- // siloing, and siloing cannot be done multiple times.
231
- // While, in theory, it might be possible to silo note hashes first and then run another reset to silo nullifiers
232
- // and/or private logs, we currently don't have standalone dimensions for the arrays that require siloing. As a
233
- // result, all necessary siloing must be done together in a single reset.
196
+ // Siloing for note hashes, nullifiers, and private logs is dimensioned as one terminal reset.
234
197
  // Refer to the possible combinations of dimensions in private_kernel_reset_config.json.
235
198
  throw new Error('Nothing to reset for the final reset.');
236
- } else {
237
- const witgenTimer = new Timer();
238
- const privateInputs = await finalResetBuilder.build(this.oracle);
239
- output = generateWitnesses
240
- ? await this.proofCreator.generateResetOutput(privateInputs)
241
- : await this.proofCreator.simulateReset(privateInputs);
242
-
243
- executionSteps.push({
244
- functionName: 'private_kernel_reset',
245
- bytecode: output.bytecode,
246
- witness: output.outputWitness,
247
- vk: output.verificationKey.keyAsBytes,
248
- timings: {
249
- witgen: witgenTimer.ms(),
250
- },
251
- });
252
199
  }
253
200
 
254
201
  if (output.publicInputs.feePayer.isZero() && skipFeeEnforcement) {
@@ -257,37 +204,39 @@ export class PrivateKernelExecutionProver {
257
204
  }
258
205
  output.publicInputs.feePayer = new AztecAddress(Fr.MAX_FIELD_VALUE);
259
206
  }
260
- // Private tail.
261
- const vkData = await this.getVkData(output.verificationKey);
262
- const previousKernelData = new PrivateKernelData(output.publicInputs, vkData);
263
-
264
- this.log.debug(
265
- `Calling private kernel tail with hwm ${previousKernelData.publicInputs.minRevertibleSideEffectCounter}`,
266
- );
267
207
 
268
208
  // TODO: Enable padding once we better understand the final amounts to pad to.
269
209
  const paddedSideEffectAmounts = PaddedSideEffectAmounts.empty();
270
210
 
271
211
  // Round the aggregated expirationTimestamp down to reduce precision and avoid leaking which private
272
212
  // functions were called via their exact expiration offsets.
273
- const expirationTimestampUpperBound = computeTxExpirationTimestamp(previousKernelData.publicInputs);
274
-
275
- const privateInputs = new PrivateKernelTailCircuitPrivateInputs(
276
- previousKernelData,
213
+ const expirationTimestampUpperBound = computeTxExpirationTimestamp(output.publicInputs);
214
+
215
+ const resetInputs = await finalResetBuilder.build(this.oracle);
216
+ const mergedInputs = new PrivateKernelResetTailCircuitPrivateInputs(
217
+ resetInputs.previousKernel,
218
+ resetInputs.paddedSideEffects,
219
+ resetInputs.hints,
220
+ resetInputs.dimensions,
277
221
  paddedSideEffectAmounts,
278
222
  expirationTimestampUpperBound,
279
223
  );
280
224
 
225
+ this.log.debug(
226
+ `Calling terminal private kernel reset+tail (${mergedInputs.isForPublic() ? 'to-public' : 'to-rollup'}) with hwm ${output.publicInputs.minRevertibleSideEffectCounter}`,
227
+ );
228
+
281
229
  const witgenTimer = new Timer();
282
230
  const tailOutput = generateWitnesses
283
- ? await this.proofCreator.generateTailOutput(privateInputs)
284
- : await this.proofCreator.simulateTail(privateInputs);
231
+ ? await this.proofCreator.generateResetTailOutput(mergedInputs)
232
+ : await this.proofCreator.simulateResetTail(mergedInputs);
285
233
 
286
234
  executionSteps.push({
287
- functionName: 'private_kernel_tail',
235
+ functionName: mergedInputs.isForPublic() ? 'private_kernel_reset_tail_to_public' : 'private_kernel_reset_tail',
288
236
  bytecode: tailOutput.bytecode,
289
237
  witness: tailOutput.outputWitness,
290
238
  vk: tailOutput.verificationKey.keyAsBytes,
239
+ kind: CircuitKind.Kernel,
291
240
  timings: {
292
241
  witgen: witgenTimer.ms(),
293
242
  },
@@ -319,6 +268,7 @@ export class PrivateKernelExecutionProver {
319
268
  bytecode: hidingOutput.bytecode,
320
269
  witness: hidingOutput.outputWitness,
321
270
  vk: hidingOutput.verificationKey.keyAsBytes,
271
+ kind: CircuitKind.HidingKernel,
322
272
  timings: {
323
273
  witgen: witgenTimer.ms(),
324
274
  },
@@ -328,7 +278,11 @@ export class PrivateKernelExecutionProver {
328
278
  if (profileMode == 'gates' || profileMode == 'full') {
329
279
  for (const entry of executionSteps) {
330
280
  const gateCountTimer = new Timer();
331
- const gateCount = await this.proofCreator.computeGateCountForCircuit(entry.bytecode, entry.functionName);
281
+ const gateCount = await this.proofCreator.computeGateCountForCircuit(
282
+ entry.bytecode,
283
+ entry.functionName,
284
+ entry.kind,
285
+ );
332
286
  entry.gateCount = gateCount;
333
287
  entry.timings.gateCount = gateCountTimer.ms();
334
288
  }
@@ -401,11 +355,65 @@ export class PrivateKernelExecutionProver {
401
355
  );
402
356
  }
403
357
 
404
- private async createPrivateCallData({ publicInputs, vk: vkAsBuffer }: PrivateCallExecutionResult) {
358
+ /**
359
+ * Pops the next app off the execution stack, pushes its nested calls back on (preserving DFS
360
+ * order), records the app's execution step, and returns its constructed `PrivateCallData`.
361
+ * Caller is responsible for ensuring the stack is non-empty.
362
+ */
363
+ private async consumeNextApp(
364
+ executionStack: PrivateCallExecutionResult[],
365
+ executionSteps: PrivateExecutionStep[],
366
+ updatedClassIdHintsMap: Map<string, UpdatedClassIdHints>,
367
+ ): Promise<PrivateCallData> {
368
+ const next = executionStack.pop()!;
369
+ executionStack.push(...[...next.nestedExecutionResults].reverse());
370
+
371
+ const functionName = await this.oracle.getDebugFunctionName(
372
+ next.publicInputs.callContext.contractAddress,
373
+ next.publicInputs.callContext.functionSelector,
374
+ );
375
+
376
+ executionSteps.push({
377
+ functionName: functionName!,
378
+ bytecode: next.acir,
379
+ witness: next.partialWitness,
380
+ vk: next.vk,
381
+ kind: CircuitKind.App,
382
+ timings: {
383
+ witgen: next.profileResult?.timings.witgen ?? 0,
384
+ oracles: next.profileResult?.timings.oracles,
385
+ },
386
+ });
387
+
388
+ return await this.createPrivateCallData(next, updatedClassIdHintsMap);
389
+ }
390
+
391
+ /** Prefetches updated class id hints for all unique contracts in the execution tree in parallel. */
392
+ private async prefetchUpdatedClassIdHints(
393
+ executionResult: PrivateExecutionResult,
394
+ ): Promise<Map<string, UpdatedClassIdHints>> {
395
+ const allAddresses = collectNested([executionResult.entrypoint], exec => [
396
+ exec.publicInputs.callContext.contractAddress,
397
+ ]);
398
+ const uniqueAddresses = uniqueBy(allAddresses, a => a.toString());
399
+ return new Map<string, UpdatedClassIdHints>(
400
+ await Promise.all(
401
+ uniqueAddresses.map(
402
+ async addr =>
403
+ [addr.toString(), await this.oracle.getUpdatedClassIdHints(addr)] as [string, UpdatedClassIdHints],
404
+ ),
405
+ ),
406
+ );
407
+ }
408
+
409
+ private async createPrivateCallData(
410
+ { publicInputs, vk: vkAsBuffer }: PrivateCallExecutionResult,
411
+ updatedClassIdHintsMap: Map<string, UpdatedClassIdHints>,
412
+ ) {
405
413
  const { contractAddress, functionSelector } = publicInputs.callContext;
406
414
 
407
- const vkAsFields = await vkAsFieldsMegaHonk(vkAsBuffer);
408
- const vk = await VerificationKeyAsFields.fromKey(vkAsFields);
415
+ const vkFields = await vkAsFields(vkAsBuffer, CircuitKind.App);
416
+ const vk = await VerificationKeyAsFields.fromKey(vkFields);
409
417
 
410
418
  const { currentContractClassId, publicKeys, saltedInitializationHash } =
411
419
  await this.oracle.getContractAddressPreimage(contractAddress);
@@ -417,7 +425,7 @@ export class PrivateKernelExecutionProver {
417
425
  const { artifactHash: contractClassArtifactHash, publicBytecodeCommitment: contractClassPublicBytecodeCommitment } =
418
426
  await this.oracle.getContractClassIdPreimage(currentContractClassId);
419
427
 
420
- const updatedClassIdHints = await this.oracle.getUpdatedClassIdHints(contractAddress);
428
+ const updatedClassIdHints = updatedClassIdHintsMap.get(contractAddress.toString())!;
421
429
 
422
430
  return PrivateCallData.from({
423
431
  publicInputs,
@@ -432,4 +440,215 @@ export class PrivateKernelExecutionProver {
432
440
  }),
433
441
  });
434
442
  }
443
+
444
+ /**
445
+ * Runs one batched kernel iteration. Picks the right circuit variant based on whether this is
446
+ * the first iteration or a later one and the size of the batch.
447
+ */
448
+ private async runBatchedKernel(args: {
449
+ apps: PrivateCallData[];
450
+ firstIteration: boolean;
451
+ previousOutput: PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>;
452
+ txRequest: TxRequest;
453
+ isPrivateOnlyTx: boolean;
454
+ minRevertibleSideEffectCounter: number;
455
+ executionSteps: PrivateExecutionStep[];
456
+ generateWitnesses: boolean;
457
+ }): Promise<PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>> {
458
+ const {
459
+ apps,
460
+ firstIteration,
461
+ previousOutput,
462
+ txRequest,
463
+ isPrivateOnlyTx,
464
+ minRevertibleSideEffectCounter,
465
+ executionSteps,
466
+ generateWitnesses,
467
+ } = args;
468
+
469
+ const witgenTimer = new Timer();
470
+ let output: PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>;
471
+ let functionName: string;
472
+
473
+ if (firstIteration) {
474
+ const vkTreeRoot = getVKTreeRoot();
475
+ switch (apps.length) {
476
+ case 1: {
477
+ const proofInput = new PrivateKernelInitCircuitPrivateInputs(
478
+ txRequest,
479
+ vkTreeRoot,
480
+ ProtocolContractsList,
481
+ apps[0],
482
+ isPrivateOnlyTx,
483
+ minRevertibleSideEffectCounter,
484
+ );
485
+ this.log.debug(`Calling private kernel init with isPrivateOnly ${isPrivateOnlyTx}`);
486
+ pushTestData('private-kernel-inputs-init', proofInput);
487
+ output = generateWitnesses
488
+ ? await this.proofCreator.generateInitOutput(proofInput)
489
+ : await this.proofCreator.simulateInit(proofInput);
490
+ functionName = 'private_kernel_init';
491
+ break;
492
+ }
493
+ case 2: {
494
+ const proofInput = new PrivateKernelInit2CircuitPrivateInputs(
495
+ txRequest,
496
+ vkTreeRoot,
497
+ ProtocolContractsList,
498
+ apps[0],
499
+ apps[1],
500
+ isPrivateOnlyTx,
501
+ minRevertibleSideEffectCounter,
502
+ );
503
+ this.log.debug(`Calling private kernel init_2 with isPrivateOnly ${isPrivateOnlyTx}`);
504
+ pushTestData('private-kernel-inputs-init-2', proofInput);
505
+ output = generateWitnesses
506
+ ? await this.proofCreator.generateInit2Output(proofInput)
507
+ : await this.proofCreator.simulateInit2(proofInput);
508
+ functionName = 'private_kernel_init_2';
509
+ break;
510
+ }
511
+ case 3: {
512
+ const proofInput = new PrivateKernelInit3CircuitPrivateInputs(
513
+ txRequest,
514
+ vkTreeRoot,
515
+ ProtocolContractsList,
516
+ apps[0],
517
+ apps[1],
518
+ apps[2],
519
+ isPrivateOnlyTx,
520
+ minRevertibleSideEffectCounter,
521
+ );
522
+ this.log.debug(`Calling private kernel init_3 with isPrivateOnly ${isPrivateOnlyTx}`);
523
+ pushTestData('private-kernel-inputs-init-3', proofInput);
524
+ output = generateWitnesses
525
+ ? await this.proofCreator.generateInit3Output(proofInput)
526
+ : await this.proofCreator.simulateInit3(proofInput);
527
+ functionName = 'private_kernel_init_3';
528
+ break;
529
+ }
530
+ case 4: {
531
+ const proofInput = new PrivateKernelInit4CircuitPrivateInputs(
532
+ txRequest,
533
+ vkTreeRoot,
534
+ ProtocolContractsList,
535
+ apps[0],
536
+ apps[1],
537
+ apps[2],
538
+ apps[3],
539
+ isPrivateOnlyTx,
540
+ minRevertibleSideEffectCounter,
541
+ );
542
+ this.log.debug(`Calling private kernel init_4 with isPrivateOnly ${isPrivateOnlyTx}`);
543
+ pushTestData('private-kernel-inputs-init-4', proofInput);
544
+ output = generateWitnesses
545
+ ? await this.proofCreator.generateInit4Output(proofInput)
546
+ : await this.proofCreator.simulateInit4(proofInput);
547
+ functionName = 'private_kernel_init_4';
548
+ break;
549
+ }
550
+ case 5: {
551
+ const proofInput = new PrivateKernelInit5CircuitPrivateInputs(
552
+ txRequest,
553
+ vkTreeRoot,
554
+ ProtocolContractsList,
555
+ apps[0],
556
+ apps[1],
557
+ apps[2],
558
+ apps[3],
559
+ apps[4],
560
+ isPrivateOnlyTx,
561
+ minRevertibleSideEffectCounter,
562
+ );
563
+ this.log.debug(`Calling private kernel init_5 with isPrivateOnly ${isPrivateOnlyTx}`);
564
+ pushTestData('private-kernel-inputs-init-5', proofInput);
565
+ output = generateWitnesses
566
+ ? await this.proofCreator.generateInit5Output(proofInput)
567
+ : await this.proofCreator.simulateInit5(proofInput);
568
+ functionName = 'private_kernel_init_5';
569
+ break;
570
+ }
571
+ default:
572
+ throw new Error(`Unsupported init kernel batch size: ${apps.length}`);
573
+ }
574
+ } else {
575
+ const vkData = await this.getVkData(previousOutput.verificationKey);
576
+ const previousKernelData = new PrivateKernelData(previousOutput.publicInputs, vkData);
577
+ switch (apps.length) {
578
+ case 1: {
579
+ const proofInput = new PrivateKernelInnerCircuitPrivateInputs(previousKernelData, apps[0]);
580
+ pushTestData('private-kernel-inputs-inner', proofInput);
581
+ output = generateWitnesses
582
+ ? await this.proofCreator.generateInnerOutput(proofInput)
583
+ : await this.proofCreator.simulateInner(proofInput);
584
+ functionName = 'private_kernel_inner';
585
+ break;
586
+ }
587
+ case 2: {
588
+ const proofInput = new PrivateKernelInner2CircuitPrivateInputs(previousKernelData, apps[0], apps[1]);
589
+ pushTestData('private-kernel-inputs-inner-2', proofInput);
590
+ output = generateWitnesses
591
+ ? await this.proofCreator.generateInner2Output(proofInput)
592
+ : await this.proofCreator.simulateInner2(proofInput);
593
+ functionName = 'private_kernel_inner_2';
594
+ break;
595
+ }
596
+ case 3: {
597
+ const proofInput = new PrivateKernelInner3CircuitPrivateInputs(previousKernelData, apps[0], apps[1], apps[2]);
598
+ pushTestData('private-kernel-inputs-inner-3', proofInput);
599
+ output = generateWitnesses
600
+ ? await this.proofCreator.generateInner3Output(proofInput)
601
+ : await this.proofCreator.simulateInner3(proofInput);
602
+ functionName = 'private_kernel_inner_3';
603
+ break;
604
+ }
605
+ case 4: {
606
+ const proofInput = new PrivateKernelInner4CircuitPrivateInputs(
607
+ previousKernelData,
608
+ apps[0],
609
+ apps[1],
610
+ apps[2],
611
+ apps[3],
612
+ );
613
+ pushTestData('private-kernel-inputs-inner-4', proofInput);
614
+ output = generateWitnesses
615
+ ? await this.proofCreator.generateInner4Output(proofInput)
616
+ : await this.proofCreator.simulateInner4(proofInput);
617
+ functionName = 'private_kernel_inner_4';
618
+ break;
619
+ }
620
+ case 5: {
621
+ const proofInput = new PrivateKernelInner5CircuitPrivateInputs(
622
+ previousKernelData,
623
+ apps[0],
624
+ apps[1],
625
+ apps[2],
626
+ apps[3],
627
+ apps[4],
628
+ );
629
+ pushTestData('private-kernel-inputs-inner-5', proofInput);
630
+ output = generateWitnesses
631
+ ? await this.proofCreator.generateInner5Output(proofInput)
632
+ : await this.proofCreator.simulateInner5(proofInput);
633
+ functionName = 'private_kernel_inner_5';
634
+ break;
635
+ }
636
+ default:
637
+ throw new Error(`Unsupported inner kernel batch size: ${apps.length}`);
638
+ }
639
+ }
640
+
641
+ executionSteps.push({
642
+ functionName,
643
+ bytecode: output.bytecode,
644
+ witness: output.outputWitness,
645
+ vk: output.verificationKey.keyAsBytes,
646
+ kind: CircuitKind.Kernel,
647
+ timings: {
648
+ witgen: witgenTimer.ms(),
649
+ },
650
+ });
651
+
652
+ return output;
653
+ }
435
654
  }