@aztec/pxe 0.0.1-commit.d431d1c → 0.0.1-commit.d58ff9d0

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 (523) hide show
  1. package/dest/bin/check_oracle_version.js +40 -111
  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 +26 -14
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +128 -26
  14. package/dest/config/index.d.ts +11 -2
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +18 -2
  17. package/dest/config/package_info.js +1 -1
  18. package/dest/contract/contract_class_service.d.ts +31 -0
  19. package/dest/contract/contract_class_service.d.ts.map +1 -0
  20. package/dest/contract/contract_class_service.js +68 -0
  21. package/dest/contract/contract_sync_service.d.ts +48 -0
  22. package/dest/contract/contract_sync_service.d.ts.map +1 -0
  23. package/dest/contract/contract_sync_service.js +116 -0
  24. package/dest/contract/helpers.d.ts +7 -0
  25. package/dest/contract/helpers.d.ts.map +1 -0
  26. package/dest/contract/helpers.js +20 -0
  27. package/dest/contract/skip_sync_contracts.d.ts +11 -0
  28. package/dest/contract/skip_sync_contracts.d.ts.map +1 -0
  29. package/dest/contract/skip_sync_contracts.js +18 -0
  30. package/dest/contract_function_simulator/anchored_contract_data.d.ts +36 -0
  31. package/dest/contract_function_simulator/anchored_contract_data.d.ts.map +1 -0
  32. package/dest/contract_function_simulator/anchored_contract_data.js +54 -0
  33. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts +39 -0
  34. package/dest/contract_function_simulator/aztec_node_read_cache.d.ts.map +1 -0
  35. package/dest/contract_function_simulator/aztec_node_read_cache.js +60 -0
  36. package/dest/contract_function_simulator/contract_function_simulator.d.ts +72 -36
  37. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  38. package/dest/contract_function_simulator/contract_function_simulator.js +265 -98
  39. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  40. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  41. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  42. package/dest/contract_function_simulator/execution_note_cache.d.ts +4 -10
  43. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  44. package/dest/contract_function_simulator/execution_note_cache.js +8 -28
  45. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +7 -11
  46. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  47. package/dest/contract_function_simulator/execution_tagging_index_cache.js +19 -15
  48. package/dest/contract_function_simulator/index.d.ts +26 -5
  49. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  50. package/dest/contract_function_simulator/index.js +11 -3
  51. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +29 -0
  52. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  53. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +30 -0
  54. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts +9 -0
  55. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.d.ts.map +1 -0
  56. package/dest/contract_function_simulator/noir-structs/contract_class_log_data.js +1 -0
  57. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts +7 -0
  58. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.d.ts.map +1 -0
  59. package/dest/contract_function_simulator/noir-structs/embedded_curve_point.js +1 -0
  60. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  61. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  62. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  63. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -5
  64. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  65. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +10 -11
  66. package/dest/contract_function_simulator/noir-structs/fact.d.ts +16 -0
  67. package/dest/contract_function_simulator/noir-structs/fact.d.ts.map +1 -0
  68. package/dest/contract_function_simulator/noir-structs/fact.js +6 -0
  69. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts +27 -0
  70. package/dest/contract_function_simulator/noir-structs/fact_collection.d.ts.map +1 -0
  71. package/dest/contract_function_simulator/noir-structs/fact_collection.js +31 -0
  72. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +19 -10
  73. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  74. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +12 -24
  75. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +11 -9
  76. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -1
  77. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +2 -63
  78. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  79. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  80. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  81. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +4 -6
  82. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  83. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +9 -13
  84. package/dest/contract_function_simulator/noir-structs/option.d.ts +59 -0
  85. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  86. package/dest/contract_function_simulator/noir-structs/option.js +67 -0
  87. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts +11 -0
  88. package/dest/contract_function_simulator/noir-structs/origin_block.d.ts.map +1 -0
  89. package/dest/contract_function_simulator/noir-structs/origin_block.js +5 -0
  90. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts +11 -0
  91. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.d.ts.map +1 -0
  92. package/dest/contract_function_simulator/noir-structs/pending_tagged_log.js +4 -0
  93. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +8 -0
  94. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  95. package/dest/contract_function_simulator/noir-structs/provided_secret.js +1 -0
  96. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts +28 -0
  97. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.d.ts.map +1 -0
  98. package/dest/contract_function_simulator/noir-structs/resolved_tagging_strategy.js +50 -0
  99. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts +19 -0
  100. package/dest/contract_function_simulator/noir-structs/resolved_tx.d.ts.map +1 -0
  101. package/dest/contract_function_simulator/noir-structs/resolved_tx.js +9 -0
  102. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts +15 -0
  103. package/dest/contract_function_simulator/noir-structs/tx_effect_data.d.ts.map +1 -0
  104. package/dest/contract_function_simulator/noir-structs/tx_effect_data.js +5 -0
  105. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +6 -11
  106. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  107. package/dest/contract_function_simulator/noir-structs/utility_context.js +1 -20
  108. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +21 -0
  109. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  110. package/dest/contract_function_simulator/oracle/acir_callback.js +115 -0
  111. package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
  112. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
  113. package/dest/contract_function_simulator/oracle/index.js +1 -1
  114. package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -95
  115. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  116. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  117. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts +39 -0
  118. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.d.ts.map +1 -0
  119. package/dest/contract_function_simulator/oracle/legacy_oracle_registry.js +107 -0
  120. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -14
  121. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  122. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +1 -24
  123. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  124. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  125. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  126. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +139 -0
  127. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  128. package/dest/contract_function_simulator/oracle/oracle_registry.js +1016 -0
  129. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +274 -0
  130. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  131. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +1243 -0
  132. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -22
  133. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  134. package/dest/contract_function_simulator/oracle/private_execution.js +7 -43
  135. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +88 -95
  136. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  137. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +268 -116
  138. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +215 -86
  139. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  140. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +625 -204
  141. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  142. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  143. package/dest/contract_function_simulator/pick_notes.js +20 -3
  144. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  145. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  146. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  147. package/dest/contract_logging.d.ts +27 -0
  148. package/dest/contract_logging.d.ts.map +1 -0
  149. package/dest/contract_logging.js +38 -0
  150. package/dest/debug/pxe_debug_utils.d.ts +19 -10
  151. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  152. package/dest/debug/pxe_debug_utils.js +22 -17
  153. package/dest/entrypoints/client/bundle/index.d.ts +4 -1
  154. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  155. package/dest/entrypoints/client/bundle/index.js +3 -0
  156. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  157. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  158. package/dest/entrypoints/client/bundle/utils.js +45 -12
  159. package/dest/entrypoints/client/lazy/index.d.ts +4 -1
  160. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  161. package/dest/entrypoints/client/lazy/index.js +3 -0
  162. package/dest/entrypoints/client/lazy/utils.d.ts +3 -3
  163. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  164. package/dest/entrypoints/client/lazy/utils.js +46 -13
  165. package/dest/entrypoints/client/store.d.ts +14 -0
  166. package/dest/entrypoints/client/store.d.ts.map +1 -0
  167. package/dest/entrypoints/client/store.js +42 -0
  168. package/dest/entrypoints/pxe_creation_options.d.ts +18 -3
  169. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  170. package/dest/entrypoints/pxe_creation_options.js +3 -1
  171. package/dest/entrypoints/server/index.d.ts +8 -2
  172. package/dest/entrypoints/server/index.d.ts.map +1 -1
  173. package/dest/entrypoints/server/index.js +6 -1
  174. package/dest/entrypoints/server/store.d.ts +18 -0
  175. package/dest/entrypoints/server/store.d.ts.map +1 -0
  176. package/dest/entrypoints/server/store.js +28 -0
  177. package/dest/entrypoints/server/utils.d.ts +4 -3
  178. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  179. package/dest/entrypoints/server/utils.js +54 -15
  180. package/dest/error_enriching.d.ts +5 -3
  181. package/dest/error_enriching.d.ts.map +1 -1
  182. package/dest/error_enriching.js +13 -11
  183. package/dest/events/event_service.d.ts +16 -8
  184. package/dest/events/event_service.d.ts.map +1 -1
  185. package/dest/events/event_service.js +46 -14
  186. package/dest/events/private_event_filter_validator.d.ts +3 -2
  187. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  188. package/dest/events/private_event_filter_validator.js +15 -0
  189. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  190. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  191. package/dest/hooks/authorize_utility_call.js +4 -0
  192. package/dest/hooks/execution_hooks.d.ts +62 -0
  193. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  194. package/dest/hooks/execution_hooks.js +9 -0
  195. package/dest/hooks/index.d.ts +5 -0
  196. package/dest/hooks/index.d.ts.map +1 -0
  197. package/dest/hooks/index.js +2 -0
  198. package/dest/hooks/resolve_custom_request.d.ts +23 -0
  199. package/dest/hooks/resolve_custom_request.d.ts.map +1 -0
  200. package/dest/hooks/resolve_custom_request.js +3 -0
  201. package/dest/hooks/resolve_tagging_secret_strategy.d.ts +50 -0
  202. package/dest/hooks/resolve_tagging_secret_strategy.d.ts.map +1 -0
  203. package/dest/hooks/resolve_tagging_secret_strategy.js +3 -0
  204. package/dest/job_coordinator/job_coordinator.d.ts +3 -2
  205. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -1
  206. package/dest/job_coordinator/job_coordinator.js +3 -2
  207. package/dest/logs/log_service.d.ts +17 -13
  208. package/dest/logs/log_service.d.ts.map +1 -1
  209. package/dest/logs/log_service.js +201 -91
  210. package/dest/messages/tx_resolver_service.d.ts +17 -0
  211. package/dest/messages/tx_resolver_service.d.ts.map +1 -0
  212. package/dest/messages/tx_resolver_service.js +60 -0
  213. package/dest/notes/note_service.d.ts +31 -9
  214. package/dest/notes/note_service.d.ts.map +1 -1
  215. package/dest/notes/note_service.js +95 -70
  216. package/dest/notes_filter.d.ts +24 -0
  217. package/dest/notes_filter.d.ts.map +1 -0
  218. package/dest/notes_filter.js +4 -0
  219. package/dest/oracle_version.d.ts +4 -3
  220. package/dest/oracle_version.d.ts.map +1 -1
  221. package/dest/oracle_version.js +20 -9
  222. package/dest/private_kernel/batch_planner.d.ts +47 -0
  223. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  224. package/dest/private_kernel/batch_planner.js +104 -0
  225. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  226. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  227. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  228. package/dest/private_kernel/hints/index.d.ts +1 -1
  229. package/dest/private_kernel/hints/index.js +1 -1
  230. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +4 -3
  231. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -1
  232. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +135 -70
  233. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  234. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  235. package/dest/private_kernel/hints/test_utils.js +202 -0
  236. package/dest/private_kernel/private_kernel_execution_prover.d.ts +7 -2
  237. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  238. package/dest/private_kernel/private_kernel_execution_prover.js +209 -87
  239. package/dest/private_kernel/private_kernel_oracle.d.ts +17 -11
  240. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  241. package/dest/private_kernel/private_kernel_oracle.js +47 -29
  242. package/dest/pxe.d.ts +228 -66
  243. package/dest/pxe.d.ts.map +1 -1
  244. package/dest/pxe.js +418 -231
  245. package/dest/storage/address_store/address_store.d.ts +1 -1
  246. package/dest/storage/address_store/address_store.d.ts.map +1 -1
  247. package/dest/storage/address_store/address_store.js +12 -11
  248. package/dest/storage/allowed_scopes.d.ts +6 -0
  249. package/dest/storage/allowed_scopes.d.ts.map +1 -0
  250. package/dest/storage/allowed_scopes.js +7 -0
  251. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +12 -1
  252. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  253. package/dest/storage/anchor_block_store/anchor_block_store.js +12 -3
  254. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  255. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  256. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  257. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  258. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  259. package/dest/storage/backwards_compatibility_tests/schema_tests.js +671 -0
  260. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  261. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  262. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  263. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  264. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  265. package/dest/storage/capsule_store/capsule_service.js +47 -0
  266. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  267. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  268. package/dest/storage/capsule_store/capsule_store.js +42 -36
  269. package/dest/storage/capsule_store/index.d.ts +2 -1
  270. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  271. package/dest/storage/capsule_store/index.js +1 -0
  272. package/dest/storage/contract_store/contract_store.d.ts +63 -34
  273. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  274. package/dest/storage/contract_store/contract_store.js +191 -146
  275. package/dest/storage/fact_store/fact_service.d.ts +22 -0
  276. package/dest/storage/fact_store/fact_service.d.ts.map +1 -0
  277. package/dest/storage/fact_store/fact_service.js +45 -0
  278. package/dest/storage/fact_store/fact_store.d.ts +95 -0
  279. package/dest/storage/fact_store/fact_store.d.ts.map +1 -0
  280. package/dest/storage/fact_store/fact_store.js +408 -0
  281. package/dest/storage/fact_store/fact_store_keys.d.ts +34 -0
  282. package/dest/storage/fact_store/fact_store_keys.d.ts.map +1 -0
  283. package/dest/storage/fact_store/fact_store_keys.js +50 -0
  284. package/dest/storage/fact_store/index.d.ts +6 -0
  285. package/dest/storage/fact_store/index.d.ts.map +1 -0
  286. package/dest/storage/fact_store/index.js +4 -0
  287. package/dest/storage/fact_store/origin_state.d.ts +59 -0
  288. package/dest/storage/fact_store/origin_state.d.ts.map +1 -0
  289. package/dest/storage/fact_store/origin_state.js +60 -0
  290. package/dest/storage/fact_store/stored_fact.d.ts +32 -0
  291. package/dest/storage/fact_store/stored_fact.d.ts.map +1 -0
  292. package/dest/storage/fact_store/stored_fact.js +64 -0
  293. package/dest/storage/index.d.ts +3 -2
  294. package/dest/storage/index.d.ts.map +1 -1
  295. package/dest/storage/index.js +2 -1
  296. package/dest/storage/metadata.d.ts +2 -2
  297. package/dest/storage/metadata.d.ts.map +1 -1
  298. package/dest/storage/metadata.js +1 -1
  299. package/dest/storage/note_store/note_store.d.ts +63 -56
  300. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  301. package/dest/storage/note_store/note_store.js +321 -266
  302. package/dest/storage/note_store/stored_note.d.ts +11 -0
  303. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  304. package/dest/storage/note_store/stored_note.js +27 -0
  305. package/dest/storage/open_pxe_stores.d.ts +35 -0
  306. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  307. package/dest/storage/open_pxe_stores.js +29 -0
  308. package/dest/storage/private_event_store/private_event_store.d.ts +26 -16
  309. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  310. package/dest/storage/private_event_store/private_event_store.js +214 -163
  311. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  312. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  313. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  314. package/dest/storage/store_identity.d.ts +35 -0
  315. package/dest/storage/store_identity.d.ts.map +1 -0
  316. package/dest/storage/store_identity.js +44 -0
  317. package/dest/storage/tagging_store/index.d.ts +2 -2
  318. package/dest/storage/tagging_store/index.d.ts.map +1 -1
  319. package/dest/storage/tagging_store/index.js +1 -1
  320. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  321. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  322. package/dest/storage/tagging_store/recipient_tagging_store.js +31 -19
  323. package/dest/storage/tagging_store/sender_tagging_store.d.ts +45 -28
  324. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  325. package/dest/storage/tagging_store/sender_tagging_store.js +270 -137
  326. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts +51 -0
  327. package/dest/storage/tagging_store/tagging_secret_sources_store.d.ts.map +1 -0
  328. package/dest/storage/tagging_store/tagging_secret_sources_store.js +105 -0
  329. package/dest/tagging/constants.d.ts +3 -2
  330. package/dest/tagging/constants.d.ts.map +1 -1
  331. package/dest/tagging/constants.js +28 -10
  332. package/dest/tagging/get_all_logs_by_tags.d.ts +48 -0
  333. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  334. package/dest/tagging/get_all_logs_by_tags.js +59 -0
  335. package/dest/tagging/index.d.ts +8 -6
  336. package/dest/tagging/index.d.ts.map +1 -1
  337. package/dest/tagging/index.js +6 -4
  338. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  339. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  340. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  341. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +74 -0
  342. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  343. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +238 -0
  344. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  345. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  346. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  347. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  348. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  349. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  350. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +5 -9
  351. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  352. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +32 -14
  353. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +13 -7
  354. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  355. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +44 -16
  356. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +6 -7
  357. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  358. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +46 -27
  359. package/dest/tagging/testing/tag_query_test_utils.d.ts +6 -0
  360. package/dest/tagging/testing/tag_query_test_utils.d.ts.map +1 -0
  361. package/dest/tagging/testing/tag_query_test_utils.js +10 -0
  362. package/package.json +29 -17
  363. package/src/bin/check_oracle_version.ts +46 -134
  364. package/src/bin/index.ts +1 -0
  365. package/src/bin/oracle_version_helpers.ts +54 -0
  366. package/src/block_synchronizer/block_stream_source.ts +42 -0
  367. package/src/block_synchronizer/block_synchronizer.ts +154 -48
  368. package/src/config/index.ts +22 -1
  369. package/src/config/package_info.ts +1 -1
  370. package/src/contract/contract_class_service.ts +83 -0
  371. package/src/contract/contract_sync_service.ts +176 -0
  372. package/src/contract/helpers.ts +35 -0
  373. package/src/contract/skip_sync_contracts.ts +23 -0
  374. package/src/contract_function_simulator/anchored_contract_data.ts +74 -0
  375. package/src/contract_function_simulator/aztec_node_read_cache.ts +89 -0
  376. package/src/contract_function_simulator/contract_function_simulator.ts +463 -162
  377. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  378. package/src/contract_function_simulator/execution_note_cache.ts +8 -29
  379. package/src/contract_function_simulator/execution_tagging_index_cache.ts +19 -18
  380. package/src/contract_function_simulator/index.ts +89 -4
  381. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +43 -0
  382. package/src/contract_function_simulator/noir-structs/contract_class_log_data.ts +9 -0
  383. package/src/contract_function_simulator/noir-structs/embedded_curve_point.ts +4 -0
  384. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  385. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +11 -10
  386. package/src/contract_function_simulator/noir-structs/fact.ts +13 -0
  387. package/src/contract_function_simulator/noir-structs/fact_collection.ts +64 -0
  388. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +27 -20
  389. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +14 -64
  390. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  391. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +7 -12
  392. package/src/contract_function_simulator/noir-structs/option.ts +75 -0
  393. package/src/contract_function_simulator/noir-structs/origin_block.ts +8 -0
  394. package/src/contract_function_simulator/noir-structs/pending_tagged_log.ts +12 -0
  395. package/src/contract_function_simulator/noir-structs/provided_secret.ts +5 -0
  396. package/src/contract_function_simulator/noir-structs/resolved_tagging_strategy.ts +66 -0
  397. package/src/contract_function_simulator/noir-structs/resolved_tx.ts +19 -0
  398. package/src/contract_function_simulator/noir-structs/tx_effect_data.ts +16 -0
  399. package/src/contract_function_simulator/noir-structs/utility_context.ts +5 -17
  400. package/src/contract_function_simulator/oracle/acir_callback.ts +154 -0
  401. package/src/contract_function_simulator/oracle/index.ts +1 -15
  402. package/src/contract_function_simulator/oracle/interfaces.ts +11 -167
  403. package/src/contract_function_simulator/oracle/legacy_oracle_registry.ts +147 -0
  404. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +6 -21
  405. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  406. package/src/contract_function_simulator/oracle/oracle_registry.ts +710 -0
  407. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +1052 -0
  408. package/src/contract_function_simulator/oracle/private_execution.ts +7 -67
  409. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +340 -213
  410. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +966 -275
  411. package/src/contract_function_simulator/pick_notes.ts +22 -3
  412. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  413. package/src/contract_logging.ts +52 -0
  414. package/src/debug/pxe_debug_utils.ts +55 -18
  415. package/src/entrypoints/client/bundle/index.ts +3 -0
  416. package/src/entrypoints/client/bundle/utils.ts +46 -21
  417. package/src/entrypoints/client/lazy/index.ts +3 -0
  418. package/src/entrypoints/client/lazy/utils.ts +48 -22
  419. package/src/entrypoints/client/store.ts +54 -0
  420. package/src/entrypoints/pxe_creation_options.ts +23 -2
  421. package/src/entrypoints/server/index.ts +8 -1
  422. package/src/entrypoints/server/store.ts +47 -0
  423. package/src/entrypoints/server/utils.ts +61 -34
  424. package/src/error_enriching.ts +27 -11
  425. package/src/events/event_service.ts +70 -24
  426. package/src/events/private_event_filter_validator.ts +21 -1
  427. package/src/hooks/authorize_utility_call.ts +44 -0
  428. package/src/hooks/execution_hooks.ts +68 -0
  429. package/src/hooks/index.ts +13 -0
  430. package/src/hooks/resolve_custom_request.ts +24 -0
  431. package/src/hooks/resolve_tagging_secret_strategy.ts +60 -0
  432. package/src/job_coordinator/job_coordinator.ts +4 -3
  433. package/src/logs/log_service.ts +248 -152
  434. package/src/messages/tx_resolver_service.ts +69 -0
  435. package/src/notes/note_service.ts +137 -101
  436. package/src/notes_filter.ts +24 -0
  437. package/src/oracle_version.ts +20 -9
  438. package/src/private_kernel/batch_planner.ts +168 -0
  439. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  440. package/src/private_kernel/hints/index.ts +1 -1
  441. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +176 -119
  442. package/src/private_kernel/hints/test_utils.ts +318 -0
  443. package/src/private_kernel/private_kernel_execution_prover.ts +347 -123
  444. package/src/private_kernel/private_kernel_oracle.ts +65 -36
  445. package/src/pxe.ts +732 -297
  446. package/src/storage/address_store/address_store.ts +15 -15
  447. package/src/storage/allowed_scopes.ts +14 -0
  448. package/src/storage/anchor_block_store/anchor_block_store.ts +12 -2
  449. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  450. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  451. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  452. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  453. package/src/storage/backwards_compatibility_tests/__snapshots__/FactStore.json +40 -0
  454. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  455. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
  456. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
  457. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  458. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +26 -0
  459. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +30 -0
  460. package/src/storage/backwards_compatibility_tests/__snapshots__/TaggingSecretSourcesStore.json +30 -0
  461. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +117 -0
  462. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  463. package/src/storage/backwards_compatibility_tests/schema_tests.ts +803 -0
  464. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  465. package/src/storage/capsule_store/capsule_service.ts +85 -0
  466. package/src/storage/capsule_store/capsule_store.ts +52 -34
  467. package/src/storage/capsule_store/index.ts +1 -0
  468. package/src/storage/contract_store/contract_store.ts +247 -185
  469. package/src/storage/fact_store/fact_service.ts +69 -0
  470. package/src/storage/fact_store/fact_store.ts +487 -0
  471. package/src/storage/fact_store/fact_store_keys.ts +75 -0
  472. package/src/storage/fact_store/index.ts +15 -0
  473. package/src/storage/fact_store/origin_state.ts +84 -0
  474. package/src/storage/fact_store/stored_fact.ts +80 -0
  475. package/src/storage/index.ts +2 -1
  476. package/src/storage/metadata.ts +1 -1
  477. package/src/storage/note_store/note_store.ts +363 -324
  478. package/src/storage/note_store/stored_note.ts +26 -0
  479. package/src/storage/open_pxe_stores.ts +52 -0
  480. package/src/storage/private_event_store/private_event_store.ts +268 -210
  481. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  482. package/src/storage/store_identity.ts +72 -0
  483. package/src/storage/tagging_store/index.ts +1 -1
  484. package/src/storage/tagging_store/recipient_tagging_store.ts +34 -24
  485. package/src/storage/tagging_store/sender_tagging_store.ts +333 -155
  486. package/src/storage/tagging_store/tagging_secret_sources_store.ts +138 -0
  487. package/src/tagging/constants.ts +30 -10
  488. package/src/tagging/get_all_logs_by_tags.ts +120 -0
  489. package/src/tagging/index.ts +7 -5
  490. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  491. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +358 -0
  492. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +4 -4
  493. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  494. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +54 -17
  495. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +47 -29
  496. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +42 -29
  497. package/src/tagging/testing/tag_query_test_utils.ts +11 -0
  498. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -58
  499. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  500. package/dest/contract_function_simulator/oracle/oracle.js +0 -346
  501. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +0 -6
  502. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +0 -1
  503. package/dest/contract_function_simulator/proxied_contract_data_source.js +0 -80
  504. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  505. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  506. package/dest/storage/tagging_store/sender_address_book_store.d.ts +0 -14
  507. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +0 -1
  508. package/dest/storage/tagging_store/sender_address_book_store.js +0 -30
  509. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
  510. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  511. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
  512. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
  513. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  514. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -29
  515. package/dest/tree_membership/tree_membership_service.d.ts +0 -50
  516. package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
  517. package/dest/tree_membership/tree_membership_service.js +0 -75
  518. package/src/contract_function_simulator/oracle/oracle.ts +0 -607
  519. package/src/contract_function_simulator/proxied_contract_data_source.ts +0 -83
  520. package/src/storage/tagging_store/sender_address_book_store.ts +0 -42
  521. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -133
  522. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -43
  523. package/src/tree_membership/tree_membership_service.ts +0 -97
@@ -10,7 +10,7 @@ import {
10
10
  import { makeTuple } from '@aztec/foundation/array';
11
11
  import { padArrayEnd } from '@aztec/foundation/collection';
12
12
  import type { Fr } from '@aztec/foundation/curves/bn254';
13
- import { type Tuple, assertLength } from '@aztec/foundation/serialize';
13
+ import { assertLength } from '@aztec/foundation/serialize';
14
14
  import { MembershipWitness } from '@aztec/foundation/trees';
15
15
  import { privateKernelResetDimensionsConfig } from '@aztec/noir-protocol-circuits-types/client';
16
16
  import {
@@ -26,17 +26,16 @@ import {
26
26
  type PrivateKernelSimulateOutput,
27
27
  ReadRequestActionEnum,
28
28
  ReadRequestResetActions,
29
- type ScopedKeyValidationRequestAndGenerator,
30
- ScopedNoteHash,
31
- ScopedNullifier,
32
- ScopedReadRequest,
29
+ type ScopedKeyValidationRequestAndSeparator,
33
30
  TransientDataSquashingHint,
34
31
  buildNoteHashReadRequestHintsFromResetActions,
35
32
  buildNullifierReadRequestHintsFromResetActions,
36
33
  buildTransientDataHints,
34
+ countSquashedLogs,
37
35
  findPrivateKernelResetDimensions,
38
36
  getNoteHashReadRequestResetActions,
39
37
  getNullifierReadRequestResetActions,
38
+ kernelStateIsForPublic,
40
39
  privateKernelResetDimensionNames,
41
40
  } from '@aztec/stdlib/kernel';
42
41
  import { type PrivateCallExecutionResult, collectNested } from '@aztec/stdlib/tx';
@@ -44,15 +43,6 @@ import { VkData } from '@aztec/stdlib/vks';
44
43
 
45
44
  import type { PrivateKernelOracle } from '../private_kernel_oracle.js';
46
45
 
47
- function collectNestedReadRequests<N extends number>(
48
- executionStack: PrivateCallExecutionResult[],
49
- extractReadRequests: (execution: PrivateCallExecutionResult) => ClaimedLengthArray<ScopedReadRequest, N>,
50
- ): ScopedReadRequest[] {
51
- return collectNested(executionStack, executionResult => {
52
- return extractReadRequests(executionResult).getActiveItems();
53
- });
54
- }
55
-
56
46
  function getNullifierMembershipWitnessResolver(oracle: PrivateKernelOracle) {
57
47
  return async (nullifier: Fr) => {
58
48
  const res = await oracle.getNullifierMembershipWitness(nullifier);
@@ -68,9 +58,9 @@ function getNullifierMembershipWitnessResolver(oracle: PrivateKernelOracle) {
68
58
  };
69
59
  }
70
60
 
71
- async function getMasterSecretKeysAndAppKeyGenerators(
61
+ async function getMasterSecretKeysAndKeyTypeDomainSeparators(
72
62
  keyValidationRequests: ClaimedLengthArray<
73
- ScopedKeyValidationRequestAndGenerator,
63
+ ScopedKeyValidationRequestAndSeparator,
74
64
  typeof MAX_KEY_VALIDATION_REQUESTS_PER_TX
75
65
  >,
76
66
  numRequestsToVerify: number,
@@ -79,7 +69,7 @@ async function getMasterSecretKeysAndAppKeyGenerators(
79
69
  const numRequestsToProcess = Math.min(keyValidationRequests.claimedLength, numRequestsToVerify);
80
70
  const keysHints = await Promise.all(
81
71
  keyValidationRequests.array.slice(0, numRequestsToProcess).map(async ({ request }) => {
82
- const secretKeys = await oracle.getMasterSecretKey(request.request.pkM);
72
+ const secretKeys = await oracle.getMasterSecretKey(request.request.pkMHash);
83
73
  return new KeyValidationHint(secretKeys);
84
74
  }),
85
75
  );
@@ -91,11 +81,14 @@ export class PrivateKernelResetPrivateInputsBuilder {
91
81
  // If there's no next iteration, it's the final reset.
92
82
  private nextIteration?: PrivateCircuitPublicInputs;
93
83
 
94
- private noteHashResetActions: ReadRequestResetActions<typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>;
95
- private nullifierResetActions: ReadRequestResetActions<typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX>;
84
+ private noteHashResetActions = ReadRequestResetActions.empty(MAX_NOTE_HASH_READ_REQUESTS_PER_TX);
85
+ private nullifierResetActions = ReadRequestResetActions.empty(MAX_NULLIFIER_READ_REQUESTS_PER_TX);
96
86
  private numTransientData?: number;
97
- private transientDataSquashingHints: Tuple<TransientDataSquashingHint, typeof MAX_NULLIFIERS_PER_TX>;
98
- private requestedDimensions: PrivateKernelResetDimensions;
87
+ private transientDataSquashingHints = makeTuple(
88
+ MAX_NULLIFIERS_PER_TX,
89
+ () => new TransientDataSquashingHint(MAX_NULLIFIERS_PER_TX, MAX_NOTE_HASHES_PER_TX),
90
+ );
91
+ private requestedDimensions = PrivateKernelResetDimensions.empty();
99
92
 
100
93
  constructor(
101
94
  private previousKernelOutput: PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>,
@@ -104,21 +97,18 @@ export class PrivateKernelResetPrivateInputsBuilder {
104
97
  private splitCounter: number,
105
98
  ) {
106
99
  this.previousKernel = previousKernelOutput.publicInputs;
107
- this.requestedDimensions = PrivateKernelResetDimensions.empty();
108
- this.noteHashResetActions = ReadRequestResetActions.empty(MAX_NOTE_HASH_READ_REQUESTS_PER_TX);
109
- this.nullifierResetActions = ReadRequestResetActions.empty(MAX_NULLIFIER_READ_REQUESTS_PER_TX);
110
- this.transientDataSquashingHints = makeTuple(
111
- MAX_NULLIFIERS_PER_TX,
112
- () => new TransientDataSquashingHint(MAX_NULLIFIERS_PER_TX, MAX_NOTE_HASHES_PER_TX),
113
- );
114
100
  this.nextIteration = executionStack[this.executionStack.length - 1]?.publicInputs;
115
101
  }
116
102
 
103
+ getRequestedDimensions(): PrivateKernelResetDimensions {
104
+ return this.requestedDimensions;
105
+ }
106
+
117
107
  needsReset(): boolean {
118
108
  const fns: (() => boolean)[] = [
119
109
  () => this.needsResetNoteHashReadRequests(),
120
110
  () => this.needsResetNullifierReadRequests(),
121
- () => this.needsResetNullifierKeys(),
111
+ () => this.needsResetKeyValidationRequests(),
122
112
  () => this.needsResetTransientData(),
123
113
  ];
124
114
 
@@ -145,15 +135,23 @@ export class PrivateKernelResetPrivateInputsBuilder {
145
135
 
146
136
  const isInner = !!this.nextIteration;
147
137
 
148
- // "final" reset must be done at most once.
149
- // Because the code that silo note hashes can't be run repeatedly.
138
+ // "final" reset must be done exactly once, because siloing can't be run repeatedly.
150
139
  // The dimensions found must be big enough to reset all values, i.e. empty remainder.
151
140
  const allowRemainder = isInner;
152
141
 
142
+ // Terminal reset picks from the finalTail / finalTailToPublic catalogs; mid-tx resets always
143
+ // use the inner catalog. The public/private decision must match `kernelStateIsForPublic` - the
144
+ // same predicate the circuit inputs and the orchestrator use.
145
+ const mode = isInner
146
+ ? ('inner' as const)
147
+ : kernelStateIsForPublic(this.previousKernel)
148
+ ? ('finalTailToPublic' as const)
149
+ : ('finalTail' as const);
150
+
153
151
  const dimensions = findPrivateKernelResetDimensions(
154
152
  this.requestedDimensions,
155
153
  privateKernelResetDimensionsConfig,
156
- isInner,
154
+ mode,
157
155
  allowRemainder,
158
156
  );
159
157
 
@@ -189,8 +187,8 @@ export class PrivateKernelResetPrivateInputsBuilder {
189
187
  this.previousKernel.validationRequests.nullifierReadRequests,
190
188
  this.nullifierResetActions,
191
189
  ),
192
- getMasterSecretKeysAndAppKeyGenerators(
193
- this.previousKernel.validationRequests.scopedKeyValidationRequestsAndGenerators,
190
+ getMasterSecretKeysAndKeyTypeDomainSeparators(
191
+ this.previousKernel.validationRequests.scopedKeyValidationRequestsAndSeparators,
194
192
  dimensions.KEY_VALIDATION,
195
193
  oracle,
196
194
  ),
@@ -246,24 +244,17 @@ export class PrivateKernelResetPrivateInputsBuilder {
246
244
  resetActions.pendingReadHints = resetActions.pendingReadHints.slice(0, maxPending);
247
245
  }
248
246
 
249
- private needsResetNoteHashReadRequests(forceResetAll = false) {
247
+ private needsResetNoteHashReadRequests(forceReset = false) {
250
248
  const numCurr = this.previousKernel.validationRequests.noteHashReadRequests.claimedLength;
251
249
  const numNext = this.nextIteration ? this.nextIteration.noteHashReadRequests.claimedLength : 0;
252
- const maxAmountToKeep = !this.nextIteration || forceResetAll ? 0 : MAX_NOTE_HASH_READ_REQUESTS_PER_TX;
250
+ const maxAmountToKeep = !this.nextIteration || forceReset ? 0 : MAX_NOTE_HASH_READ_REQUESTS_PER_TX;
253
251
  if (numCurr + numNext <= maxAmountToKeep) {
254
252
  return false;
255
253
  }
256
254
 
257
- const futureNoteHashes = collectNested(this.executionStack, executionResult => {
258
- return executionResult.publicInputs.noteHashes
259
- .getActiveItems()
260
- .map(noteHash => new ScopedNoteHash(noteHash, executionResult.publicInputs.callContext.contractAddress));
261
- });
262
-
263
255
  const resetActions = getNoteHashReadRequestResetActions(
264
256
  this.previousKernel.validationRequests.noteHashReadRequests,
265
257
  this.previousKernel.end.noteHashes,
266
- futureNoteHashes,
267
258
  );
268
259
 
269
260
  const numPendingReads = resetActions.pendingReadHints.length;
@@ -272,53 +263,72 @@ export class PrivateKernelResetPrivateInputsBuilder {
272
263
  0,
273
264
  );
274
265
 
266
+ const totalReadsToReset = numPendingReads + numSettledReads;
267
+ const minResetNeeded = numCurr + numNext - maxAmountToKeep;
268
+ if (totalReadsToReset < minResetNeeded) {
269
+ if (!this.nextIteration) {
270
+ // In the final reset, all note hashes have been emitted. So if we can't reset all requests, at least one
271
+ // pending read request doesn't match any of them.
272
+ throw new Error('No matching note hash found for note hash read request.');
273
+ } else if (!forceReset) {
274
+ // A pending read request can only be reset if its note hash has already been included (e.g. a parent call might
275
+ // be reading a note hash emitted by a child call. The read request of the parent call is included before the note
276
+ // hash of the child call).
277
+ // If we can't clear enough read requests to make room for the next iteration's reads, we're stuck.
278
+ throw new Error('Number of note hash read requests exceeds the limit.');
279
+ } else if (totalReadsToReset == 0) {
280
+ // It's transient data squashing asking for the read requests to be reset first (forceReset == true), and
281
+ // there's nothing to reset, returns false and let needsResetTransientData throw a more descriptive error.
282
+ return false;
283
+ }
284
+ // Otherwise, forceReset is true, we should proceed to reset as many as we can.
285
+ }
286
+
275
287
  if (!this.nextIteration) {
288
+ // If there's no next iteration, we need to reset all the read requests.
276
289
  this.noteHashResetActions = resetActions;
277
290
  this.requestedDimensions.NOTE_HASH_PENDING_READ = numPendingReads;
278
291
  this.requestedDimensions.NOTE_HASH_SETTLED_READ = numSettledReads;
279
292
  } else {
280
- // Pick only one dimension to reset if next iteration is not empty.
293
+ // If there's a next iteration, only one dimension can be reset at a time.
294
+ // So we pick the dimension that has more read requests to reset.
281
295
  if (numPendingReads > numSettledReads) {
282
- this.requestedDimensions.NOTE_HASH_PENDING_READ = numPendingReads;
283
- this.noteHashResetActions.actions = assertLength(
296
+ // Reset the pending read requests.
297
+ const pendingOnlyActions = assertLength(
284
298
  resetActions.actions.map(action =>
285
299
  action === ReadRequestActionEnum.READ_AS_PENDING ? action : ReadRequestActionEnum.SKIP,
286
300
  ),
287
301
  MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
288
302
  );
289
- this.noteHashResetActions.pendingReadHints = resetActions.pendingReadHints;
303
+ this.noteHashResetActions = new ReadRequestResetActions(pendingOnlyActions, resetActions.pendingReadHints);
304
+ this.requestedDimensions.NOTE_HASH_PENDING_READ = numPendingReads;
290
305
  } else {
291
- this.requestedDimensions.NOTE_HASH_SETTLED_READ = numSettledReads;
292
- this.noteHashResetActions.actions = assertLength(
306
+ // Reset the settled read requests.
307
+ const settledOnlyActions = assertLength(
293
308
  resetActions.actions.map(action =>
294
309
  action === ReadRequestActionEnum.READ_AS_SETTLED ? action : ReadRequestActionEnum.SKIP,
295
310
  ),
296
311
  MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
297
312
  );
313
+ this.noteHashResetActions = new ReadRequestResetActions(settledOnlyActions, []);
314
+ this.requestedDimensions.NOTE_HASH_SETTLED_READ = numSettledReads;
298
315
  }
299
316
  }
300
317
 
301
318
  return true;
302
319
  }
303
320
 
304
- private needsResetNullifierReadRequests(forceResetAll = false) {
321
+ private needsResetNullifierReadRequests(forceReset = false) {
305
322
  const numCurr = this.previousKernel.validationRequests.nullifierReadRequests.claimedLength;
306
323
  const numNext = this.nextIteration ? this.nextIteration.nullifierReadRequests.claimedLength : 0;
307
- const maxAmountToKeep = !this.nextIteration || forceResetAll ? 0 : MAX_NULLIFIER_READ_REQUESTS_PER_TX;
324
+ const maxAmountToKeep = !this.nextIteration || forceReset ? 0 : MAX_NULLIFIER_READ_REQUESTS_PER_TX;
308
325
  if (numCurr + numNext <= maxAmountToKeep) {
309
326
  return false;
310
327
  }
311
328
 
312
- const futureNullifiers = collectNested(this.executionStack, executionResult => {
313
- return executionResult.publicInputs.nullifiers
314
- .getActiveItems()
315
- .map(nullifier => new ScopedNullifier(nullifier, executionResult.publicInputs.callContext.contractAddress));
316
- });
317
-
318
329
  const resetActions = getNullifierReadRequestResetActions(
319
330
  this.previousKernel.validationRequests.nullifierReadRequests,
320
331
  this.previousKernel.end.nullifiers,
321
- futureNullifiers,
322
332
  );
323
333
 
324
334
  const numPendingReads = resetActions.pendingReadHints.length;
@@ -327,38 +337,63 @@ export class PrivateKernelResetPrivateInputsBuilder {
327
337
  0,
328
338
  );
329
339
 
340
+ const totalReadsToReset = numPendingReads + numSettledReads;
341
+ const minResetNeeded = numCurr + numNext - maxAmountToKeep;
342
+ if (totalReadsToReset < minResetNeeded) {
343
+ if (!this.nextIteration) {
344
+ // In the final reset, all nullifiers have been emitted. So if we can't reset all requests, at least one pending
345
+ // read request doesn't match any of them.
346
+ throw new Error('No matching nullifier found for nullifier read request.');
347
+ } else if (!forceReset) {
348
+ // A pending read request can only be reset if its nullifier has already been included (e.g. a parent call might
349
+ // be reading a nullifier emitted by a child call. The read request of the parent call is included before the
350
+ // nullifier of the child call).
351
+ // If we can't clear enough read requests to make room for the next iteration's reads, we're stuck.
352
+ throw new Error('Number of nullifier read requests exceeds the limit.');
353
+ } else if (totalReadsToReset == 0) {
354
+ // It's transient data squashing asking for the read requests to be reset first (forceReset == true), and
355
+ // there's nothing to reset, returns false and let needsResetTransientData throw a more descriptive error.
356
+ return false;
357
+ }
358
+ // Otherwise, forceReset is true, we should proceed to reset as many as we can.
359
+ }
360
+
330
361
  if (!this.nextIteration) {
362
+ // If there's no next iteration, we need to reset all the read requests.
331
363
  this.nullifierResetActions = resetActions;
332
364
  this.requestedDimensions.NULLIFIER_PENDING_READ = numPendingReads;
333
365
  this.requestedDimensions.NULLIFIER_SETTLED_READ = numSettledReads;
334
366
  } else {
335
- // Pick only one dimension to reset if next iteration is not empty.
367
+ // If there's a next iteration, we can only reset one dimension at a time.
336
368
  if (numPendingReads > numSettledReads) {
337
- this.requestedDimensions.NULLIFIER_PENDING_READ = numPendingReads;
338
- this.nullifierResetActions.actions = assertLength(
369
+ // Reset the pending read requests.
370
+ const pendingOnlyActions = assertLength(
339
371
  resetActions.actions.map(action =>
340
372
  action === ReadRequestActionEnum.READ_AS_PENDING ? action : ReadRequestActionEnum.SKIP,
341
373
  ),
342
374
  MAX_NULLIFIER_READ_REQUESTS_PER_TX,
343
375
  );
344
- this.nullifierResetActions.pendingReadHints = resetActions.pendingReadHints;
376
+ this.nullifierResetActions = new ReadRequestResetActions(pendingOnlyActions, resetActions.pendingReadHints);
377
+ this.requestedDimensions.NULLIFIER_PENDING_READ = numPendingReads;
345
378
  } else {
346
- this.requestedDimensions.NULLIFIER_SETTLED_READ = numSettledReads;
347
- this.nullifierResetActions.actions = assertLength(
379
+ // Reset the settled read requests.
380
+ const settledOnlyActions = assertLength(
348
381
  resetActions.actions.map(action =>
349
382
  action === ReadRequestActionEnum.READ_AS_SETTLED ? action : ReadRequestActionEnum.SKIP,
350
383
  ),
351
384
  MAX_NULLIFIER_READ_REQUESTS_PER_TX,
352
385
  );
386
+ this.nullifierResetActions = new ReadRequestResetActions(settledOnlyActions, []);
387
+ this.requestedDimensions.NULLIFIER_SETTLED_READ = numSettledReads;
353
388
  }
354
389
  }
355
390
 
356
391
  return true;
357
392
  }
358
393
 
359
- private needsResetNullifierKeys() {
360
- const numCurr = this.previousKernel.validationRequests.scopedKeyValidationRequestsAndGenerators.claimedLength;
361
- const numNext = this.nextIteration ? this.nextIteration.keyValidationRequestsAndGenerators.claimedLength : 0;
394
+ private needsResetKeyValidationRequests() {
395
+ const numCurr = this.previousKernel.validationRequests.scopedKeyValidationRequestsAndSeparators.claimedLength;
396
+ const numNext = this.nextIteration ? this.nextIteration.keyValidationRequestsAndSeparators.claimedLength : 0;
362
397
  const maxAmountToKeep = !this.nextIteration ? 0 : MAX_KEY_VALIDATION_REQUESTS_PER_TX;
363
398
  if (numCurr + numNext <= maxAmountToKeep) {
364
399
  return false;
@@ -370,9 +405,6 @@ export class PrivateKernelResetPrivateInputsBuilder {
370
405
  }
371
406
 
372
407
  private needsResetTransientData() {
373
- // Initialize this to 0 so that needsSilo can be run.
374
- this.numTransientData = 0;
375
-
376
408
  const nextAccumNoteHashes =
377
409
  this.previousKernel.end.noteHashes.claimedLength + (this.nextIteration?.noteHashes.claimedLength ?? 0);
378
410
  const noteHashWillOverflow = nextAccumNoteHashes > MAX_NOTE_HASHES_PER_TX;
@@ -387,19 +419,19 @@ export class PrivateKernelResetPrivateInputsBuilder {
387
419
  return false;
388
420
  }
389
421
 
390
- const futureNoteHashReads = collectNestedReadRequests(
391
- this.executionStack,
392
- executionResult => executionResult.publicInputs.noteHashReadRequests,
422
+ const futureNoteHashReads = collectNested(this.executionStack, executionResult =>
423
+ executionResult.publicInputs.noteHashReadRequests.getActiveItems(),
393
424
  );
394
- const futureNullifierReads = collectNestedReadRequests(
395
- this.executionStack,
396
- executionResult => executionResult.publicInputs.nullifierReadRequests,
425
+ const futureNullifierReads = collectNested(this.executionStack, executionResult =>
426
+ executionResult.publicInputs.nullifierReadRequests.getActiveItems(),
427
+ );
428
+ const futureLogs = collectNested(this.executionStack, executionResult =>
429
+ executionResult.publicInputs.privateLogs.getActiveItems(),
397
430
  );
398
- // TODO(#15902): Collect future logs and only allow squashing a note hash when all its logs have been emitted
399
- // (i.e. none of the future logs are linked to the to-be-squashed note hashes).
400
431
  if (this.nextIteration) {
401
- // If it's not the final reset, only one dimension will be reset at a time.
402
- // The note hashes and nullifiers for the remaining read requests can't be squashed.
432
+ // If it's not the final reset, only one dimension will be reset at a time. Since we are resetting the transient
433
+ // data, the note hash and nullifier read requests in the previous kernel won't be squashed and need to be
434
+ // included in the future read requests.
403
435
  futureNoteHashReads.push(...this.previousKernel.validationRequests.noteHashReadRequests.getActiveItems());
404
436
  futureNullifierReads.push(...this.previousKernel.validationRequests.nullifierReadRequests.getActiveItems());
405
437
  }
@@ -409,27 +441,50 @@ export class PrivateKernelResetPrivateInputsBuilder {
409
441
  this.previousKernel.end.nullifiers,
410
442
  futureNoteHashReads,
411
443
  futureNullifierReads,
444
+ futureLogs,
412
445
  this.noteHashNullifierCounterMap,
413
446
  this.splitCounter,
414
447
  );
415
448
 
416
- if (this.nextIteration && !numTransientData) {
417
- const forceResetAll = true;
418
- const canClearReadRequests =
419
- (noteHashWillOverflow && this.needsResetNoteHashReadRequests(forceResetAll)) ||
420
- (nullifierWillOverflow && this.needsResetNullifierReadRequests(forceResetAll)) ||
421
- (logsWillOverflow && this.needsResetNoteHashReadRequests(forceResetAll));
422
- if (!canClearReadRequests) {
423
- const overflownData = noteHashWillOverflow
424
- ? 'note hashes'
425
- : nullifierWillOverflow
426
- ? 'nullifiers'
427
- : 'private logs';
428
- throw new Error(`Number of ${overflownData} exceeds the limit.`);
449
+ if (this.nextIteration) {
450
+ const noteHashOverflowBy = noteHashWillOverflow
451
+ ? nextAccumNoteHashes - MAX_NOTE_HASHES_PER_TX - numTransientData
452
+ : 0;
453
+ const nullifierOverflowBy = nullifierWillOverflow
454
+ ? nextAccumNullifiers - MAX_NULLIFIERS_PER_TX - numTransientData
455
+ : 0;
456
+ const numSquashedLogs = logsWillOverflow
457
+ ? countSquashedLogs(
458
+ this.previousKernel.end.noteHashes,
459
+ this.previousKernel.end.privateLogs,
460
+ transientDataSquashingHints.slice(0, numTransientData),
461
+ )
462
+ : 0;
463
+ const logsOverflowBy = logsWillOverflow ? nextAccumLogs - MAX_PRIVATE_LOGS_PER_TX - numSquashedLogs : 0;
464
+
465
+ if (noteHashOverflowBy > 0 || nullifierOverflowBy > 0 || logsOverflowBy > 0) {
466
+ // There's not enough transient data to squash to clear space for the overflow. It may be because some data is
467
+ // still required for read requests. Force a reset of the read requests first, and return to transient data
468
+ // squashing in the next round of reset.
469
+ // Note that clearing the read requests might not be enough to clear more space for the overflow. In this case,
470
+ // running the next reset will fail at the following check.
471
+ // Only one dimension can be reset at a time for an inner reset, so we try the note hash read requests first
472
+ // (which also helps with log overflow), then fall back to nullifier read requests.
473
+ const forceReset = true;
474
+ if ((noteHashOverflowBy > 0 || logsOverflowBy > 0) && this.needsResetNoteHashReadRequests(forceReset)) {
475
+ return true;
476
+ }
477
+ if (nullifierOverflowBy > 0 && this.needsResetNullifierReadRequests(forceReset)) {
478
+ return true;
479
+ }
480
+ if (noteHashWillOverflow) {
481
+ throw new Error('Number of note hashes exceeds the limit.');
482
+ }
483
+ if (nullifierWillOverflow) {
484
+ throw new Error('Number of nullifiers exceeds the limit.');
485
+ }
486
+ throw new Error('Number of private logs exceeds the limit.');
429
487
  }
430
- // Clearing the read requests might not be enough to squash the overflown data.
431
- // In this case, the next iteration will fail at the above check.
432
- return true;
433
488
  }
434
489
 
435
490
  this.numTransientData = numTransientData;
@@ -444,10 +499,13 @@ export class PrivateKernelResetPrivateInputsBuilder {
444
499
  throw new Error('`needsResetTransientData` must be run before `needsSiloNoteHashes`.');
445
500
  }
446
501
 
447
- const numNoteHashes = this.previousKernel.end.noteHashes
448
- .getActiveItems()
449
- .filter(n => !n.contractAddress.isZero()).length;
450
- const numToSilo = Math.max(0, numNoteHashes - this.numTransientData);
502
+ const noteHashes = this.previousKernel.end.noteHashes;
503
+ if (noteHashes.claimedLength > 0 && noteHashes.array[0].contractAddress.isZero()) {
504
+ // Already siloed.
505
+ return false;
506
+ }
507
+
508
+ const numToSilo = noteHashes.claimedLength - this.numTransientData;
451
509
  this.requestedDimensions.NOTE_HASH_SILOING = numToSilo;
452
510
 
453
511
  return numToSilo > 0;
@@ -458,15 +516,14 @@ export class PrivateKernelResetPrivateInputsBuilder {
458
516
  throw new Error('`needsResetTransientData` must be run before `needsSiloNullifiers`.');
459
517
  }
460
518
 
461
- const numNullifiers = this.previousKernel.end.nullifiers
462
- .getActiveItems()
463
- .filter(n => !n.contractAddress.isZero()).length;
464
- const numToSilo = Math.max(0, numNullifiers - this.numTransientData);
465
- // Include the first nullifier if there's something to silo.
466
- // The reset circuit checks that capped_size must be greater than or equal to all non-empty nullifiers.
467
- // Which includes the first nullifier, even though its contract address is always zero and doesn't need siloing.
468
- const cappedSize = numToSilo ? numToSilo + 1 : 0;
469
- this.requestedDimensions.NULLIFIER_SILOING = cappedSize;
519
+ const nullifiers = this.previousKernel.end.nullifiers;
520
+ if (nullifiers.claimedLength > 0 && nullifiers.array[0].contractAddress.isZero()) {
521
+ // Already siloed.
522
+ return false;
523
+ }
524
+
525
+ const numToSilo = nullifiers.claimedLength - this.numTransientData;
526
+ this.requestedDimensions.NULLIFIER_SILOING = numToSilo;
470
527
 
471
528
  return numToSilo > 0;
472
529
  }
@@ -477,17 +534,17 @@ export class PrivateKernelResetPrivateInputsBuilder {
477
534
  }
478
535
 
479
536
  const privateLogs = this.previousKernel.end.privateLogs;
480
- const numLogs = privateLogs.getActiveItems().filter(l => !l.contractAddress.isZero()).length;
537
+ if (privateLogs.claimedLength > 0 && privateLogs.array[0].contractAddress.isZero()) {
538
+ // Already siloed.
539
+ return false;
540
+ }
481
541
 
482
- const noteHashes = this.previousKernel.end.noteHashes;
483
- const squashedNoteHashCounters = this.transientDataSquashingHints
484
- .filter(h => h.noteHashIndex < noteHashes.claimedLength)
485
- .map(h => noteHashes.array[h.noteHashIndex].counter);
486
- const numSquashedLogs = privateLogs
487
- .getActiveItems()
488
- .filter(l => squashedNoteHashCounters.includes(l.inner.noteHashCounter)).length;
489
-
490
- const numToSilo = numLogs - numSquashedLogs;
542
+ const numSquashedLogs = countSquashedLogs(
543
+ this.previousKernel.end.noteHashes,
544
+ privateLogs,
545
+ this.transientDataSquashingHints.slice(0, this.numTransientData),
546
+ );
547
+ const numToSilo = privateLogs.claimedLength - numSquashedLogs;
491
548
  this.requestedDimensions.PRIVATE_LOG_SILOING = numToSilo;
492
549
 
493
550
  return numToSilo > 0;