@aztec/pxe 0.0.1-commit.24de95ac → 0.0.1-commit.2606882

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