@aztec/pxe 0.0.0-test.1 → 0.0.1-commit.1142ef1

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 (445) hide show
  1. package/README.md +5 -5
  2. package/dest/bin/check_oracle_version.d.ts +2 -0
  3. package/dest/bin/check_oracle_version.d.ts.map +1 -0
  4. package/dest/bin/check_oracle_version.js +129 -0
  5. package/dest/block_synchronizer/block_synchronizer.d.ts +39 -0
  6. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  7. package/dest/{synchronizer/synchronizer.js → block_synchronizer/block_synchronizer.js} +34 -35
  8. package/dest/block_synchronizer/index.d.ts +2 -0
  9. package/dest/block_synchronizer/index.d.ts.map +1 -0
  10. package/dest/block_synchronizer/index.js +1 -0
  11. package/dest/config/index.d.ts +11 -24
  12. package/dest/config/index.d.ts.map +1 -1
  13. package/dest/config/index.js +18 -33
  14. package/dest/config/package_info.d.ts +1 -1
  15. package/dest/config/package_info.js +1 -1
  16. package/dest/contract_function_simulator/contract_function_simulator.d.ts +86 -0
  17. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -0
  18. package/dest/contract_function_simulator/contract_function_simulator.js +331 -0
  19. package/dest/contract_function_simulator/execution_note_cache.d.ts +95 -0
  20. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -0
  21. package/dest/contract_function_simulator/execution_note_cache.js +191 -0
  22. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +16 -0
  23. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -0
  24. package/dest/contract_function_simulator/execution_tagging_index_cache.js +26 -0
  25. package/dest/contract_function_simulator/hashed_values_cache.d.ts +28 -0
  26. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -0
  27. package/dest/contract_function_simulator/hashed_values_cache.js +36 -0
  28. package/dest/contract_function_simulator/index.d.ts +14 -0
  29. package/dest/contract_function_simulator/index.d.ts.map +1 -0
  30. package/dest/contract_function_simulator/index.js +12 -0
  31. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +21 -0
  32. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -0
  33. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +40 -0
  34. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +16 -0
  35. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -0
  36. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +26 -0
  37. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +17 -0
  38. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -0
  39. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +65 -0
  40. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +24 -0
  41. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -0
  42. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +51 -0
  43. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +22 -0
  44. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -0
  45. package/dest/contract_function_simulator/noir-structs/utility_context.js +33 -0
  46. package/dest/contract_function_simulator/oracle/index.d.ts +14 -0
  47. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -0
  48. package/dest/contract_function_simulator/oracle/index.js +2 -0
  49. package/dest/contract_function_simulator/oracle/interfaces.d.ts +103 -0
  50. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -0
  51. package/dest/contract_function_simulator/oracle/interfaces.js +4 -0
  52. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +17 -0
  53. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -0
  54. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +24 -0
  55. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +28 -0
  56. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -0
  57. package/dest/contract_function_simulator/oracle/note_packing_utils.js +54 -0
  58. package/dest/contract_function_simulator/oracle/oracle.d.ts +58 -0
  59. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -0
  60. package/dest/contract_function_simulator/oracle/oracle.js +345 -0
  61. package/dest/contract_function_simulator/oracle/private_execution.d.ts +47 -0
  62. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -0
  63. package/dest/contract_function_simulator/oracle/private_execution.js +122 -0
  64. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +231 -0
  65. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -0
  66. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +414 -0
  67. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +196 -0
  68. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -0
  69. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +374 -0
  70. package/dest/contract_function_simulator/pick_notes.d.ts +85 -0
  71. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -0
  72. package/dest/contract_function_simulator/pick_notes.js +51 -0
  73. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +6 -0
  74. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -0
  75. package/dest/contract_function_simulator/proxied_contract_data_source.js +80 -0
  76. package/dest/contract_function_simulator/proxied_node.d.ts +9 -0
  77. package/dest/contract_function_simulator/proxied_node.d.ts.map +1 -0
  78. package/dest/contract_function_simulator/proxied_node.js +27 -0
  79. package/dest/debug/pxe_debug_utils.d.ts +31 -0
  80. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  81. package/dest/debug/pxe_debug_utils.js +37 -0
  82. package/dest/entrypoints/client/bundle/index.d.ts +4 -3
  83. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  84. package/dest/entrypoints/client/bundle/index.js +2 -2
  85. package/dest/entrypoints/client/bundle/utils.d.ts +10 -10
  86. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  87. package/dest/entrypoints/client/bundle/utils.js +27 -12
  88. package/dest/entrypoints/client/lazy/index.d.ts +4 -3
  89. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  90. package/dest/entrypoints/client/lazy/index.js +2 -2
  91. package/dest/entrypoints/client/lazy/utils.d.ts +9 -9
  92. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  93. package/dest/entrypoints/client/lazy/utils.js +26 -11
  94. package/dest/entrypoints/pxe_creation_options.d.ts +17 -0
  95. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -0
  96. package/dest/entrypoints/server/index.d.ts +6 -4
  97. package/dest/entrypoints/server/index.d.ts.map +1 -1
  98. package/dest/entrypoints/server/index.js +4 -3
  99. package/dest/entrypoints/server/utils.d.ts +8 -16
  100. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  101. package/dest/entrypoints/server/utils.js +35 -36
  102. package/dest/error_enriching.d.ts +11 -0
  103. package/dest/error_enriching.d.ts.map +1 -0
  104. package/dest/{pxe_service/error_enriching.js → error_enriching.js} +30 -22
  105. package/dest/events/event_service.d.ts +15 -0
  106. package/dest/events/event_service.d.ts.map +1 -0
  107. package/dest/events/event_service.js +47 -0
  108. package/dest/events/index.d.ts +2 -0
  109. package/dest/events/index.d.ts.map +1 -0
  110. package/dest/events/index.js +1 -0
  111. package/dest/events/private_event_filter_validator.d.ts +9 -0
  112. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  113. package/dest/events/private_event_filter_validator.js +39 -0
  114. package/dest/job_coordinator/job_coordinator.d.ts +74 -0
  115. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  116. package/dest/job_coordinator/job_coordinator.js +93 -0
  117. package/dest/logs/log_service.d.ts +26 -0
  118. package/dest/logs/log_service.d.ts.map +1 -0
  119. package/dest/logs/log_service.js +120 -0
  120. package/dest/notes/index.d.ts +2 -0
  121. package/dest/notes/index.d.ts.map +1 -0
  122. package/dest/notes/index.js +1 -0
  123. package/dest/notes/note_service.d.ts +48 -0
  124. package/dest/notes/note_service.d.ts.map +1 -0
  125. package/dest/notes/note_service.js +152 -0
  126. package/dest/oracle_version.d.ts +3 -0
  127. package/dest/oracle_version.d.ts.map +1 -0
  128. package/dest/oracle_version.js +10 -0
  129. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +28 -0
  130. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -0
  131. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.js +271 -0
  132. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +4 -0
  133. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +1 -0
  134. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.js +41 -0
  135. package/dest/private_kernel/hints/index.d.ts +3 -0
  136. package/dest/private_kernel/hints/index.d.ts.map +1 -0
  137. package/dest/{kernel_prover → private_kernel}/hints/index.js +1 -0
  138. package/dest/private_kernel/index.d.ts +3 -0
  139. package/dest/private_kernel/index.d.ts.map +1 -0
  140. package/dest/private_kernel/index.js +2 -0
  141. package/dest/private_kernel/private_kernel_execution_prover.d.ts +44 -0
  142. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -0
  143. package/dest/private_kernel/private_kernel_execution_prover.js +285 -0
  144. package/dest/private_kernel/private_kernel_oracle.d.ts +64 -0
  145. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -0
  146. package/dest/private_kernel/private_kernel_oracle.js +4 -0
  147. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +46 -0
  148. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +1 -0
  149. package/dest/{kernel_oracle/index.js → private_kernel/private_kernel_oracle_impl.js} +27 -18
  150. package/dest/public_storage/public_storage_service.d.ts +24 -0
  151. package/dest/public_storage/public_storage_service.d.ts.map +1 -0
  152. package/dest/public_storage/public_storage_service.js +26 -0
  153. package/dest/pxe.d.ts +233 -0
  154. package/dest/pxe.d.ts.map +1 -0
  155. package/dest/pxe.js +782 -0
  156. package/dest/storage/address_store/address_store.d.ts +11 -0
  157. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  158. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +1 -4
  159. package/dest/storage/address_store/index.d.ts +2 -0
  160. package/dest/storage/address_store/index.d.ts.map +1 -0
  161. package/dest/storage/address_store/index.js +1 -0
  162. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -0
  163. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  164. package/dest/storage/{sync_data_provider/sync_data_provider.js → anchor_block_store/anchor_block_store.js} +2 -12
  165. package/dest/storage/anchor_block_store/index.d.ts +2 -0
  166. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  167. package/dest/storage/anchor_block_store/index.js +1 -0
  168. package/dest/storage/capsule_store/capsule_store.d.ts +57 -0
  169. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  170. package/dest/storage/capsule_store/capsule_store.js +146 -0
  171. package/dest/storage/capsule_store/index.d.ts +2 -0
  172. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  173. package/dest/storage/capsule_store/index.js +1 -0
  174. package/dest/storage/contract_store/contract_store.d.ts +67 -0
  175. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  176. package/dest/storage/contract_store/contract_store.js +236 -0
  177. package/dest/storage/contract_store/index.d.ts +2 -0
  178. package/dest/storage/contract_store/index.d.ts.map +1 -0
  179. package/dest/storage/contract_store/index.js +1 -0
  180. package/dest/storage/contract_store/private_functions_tree.d.ts +27 -0
  181. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  182. package/dest/storage/contract_store/private_functions_tree.js +47 -0
  183. package/dest/storage/index.d.ts +9 -10
  184. package/dest/storage/index.d.ts.map +1 -1
  185. package/dest/storage/index.js +8 -9
  186. package/dest/storage/metadata.d.ts +2 -0
  187. package/dest/storage/metadata.d.ts.map +1 -0
  188. package/dest/storage/metadata.js +1 -0
  189. package/dest/storage/note_store/index.d.ts +3 -0
  190. package/dest/storage/note_store/index.d.ts.map +1 -0
  191. package/dest/storage/note_store/index.js +2 -0
  192. package/dest/storage/note_store/note_store.d.ts +84 -0
  193. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  194. package/dest/storage/note_store/note_store.js +322 -0
  195. package/dest/storage/private_event_store/private_event_store.d.ts +56 -0
  196. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  197. package/dest/storage/private_event_store/private_event_store.js +158 -0
  198. package/dest/storage/tagging_store/index.d.ts +4 -0
  199. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  200. package/dest/storage/tagging_store/index.js +3 -0
  201. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +21 -0
  202. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  203. package/dest/storage/tagging_store/recipient_tagging_store.js +42 -0
  204. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  205. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  206. package/dest/storage/tagging_store/sender_address_book_store.js +30 -0
  207. package/dest/storage/tagging_store/sender_tagging_store.d.ts +67 -0
  208. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  209. package/dest/storage/tagging_store/sender_tagging_store.js +196 -0
  210. package/dest/tagging/constants.d.ts +2 -0
  211. package/dest/tagging/constants.d.ts.map +1 -0
  212. package/dest/tagging/constants.js +10 -0
  213. package/dest/tagging/index.d.ts +16 -0
  214. package/dest/tagging/index.d.ts.map +1 -0
  215. package/dest/tagging/index.js +14 -0
  216. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +14 -0
  217. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
  218. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
  219. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  220. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  221. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  222. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +14 -0
  223. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
  224. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +29 -0
  225. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +20 -0
  226. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  227. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +74 -0
  228. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -0
  229. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  230. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +32 -0
  231. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +18 -0
  232. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  233. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +55 -0
  234. package/dest/tree_membership/tree_membership_service.d.ts +52 -0
  235. package/dest/tree_membership/tree_membership_service.d.ts.map +1 -0
  236. package/dest/tree_membership/tree_membership_service.js +84 -0
  237. package/package.json +37 -34
  238. package/src/bin/check_oracle_version.ts +160 -0
  239. package/src/{synchronizer/synchronizer.ts → block_synchronizer/block_synchronizer.ts} +37 -38
  240. package/src/block_synchronizer/index.ts +1 -0
  241. package/src/config/index.ts +27 -55
  242. package/src/config/package_info.ts +1 -1
  243. package/src/contract_function_simulator/contract_function_simulator.ts +627 -0
  244. package/src/contract_function_simulator/execution_note_cache.ts +233 -0
  245. package/src/contract_function_simulator/execution_tagging_index_cache.ts +32 -0
  246. package/src/contract_function_simulator/hashed_values_cache.ts +47 -0
  247. package/src/contract_function_simulator/index.ts +13 -0
  248. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +51 -0
  249. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +28 -0
  250. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +69 -0
  251. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +64 -0
  252. package/src/contract_function_simulator/noir-structs/utility_context.ts +42 -0
  253. package/src/contract_function_simulator/oracle/index.ts +16 -0
  254. package/src/contract_function_simulator/oracle/interfaces.ts +175 -0
  255. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +23 -0
  256. package/src/contract_function_simulator/oracle/note_packing_utils.ts +68 -0
  257. package/src/contract_function_simulator/oracle/oracle.ts +605 -0
  258. package/src/contract_function_simulator/oracle/private_execution.ts +207 -0
  259. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +676 -0
  260. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +536 -0
  261. package/src/contract_function_simulator/pick_notes.ts +141 -0
  262. package/src/contract_function_simulator/proxied_contract_data_source.ts +83 -0
  263. package/src/contract_function_simulator/proxied_node.ts +33 -0
  264. package/src/debug/pxe_debug_utils.ts +48 -0
  265. package/src/entrypoints/client/bundle/index.ts +3 -2
  266. package/src/entrypoints/client/bundle/utils.ts +42 -36
  267. package/src/entrypoints/client/lazy/index.ts +3 -2
  268. package/src/entrypoints/client/lazy/utils.ts +41 -31
  269. package/src/entrypoints/pxe_creation_options.ts +13 -0
  270. package/src/entrypoints/server/index.ts +5 -3
  271. package/src/entrypoints/server/utils.ts +55 -51
  272. package/src/{pxe_service/error_enriching.ts → error_enriching.ts} +40 -39
  273. package/src/events/event_service.ts +79 -0
  274. package/src/events/index.ts +1 -0
  275. package/src/events/private_event_filter_validator.ts +48 -0
  276. package/src/job_coordinator/job_coordinator.ts +149 -0
  277. package/src/logs/log_service.ts +202 -0
  278. package/src/notes/index.ts +1 -0
  279. package/src/notes/note_service.ts +200 -0
  280. package/src/oracle_version.ts +11 -0
  281. package/src/{kernel_prover → private_kernel}/hints/build_private_kernel_reset_private_inputs.ts +159 -148
  282. package/src/private_kernel/hints/compute_tx_include_by_timestamp.ts +58 -0
  283. package/src/{kernel_prover → private_kernel}/hints/index.ts +1 -0
  284. package/src/private_kernel/index.ts +2 -0
  285. package/src/private_kernel/private_kernel_execution_prover.ts +430 -0
  286. package/src/{kernel_prover/proving_data_oracle.ts → private_kernel/private_kernel_oracle.ts} +19 -29
  287. package/src/{kernel_oracle/index.ts → private_kernel/private_kernel_oracle_impl.ts} +40 -30
  288. package/src/public_storage/public_storage_service.ts +33 -0
  289. package/src/pxe.ts +1111 -0
  290. package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +1 -7
  291. package/src/storage/address_store/index.ts +1 -0
  292. package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +2 -17
  293. package/src/storage/anchor_block_store/index.ts +1 -0
  294. package/src/storage/capsule_store/capsule_store.ts +179 -0
  295. package/src/storage/capsule_store/index.ts +1 -0
  296. package/src/storage/contract_store/contract_store.ts +339 -0
  297. package/src/storage/contract_store/index.ts +1 -0
  298. package/src/storage/contract_store/private_functions_tree.ts +67 -0
  299. package/src/storage/index.ts +8 -10
  300. package/src/storage/metadata.ts +1 -0
  301. package/src/storage/note_store/index.ts +2 -0
  302. package/src/storage/{note_data_provider/note_data_provider.ts → note_store/note_store.ts} +190 -123
  303. package/src/storage/private_event_store/private_event_store.ts +216 -0
  304. package/src/storage/tagging_store/index.ts +3 -0
  305. package/src/storage/tagging_store/recipient_tagging_store.ts +53 -0
  306. package/src/storage/tagging_store/sender_address_book_store.ts +42 -0
  307. package/src/storage/tagging_store/sender_tagging_store.ts +244 -0
  308. package/src/tagging/constants.ts +10 -0
  309. package/src/tagging/index.ts +18 -0
  310. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +132 -0
  311. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  312. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +43 -0
  313. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +96 -0
  314. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +48 -0
  315. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +72 -0
  316. package/src/tree_membership/tree_membership_service.ts +112 -0
  317. package/dest/bin/index.d.ts +0 -3
  318. package/dest/bin/index.d.ts.map +0 -1
  319. package/dest/bin/index.js +0 -28
  320. package/dest/entrypoints/client/pxe_creation_options.d.ts +0 -11
  321. package/dest/entrypoints/client/pxe_creation_options.d.ts.map +0 -1
  322. package/dest/kernel_oracle/index.d.ts +0 -45
  323. package/dest/kernel_oracle/index.d.ts.map +0 -1
  324. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  325. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  326. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.js +0 -270
  327. package/dest/kernel_prover/hints/index.d.ts +0 -2
  328. package/dest/kernel_prover/hints/index.d.ts.map +0 -1
  329. package/dest/kernel_prover/index.d.ts +0 -3
  330. package/dest/kernel_prover/index.d.ts.map +0 -1
  331. package/dest/kernel_prover/index.js +0 -2
  332. package/dest/kernel_prover/kernel_prover.d.ts +0 -38
  333. package/dest/kernel_prover/kernel_prover.d.ts.map +0 -1
  334. package/dest/kernel_prover/kernel_prover.js +0 -217
  335. package/dest/kernel_prover/proving_data_oracle.d.ts +0 -73
  336. package/dest/kernel_prover/proving_data_oracle.d.ts.map +0 -1
  337. package/dest/kernel_prover/proving_data_oracle.js +0 -4
  338. package/dest/note_decryption_utils/add_public_values_to_payload.d.ts +0 -11
  339. package/dest/note_decryption_utils/add_public_values_to_payload.d.ts.map +0 -1
  340. package/dest/note_decryption_utils/add_public_values_to_payload.js +0 -47
  341. package/dest/pxe_http/index.d.ts +0 -2
  342. package/dest/pxe_http/index.d.ts.map +0 -1
  343. package/dest/pxe_http/index.js +0 -1
  344. package/dest/pxe_http/pxe_http_server.d.ts +0 -16
  345. package/dest/pxe_http/pxe_http_server.d.ts.map +0 -1
  346. package/dest/pxe_http/pxe_http_server.js +0 -27
  347. package/dest/pxe_oracle_interface/index.d.ts +0 -159
  348. package/dest/pxe_oracle_interface/index.d.ts.map +0 -1
  349. package/dest/pxe_oracle_interface/index.js +0 -692
  350. package/dest/pxe_oracle_interface/tagging_utils.d.ts +0 -17
  351. package/dest/pxe_oracle_interface/tagging_utils.d.ts.map +0 -1
  352. package/dest/pxe_oracle_interface/tagging_utils.js +0 -23
  353. package/dest/pxe_service/error_enriching.d.ts +0 -11
  354. package/dest/pxe_service/error_enriching.d.ts.map +0 -1
  355. package/dest/pxe_service/index.d.ts +0 -3
  356. package/dest/pxe_service/index.d.ts.map +0 -1
  357. package/dest/pxe_service/index.js +0 -2
  358. package/dest/pxe_service/pxe_service.d.ts +0 -111
  359. package/dest/pxe_service/pxe_service.d.ts.map +0 -1
  360. package/dest/pxe_service/pxe_service.js +0 -664
  361. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -13
  362. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  363. package/dest/storage/address_data_provider/index.d.ts +0 -2
  364. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  365. package/dest/storage/address_data_provider/index.js +0 -1
  366. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts +0 -11
  367. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts.map +0 -1
  368. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.js +0 -20
  369. package/dest/storage/auth_witness_data_provider/index.d.ts +0 -2
  370. package/dest/storage/auth_witness_data_provider/index.d.ts.map +0 -1
  371. package/dest/storage/auth_witness_data_provider/index.js +0 -1
  372. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -16
  373. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  374. package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -57
  375. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  376. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  377. package/dest/storage/capsule_data_provider/index.js +0 -1
  378. package/dest/storage/contract_data_provider/contract_data_provider.d.ts +0 -109
  379. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  380. package/dest/storage/contract_data_provider/contract_data_provider.js +0 -183
  381. package/dest/storage/contract_data_provider/index.d.ts +0 -3
  382. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  383. package/dest/storage/contract_data_provider/index.js +0 -2
  384. package/dest/storage/contract_data_provider/private_functions_tree.d.ts +0 -66
  385. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  386. package/dest/storage/contract_data_provider/private_functions_tree.js +0 -99
  387. package/dest/storage/data_provider.d.ts +0 -4
  388. package/dest/storage/data_provider.d.ts.map +0 -1
  389. package/dest/storage/data_provider.js +0 -1
  390. package/dest/storage/note_data_provider/index.d.ts +0 -3
  391. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  392. package/dest/storage/note_data_provider/index.js +0 -2
  393. package/dest/storage/note_data_provider/note_dao.d.ts +0 -106
  394. package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
  395. package/dest/storage/note_data_provider/note_dao.js +0 -106
  396. package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -20
  397. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  398. package/dest/storage/note_data_provider/note_data_provider.js +0 -249
  399. package/dest/storage/sync_data_provider/index.d.ts +0 -2
  400. package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
  401. package/dest/storage/sync_data_provider/index.js +0 -1
  402. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -12
  403. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
  404. package/dest/storage/tagging_data_provider/index.d.ts +0 -2
  405. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  406. package/dest/storage/tagging_data_provider/index.js +0 -1
  407. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -18
  408. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
  409. package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -65
  410. package/dest/synchronizer/index.d.ts +0 -2
  411. package/dest/synchronizer/index.d.ts.map +0 -1
  412. package/dest/synchronizer/index.js +0 -1
  413. package/dest/synchronizer/synchronizer.d.ts +0 -37
  414. package/dest/synchronizer/synchronizer.d.ts.map +0 -1
  415. package/dest/test/pxe_test_suite.d.ts +0 -3
  416. package/dest/test/pxe_test_suite.d.ts.map +0 -1
  417. package/dest/test/pxe_test_suite.js +0 -97
  418. package/src/bin/index.ts +0 -38
  419. package/src/entrypoints/client/pxe_creation_options.ts +0 -7
  420. package/src/kernel_prover/index.ts +0 -2
  421. package/src/kernel_prover/kernel_prover.ts +0 -351
  422. package/src/note_decryption_utils/add_public_values_to_payload.ts +0 -64
  423. package/src/pxe_http/index.ts +0 -1
  424. package/src/pxe_http/pxe_http_server.ts +0 -29
  425. package/src/pxe_oracle_interface/index.ts +0 -925
  426. package/src/pxe_oracle_interface/tagging_utils.ts +0 -32
  427. package/src/pxe_service/index.ts +0 -2
  428. package/src/pxe_service/pxe_service.ts +0 -949
  429. package/src/storage/address_data_provider/index.ts +0 -1
  430. package/src/storage/auth_witness_data_provider/auth_witness_data_provider.ts +0 -34
  431. package/src/storage/auth_witness_data_provider/index.ts +0 -1
  432. package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -80
  433. package/src/storage/capsule_data_provider/index.ts +0 -1
  434. package/src/storage/contract_data_provider/contract_data_provider.ts +0 -261
  435. package/src/storage/contract_data_provider/index.ts +0 -2
  436. package/src/storage/contract_data_provider/private_functions_tree.ts +0 -131
  437. package/src/storage/data_provider.ts +0 -3
  438. package/src/storage/note_data_provider/index.ts +0 -2
  439. package/src/storage/note_data_provider/note_dao.ts +0 -162
  440. package/src/storage/sync_data_provider/index.ts +0 -1
  441. package/src/storage/tagging_data_provider/index.ts +0 -1
  442. package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -92
  443. package/src/synchronizer/index.ts +0 -1
  444. package/src/test/pxe_test_suite.ts +0 -111
  445. /package/dest/entrypoints/{client/pxe_creation_options.js → pxe_creation_options.js} +0 -0
@@ -4,17 +4,19 @@ import {
4
4
  MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
5
5
  MAX_NULLIFIERS_PER_TX,
6
6
  MAX_NULLIFIER_READ_REQUESTS_PER_TX,
7
+ MAX_PRIVATE_LOGS_PER_TX,
7
8
  NULLIFIER_TREE_HEIGHT,
8
- VK_TREE_HEIGHT,
9
9
  } from '@aztec/constants';
10
10
  import { makeTuple } from '@aztec/foundation/array';
11
11
  import { padArrayEnd } from '@aztec/foundation/collection';
12
- import type { Fr } from '@aztec/foundation/fields';
12
+ import type { Fr } from '@aztec/foundation/curves/bn254';
13
13
  import { type Tuple, 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 {
17
+ ClaimedLengthArray,
17
18
  KeyValidationHint,
19
+ PaddedSideEffects,
18
20
  type PrivateCircuitPublicInputs,
19
21
  type PrivateKernelCircuitPublicInputs,
20
22
  PrivateKernelData,
@@ -22,41 +24,36 @@ import {
22
24
  PrivateKernelResetDimensions,
23
25
  PrivateKernelResetHints,
24
26
  type PrivateKernelSimulateOutput,
25
- type ReadRequest,
26
- ReadRequestResetStates,
27
- ReadRequestState,
27
+ ReadRequestActionEnum,
28
+ ReadRequestResetActions,
28
29
  type ScopedKeyValidationRequestAndGenerator,
29
30
  ScopedNoteHash,
30
31
  ScopedNullifier,
31
32
  ScopedReadRequest,
32
- TransientDataIndexHint,
33
- buildNoteHashReadRequestHintsFromResetStates,
34
- buildNullifierReadRequestHintsFromResetStates,
33
+ TransientDataSquashingHint,
34
+ buildNoteHashReadRequestHintsFromResetActions,
35
+ buildNullifierReadRequestHintsFromResetActions,
35
36
  buildTransientDataHints,
36
- countAccumulatedItems,
37
37
  findPrivateKernelResetDimensions,
38
- getNonEmptyItems,
39
- getNoteHashReadRequestResetStates,
40
- getNullifierReadRequestResetStates,
38
+ getNoteHashReadRequestResetActions,
39
+ getNullifierReadRequestResetActions,
41
40
  privateKernelResetDimensionNames,
42
41
  } from '@aztec/stdlib/kernel';
43
42
  import { type PrivateCallExecutionResult, collectNested } from '@aztec/stdlib/tx';
43
+ import { VkData } from '@aztec/stdlib/vks';
44
44
 
45
- import type { ProvingDataOracle } from '../proving_data_oracle.js';
45
+ import type { PrivateKernelOracle } from '../private_kernel_oracle.js';
46
46
 
47
- function collectNestedReadRequests(
47
+ function collectNestedReadRequests<N extends number>(
48
48
  executionStack: PrivateCallExecutionResult[],
49
- extractReadRequests: (execution: PrivateCallExecutionResult) => ReadRequest[],
49
+ extractReadRequests: (execution: PrivateCallExecutionResult) => ClaimedLengthArray<ScopedReadRequest, N>,
50
50
  ): ScopedReadRequest[] {
51
51
  return collectNested(executionStack, executionResult => {
52
- const nonEmptyReadRequests = getNonEmptyItems(extractReadRequests(executionResult));
53
- return nonEmptyReadRequests.map(
54
- readRequest => new ScopedReadRequest(readRequest, executionResult.publicInputs.callContext.contractAddress),
55
- );
52
+ return extractReadRequests(executionResult).getActiveItems();
56
53
  });
57
54
  }
58
55
 
59
- function getNullifierMembershipWitnessResolver(oracle: ProvingDataOracle) {
56
+ function getNullifierMembershipWitnessResolver(oracle: PrivateKernelOracle) {
60
57
  return async (nullifier: Fr) => {
61
58
  const res = await oracle.getNullifierMembershipWitness(nullifier);
62
59
  if (!res) {
@@ -72,23 +69,21 @@ function getNullifierMembershipWitnessResolver(oracle: ProvingDataOracle) {
72
69
  }
73
70
 
74
71
  async function getMasterSecretKeysAndAppKeyGenerators(
75
- keyValidationRequests: Tuple<ScopedKeyValidationRequestAndGenerator, typeof MAX_KEY_VALIDATION_REQUESTS_PER_TX>,
76
- oracle: ProvingDataOracle,
72
+ keyValidationRequests: ClaimedLengthArray<
73
+ ScopedKeyValidationRequestAndGenerator,
74
+ typeof MAX_KEY_VALIDATION_REQUESTS_PER_TX
75
+ >,
76
+ numRequestsToVerify: number,
77
+ oracle: PrivateKernelOracle,
77
78
  ) {
78
- const keysHints = [];
79
- for (let i = 0; i < keyValidationRequests.length; ++i) {
80
- const request = keyValidationRequests[i].request;
81
- if (request.isEmpty()) {
82
- break;
83
- }
84
- const secretKeys = await oracle.getMasterSecretKey(request.request.pkM);
85
- keysHints.push(new KeyValidationHint(secretKeys, i));
86
- }
87
- return padArrayEnd(
88
- keysHints,
89
- KeyValidationHint.nada(MAX_KEY_VALIDATION_REQUESTS_PER_TX),
90
- MAX_KEY_VALIDATION_REQUESTS_PER_TX,
79
+ const numRequestsToProcess = Math.min(keyValidationRequests.claimedLength, numRequestsToVerify);
80
+ const keysHints = await Promise.all(
81
+ keyValidationRequests.array.slice(0, numRequestsToProcess).map(async ({ request }) => {
82
+ const secretKeys = await oracle.getMasterSecretKey(request.request.pkM);
83
+ return new KeyValidationHint(secretKeys);
84
+ }),
91
85
  );
86
+ return padArrayEnd(keysHints, KeyValidationHint.empty(), MAX_KEY_VALIDATION_REQUESTS_PER_TX);
92
87
  }
93
88
 
94
89
  export class PrivateKernelResetPrivateInputsBuilder {
@@ -96,25 +91,25 @@ export class PrivateKernelResetPrivateInputsBuilder {
96
91
  // If there's no next iteration, it's the final reset.
97
92
  private nextIteration?: PrivateCircuitPublicInputs;
98
93
 
99
- private noteHashResetStates: ReadRequestResetStates<typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>;
100
- private nullifierResetStates: ReadRequestResetStates<typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX>;
94
+ private noteHashResetActions: ReadRequestResetActions<typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>;
95
+ private nullifierResetActions: ReadRequestResetActions<typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX>;
101
96
  private numTransientData?: number;
102
- private transientDataIndexHints: Tuple<TransientDataIndexHint, typeof MAX_NULLIFIERS_PER_TX>;
97
+ private transientDataSquashingHints: Tuple<TransientDataSquashingHint, typeof MAX_NULLIFIERS_PER_TX>;
103
98
  private requestedDimensions: PrivateKernelResetDimensions;
104
99
 
105
100
  constructor(
106
101
  private previousKernelOutput: PrivateKernelSimulateOutput<PrivateKernelCircuitPublicInputs>,
107
102
  private executionStack: PrivateCallExecutionResult[],
108
103
  private noteHashNullifierCounterMap: Map<number, number>,
109
- private validationRequestsSplitCounter: number,
104
+ private splitCounter: number,
110
105
  ) {
111
106
  this.previousKernel = previousKernelOutput.publicInputs;
112
107
  this.requestedDimensions = PrivateKernelResetDimensions.empty();
113
- this.noteHashResetStates = ReadRequestResetStates.empty(MAX_NOTE_HASH_READ_REQUESTS_PER_TX);
114
- this.nullifierResetStates = ReadRequestResetStates.empty(MAX_NULLIFIER_READ_REQUESTS_PER_TX);
115
- this.transientDataIndexHints = makeTuple(
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(
116
111
  MAX_NULLIFIERS_PER_TX,
117
- () => new TransientDataIndexHint(MAX_NULLIFIERS_PER_TX, MAX_NOTE_HASHES_PER_TX),
112
+ () => new TransientDataSquashingHint(MAX_NULLIFIERS_PER_TX, MAX_NOTE_HASHES_PER_TX),
118
113
  );
119
114
  this.nextIteration = executionStack[this.executionStack.length - 1]?.publicInputs;
120
115
  }
@@ -143,7 +138,7 @@ export class PrivateKernelResetPrivateInputsBuilder {
143
138
  }
144
139
  }
145
140
 
146
- async build(oracle: ProvingDataOracle, noteHashLeafIndexMap: Map<bigint, bigint>) {
141
+ async build(oracle: PrivateKernelOracle) {
147
142
  if (privateKernelResetDimensionNames.every(name => !this.requestedDimensions[name])) {
148
143
  throw new Error('Reset is not required.');
149
144
  }
@@ -162,122 +157,130 @@ export class PrivateKernelResetPrivateInputsBuilder {
162
157
  allowRemainder,
163
158
  );
164
159
 
165
- const previousVkMembershipWitness = await oracle.getVkMembershipWitness(this.previousKernelOutput.verificationKey);
166
- const previousKernelData = new PrivateKernelData(
167
- this.previousKernelOutput.publicInputs,
160
+ const previousVkMembershipWitness = await oracle.getVkMembershipWitness(
161
+ this.previousKernelOutput.verificationKey.keyAsFields,
162
+ );
163
+ const vkData = new VkData(
168
164
  this.previousKernelOutput.verificationKey,
169
165
  Number(previousVkMembershipWitness.leafIndex),
170
- assertLength<Fr, typeof VK_TREE_HEIGHT>(previousVkMembershipWitness.siblingPath, VK_TREE_HEIGHT),
166
+ previousVkMembershipWitness.siblingPath,
171
167
  );
168
+ const previousKernelData = new PrivateKernelData(this.previousKernelOutput.publicInputs, vkData);
172
169
 
173
- this.reduceReadRequestStates(
174
- this.noteHashResetStates,
175
- dimensions.NOTE_HASH_PENDING_AMOUNT,
176
- dimensions.NOTE_HASH_SETTLED_AMOUNT,
170
+ this.reduceReadRequestActions(
171
+ this.noteHashResetActions,
172
+ dimensions.NOTE_HASH_PENDING_READ,
173
+ dimensions.NOTE_HASH_SETTLED_READ,
177
174
  );
178
- this.reduceReadRequestStates(
179
- this.nullifierResetStates,
180
- dimensions.NULLIFIER_PENDING_AMOUNT,
181
- dimensions.NULLIFIER_SETTLED_AMOUNT,
175
+ this.reduceReadRequestActions(
176
+ this.nullifierResetActions,
177
+ dimensions.NULLIFIER_PENDING_READ,
178
+ dimensions.NULLIFIER_SETTLED_READ,
182
179
  );
183
180
 
181
+ // TODO: Enable padding when we have a better idea what are the final amounts we should pad to.
182
+ const paddedSideEffects = PaddedSideEffects.empty();
183
+
184
184
  return new PrivateKernelResetCircuitPrivateInputs(
185
185
  previousKernelData,
186
+ paddedSideEffects,
186
187
  new PrivateKernelResetHints(
187
- await buildNoteHashReadRequestHintsFromResetStates(
188
+ await buildNoteHashReadRequestHintsFromResetActions(
188
189
  oracle,
189
190
  this.previousKernel.validationRequests.noteHashReadRequests,
190
191
  this.previousKernel.end.noteHashes,
191
- this.noteHashResetStates,
192
- noteHashLeafIndexMap,
192
+ this.noteHashResetActions,
193
193
  ),
194
- await buildNullifierReadRequestHintsFromResetStates(
194
+ await buildNullifierReadRequestHintsFromResetActions(
195
195
  { getNullifierMembershipWitness: getNullifierMembershipWitnessResolver(oracle) },
196
196
  this.previousKernel.validationRequests.nullifierReadRequests,
197
- this.nullifierResetStates,
197
+ this.nullifierResetActions,
198
198
  ),
199
199
  await getMasterSecretKeysAndAppKeyGenerators(
200
200
  this.previousKernel.validationRequests.scopedKeyValidationRequestsAndGenerators,
201
+ dimensions.KEY_VALIDATION,
201
202
  oracle,
202
203
  ),
203
- this.transientDataIndexHints,
204
- this.validationRequestsSplitCounter,
204
+ this.transientDataSquashingHints,
205
205
  ),
206
206
  dimensions,
207
207
  );
208
208
  }
209
209
 
210
- private reduceReadRequestStates<NUM_READS extends number>(
211
- resetStates: ReadRequestResetStates<NUM_READS>,
210
+ private reduceReadRequestActions<NUM_READS extends number>(
211
+ resetActions: ReadRequestResetActions<NUM_READS>,
212
212
  maxPending: number,
213
213
  maxSettled: number,
214
214
  ) {
215
215
  let numPending = 0;
216
216
  let numSettled = 0;
217
- for (let i = 0; i < resetStates.states.length; i++) {
218
- const state = resetStates.states[i];
219
- if (state === ReadRequestState.PENDING) {
217
+ for (let i = 0; i < resetActions.actions.length; i++) {
218
+ const action = resetActions.actions[i];
219
+ if (action === ReadRequestActionEnum.READ_AS_PENDING) {
220
220
  if (numPending < maxPending) {
221
221
  numPending++;
222
222
  } else {
223
- resetStates.states[i] = ReadRequestState.NADA;
223
+ resetActions.actions[i] = ReadRequestActionEnum.SKIP;
224
224
  }
225
- } else if (state === ReadRequestState.SETTLED) {
225
+ } else if (action === ReadRequestActionEnum.READ_AS_SETTLED) {
226
226
  if (numSettled < maxSettled) {
227
227
  numSettled++;
228
228
  } else {
229
- resetStates.states[i] = ReadRequestState.NADA;
229
+ resetActions.actions[i] = ReadRequestActionEnum.SKIP;
230
230
  }
231
231
  }
232
232
  }
233
233
 
234
- resetStates.pendingReadHints = resetStates.pendingReadHints.slice(0, maxPending);
234
+ resetActions.pendingReadHints = resetActions.pendingReadHints.slice(0, maxPending);
235
235
  }
236
236
 
237
237
  private needsResetNoteHashReadRequests(forceResetAll = false) {
238
- const numCurr = countAccumulatedItems(this.previousKernel.validationRequests.noteHashReadRequests);
239
- const numNext = this.nextIteration ? countAccumulatedItems(this.nextIteration.noteHashReadRequests) : 0;
238
+ const numCurr = this.previousKernel.validationRequests.noteHashReadRequests.claimedLength;
239
+ const numNext = this.nextIteration ? this.nextIteration.noteHashReadRequests.claimedLength : 0;
240
240
  const maxAmountToKeep = !this.nextIteration || forceResetAll ? 0 : MAX_NOTE_HASH_READ_REQUESTS_PER_TX;
241
241
  if (numCurr + numNext <= maxAmountToKeep) {
242
242
  return false;
243
243
  }
244
244
 
245
245
  const futureNoteHashes = collectNested(this.executionStack, executionResult => {
246
- const nonEmptyNoteHashes = getNonEmptyItems(executionResult.publicInputs.noteHashes);
247
- return nonEmptyNoteHashes.map(
248
- noteHash => new ScopedNoteHash(noteHash, executionResult.publicInputs.callContext.contractAddress),
249
- );
246
+ return executionResult.publicInputs.noteHashes
247
+ .getActiveItems()
248
+ .map(noteHash => new ScopedNoteHash(noteHash, executionResult.publicInputs.callContext.contractAddress));
250
249
  });
251
250
 
252
- const resetStates = getNoteHashReadRequestResetStates(
251
+ const resetActions = getNoteHashReadRequestResetActions(
253
252
  this.previousKernel.validationRequests.noteHashReadRequests,
254
253
  this.previousKernel.end.noteHashes,
255
254
  futureNoteHashes,
256
255
  );
257
256
 
258
- const numPendingReads = resetStates.pendingReadHints.length;
259
- const numSettledReads = resetStates.states.reduce(
260
- (accum, state) => accum + (state === ReadRequestState.SETTLED ? 1 : 0),
257
+ const numPendingReads = resetActions.pendingReadHints.length;
258
+ const numSettledReads = resetActions.actions.reduce(
259
+ (accum, action) => accum + (action === ReadRequestActionEnum.READ_AS_SETTLED ? 1 : 0),
261
260
  0,
262
261
  );
263
262
 
264
263
  if (!this.nextIteration) {
265
- this.noteHashResetStates = resetStates;
266
- this.requestedDimensions.NOTE_HASH_PENDING_AMOUNT = numPendingReads;
267
- this.requestedDimensions.NOTE_HASH_SETTLED_AMOUNT = numSettledReads;
264
+ this.noteHashResetActions = resetActions;
265
+ this.requestedDimensions.NOTE_HASH_PENDING_READ = numPendingReads;
266
+ this.requestedDimensions.NOTE_HASH_SETTLED_READ = numSettledReads;
268
267
  } else {
269
268
  // Pick only one dimension to reset if next iteration is not empty.
270
269
  if (numPendingReads > numSettledReads) {
271
- this.requestedDimensions.NOTE_HASH_PENDING_AMOUNT = numPendingReads;
272
- this.noteHashResetStates.states = assertLength(
273
- resetStates.states.map(state => (state === ReadRequestState.PENDING ? state : ReadRequestState.NADA)),
270
+ this.requestedDimensions.NOTE_HASH_PENDING_READ = numPendingReads;
271
+ this.noteHashResetActions.actions = assertLength(
272
+ resetActions.actions.map(action =>
273
+ action === ReadRequestActionEnum.READ_AS_PENDING ? action : ReadRequestActionEnum.SKIP,
274
+ ),
274
275
  MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
275
276
  );
276
- this.noteHashResetStates.pendingReadHints = resetStates.pendingReadHints;
277
+ this.noteHashResetActions.pendingReadHints = resetActions.pendingReadHints;
277
278
  } else {
278
- this.requestedDimensions.NOTE_HASH_SETTLED_AMOUNT = numSettledReads;
279
- this.noteHashResetStates.states = assertLength(
280
- resetStates.states.map(state => (state === ReadRequestState.SETTLED ? state : ReadRequestState.NADA)),
279
+ this.requestedDimensions.NOTE_HASH_SETTLED_READ = numSettledReads;
280
+ this.noteHashResetActions.actions = assertLength(
281
+ resetActions.actions.map(action =>
282
+ action === ReadRequestActionEnum.READ_AS_SETTLED ? action : ReadRequestActionEnum.SKIP,
283
+ ),
281
284
  MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
282
285
  );
283
286
  }
@@ -287,49 +290,52 @@ export class PrivateKernelResetPrivateInputsBuilder {
287
290
  }
288
291
 
289
292
  private needsResetNullifierReadRequests(forceResetAll = false) {
290
- const numCurr = countAccumulatedItems(this.previousKernel.validationRequests.nullifierReadRequests);
291
- const numNext = this.nextIteration ? countAccumulatedItems(this.nextIteration.nullifierReadRequests) : 0;
293
+ const numCurr = this.previousKernel.validationRequests.nullifierReadRequests.claimedLength;
294
+ const numNext = this.nextIteration ? this.nextIteration.nullifierReadRequests.claimedLength : 0;
292
295
  const maxAmountToKeep = !this.nextIteration || forceResetAll ? 0 : MAX_NULLIFIER_READ_REQUESTS_PER_TX;
293
296
  if (numCurr + numNext <= maxAmountToKeep) {
294
297
  return false;
295
298
  }
296
299
 
297
300
  const futureNullifiers = collectNested(this.executionStack, executionResult => {
298
- const nonEmptyNullifiers = getNonEmptyItems(executionResult.publicInputs.nullifiers);
299
- return nonEmptyNullifiers.map(
300
- nullifier => new ScopedNullifier(nullifier, executionResult.publicInputs.callContext.contractAddress),
301
- );
301
+ return executionResult.publicInputs.nullifiers
302
+ .getActiveItems()
303
+ .map(nullifier => new ScopedNullifier(nullifier, executionResult.publicInputs.callContext.contractAddress));
302
304
  });
303
305
 
304
- const resetStates = getNullifierReadRequestResetStates(
306
+ const resetActions = getNullifierReadRequestResetActions(
305
307
  this.previousKernel.validationRequests.nullifierReadRequests,
306
308
  this.previousKernel.end.nullifiers,
307
309
  futureNullifiers,
308
310
  );
309
311
 
310
- const numPendingReads = resetStates.pendingReadHints.length;
311
- const numSettledReads = resetStates.states.reduce(
312
- (accum, state) => accum + (state === ReadRequestState.SETTLED ? 1 : 0),
312
+ const numPendingReads = resetActions.pendingReadHints.length;
313
+ const numSettledReads = resetActions.actions.reduce(
314
+ (accum, action) => accum + (action === ReadRequestActionEnum.READ_AS_SETTLED ? 1 : 0),
313
315
  0,
314
316
  );
315
317
 
316
318
  if (!this.nextIteration) {
317
- this.nullifierResetStates = resetStates;
318
- this.requestedDimensions.NULLIFIER_PENDING_AMOUNT = numPendingReads;
319
- this.requestedDimensions.NULLIFIER_SETTLED_AMOUNT = numSettledReads;
319
+ this.nullifierResetActions = resetActions;
320
+ this.requestedDimensions.NULLIFIER_PENDING_READ = numPendingReads;
321
+ this.requestedDimensions.NULLIFIER_SETTLED_READ = numSettledReads;
320
322
  } else {
321
323
  // Pick only one dimension to reset if next iteration is not empty.
322
324
  if (numPendingReads > numSettledReads) {
323
- this.requestedDimensions.NULLIFIER_PENDING_AMOUNT = numPendingReads;
324
- this.nullifierResetStates.states = assertLength(
325
- resetStates.states.map(state => (state === ReadRequestState.PENDING ? state : ReadRequestState.NADA)),
325
+ this.requestedDimensions.NULLIFIER_PENDING_READ = numPendingReads;
326
+ this.nullifierResetActions.actions = assertLength(
327
+ resetActions.actions.map(action =>
328
+ action === ReadRequestActionEnum.READ_AS_PENDING ? action : ReadRequestActionEnum.SKIP,
329
+ ),
326
330
  MAX_NULLIFIER_READ_REQUESTS_PER_TX,
327
331
  );
328
- this.nullifierResetStates.pendingReadHints = resetStates.pendingReadHints;
332
+ this.nullifierResetActions.pendingReadHints = resetActions.pendingReadHints;
329
333
  } else {
330
- this.requestedDimensions.NULLIFIER_SETTLED_AMOUNT = numSettledReads;
331
- this.nullifierResetStates.states = assertLength(
332
- resetStates.states.map(state => (state === ReadRequestState.SETTLED ? state : ReadRequestState.NADA)),
334
+ this.requestedDimensions.NULLIFIER_SETTLED_READ = numSettledReads;
335
+ this.nullifierResetActions.actions = assertLength(
336
+ resetActions.actions.map(action =>
337
+ action === ReadRequestActionEnum.READ_AS_SETTLED ? action : ReadRequestActionEnum.SKIP,
338
+ ),
333
339
  MAX_NULLIFIER_READ_REQUESTS_PER_TX,
334
340
  );
335
341
  }
@@ -339,18 +345,14 @@ export class PrivateKernelResetPrivateInputsBuilder {
339
345
  }
340
346
 
341
347
  private needsResetNullifierKeys() {
342
- const numCurr = countAccumulatedItems(
343
- this.previousKernel.validationRequests.scopedKeyValidationRequestsAndGenerators,
344
- );
345
- const numNext = this.nextIteration
346
- ? countAccumulatedItems(this.nextIteration.keyValidationRequestsAndGenerators)
347
- : 0;
348
+ const numCurr = this.previousKernel.validationRequests.scopedKeyValidationRequestsAndGenerators.claimedLength;
349
+ const numNext = this.nextIteration ? this.nextIteration.keyValidationRequestsAndGenerators.claimedLength : 0;
348
350
  const maxAmountToKeep = !this.nextIteration ? 0 : MAX_KEY_VALIDATION_REQUESTS_PER_TX;
349
351
  if (numCurr + numNext <= maxAmountToKeep) {
350
352
  return false;
351
353
  }
352
354
 
353
- this.requestedDimensions.NULLIFIER_KEYS = numCurr;
355
+ this.requestedDimensions.KEY_VALIDATION = numCurr;
354
356
 
355
357
  return true;
356
358
  }
@@ -360,14 +362,16 @@ export class PrivateKernelResetPrivateInputsBuilder {
360
362
  this.numTransientData = 0;
361
363
 
362
364
  const nextAccumNoteHashes =
363
- countAccumulatedItems(this.previousKernel.end.noteHashes) +
364
- countAccumulatedItems(this.nextIteration?.noteHashes ?? []);
365
+ this.previousKernel.end.noteHashes.claimedLength + (this.nextIteration?.noteHashes.claimedLength ?? 0);
365
366
  const noteHashWillOverflow = nextAccumNoteHashes > MAX_NOTE_HASHES_PER_TX;
366
367
  const nextAccumNullifiers =
367
- countAccumulatedItems(this.previousKernel.end.nullifiers) +
368
- countAccumulatedItems(this.nextIteration?.nullifiers ?? []);
368
+ this.previousKernel.end.nullifiers.claimedLength + (this.nextIteration?.nullifiers.claimedLength ?? 0);
369
369
  const nullifierWillOverflow = nextAccumNullifiers > MAX_NULLIFIERS_PER_TX;
370
- if (this.nextIteration && !noteHashWillOverflow && !nullifierWillOverflow) {
370
+ const nextAccumLogs =
371
+ this.previousKernel.end.privateLogs.claimedLength + (this.nextIteration?.privateLogs.claimedLength ?? 0);
372
+ const logsWillOverflow = nextAccumLogs > MAX_PRIVATE_LOGS_PER_TX;
373
+
374
+ if (this.nextIteration && !noteHashWillOverflow && !nullifierWillOverflow && !logsWillOverflow) {
371
375
  return false;
372
376
  }
373
377
 
@@ -379,35 +383,36 @@ export class PrivateKernelResetPrivateInputsBuilder {
379
383
  this.executionStack,
380
384
  executionResult => executionResult.publicInputs.nullifierReadRequests,
381
385
  );
386
+ // TODO(#15902): Collect future logs and only allow squashing a note hash when all its logs have been emitted
387
+ // (i.e. none of the future logs are linked to the to-be-squashed note hashes).
382
388
  if (this.nextIteration) {
383
389
  // If it's not the final reset, only one dimension will be reset at a time.
384
390
  // The note hashes and nullifiers for the remaining read requests can't be squashed.
385
- futureNoteHashReads.push(
386
- ...this.previousKernel.validationRequests.noteHashReadRequests.filter(r => !r.isEmpty()),
387
- );
388
- futureNullifierReads.push(
389
- ...this.previousKernel.validationRequests.nullifierReadRequests.filter(r => !r.isEmpty()),
390
- );
391
+ futureNoteHashReads.push(...this.previousKernel.validationRequests.noteHashReadRequests.getActiveItems());
392
+ futureNullifierReads.push(...this.previousKernel.validationRequests.nullifierReadRequests.getActiveItems());
391
393
  }
392
394
 
393
- const { numTransientData, hints: transientDataIndexHints } = buildTransientDataHints(
395
+ const { numTransientData, hints: transientDataSquashingHints } = buildTransientDataHints(
394
396
  this.previousKernel.end.noteHashes,
395
397
  this.previousKernel.end.nullifiers,
396
398
  futureNoteHashReads,
397
399
  futureNullifierReads,
398
400
  this.noteHashNullifierCounterMap,
399
- this.validationRequestsSplitCounter,
400
- MAX_NOTE_HASHES_PER_TX,
401
- MAX_NULLIFIERS_PER_TX,
401
+ this.splitCounter,
402
402
  );
403
403
 
404
404
  if (this.nextIteration && !numTransientData) {
405
405
  const forceResetAll = true;
406
406
  const canClearReadRequests =
407
407
  (noteHashWillOverflow && this.needsResetNoteHashReadRequests(forceResetAll)) ||
408
- (nullifierWillOverflow && this.needsResetNullifierReadRequests(forceResetAll));
408
+ (nullifierWillOverflow && this.needsResetNullifierReadRequests(forceResetAll)) ||
409
+ (logsWillOverflow && this.needsResetNoteHashReadRequests(forceResetAll));
409
410
  if (!canClearReadRequests) {
410
- const overflownData = noteHashWillOverflow ? 'note hashes' : 'nullifiers';
411
+ const overflownData = noteHashWillOverflow
412
+ ? 'note hashes'
413
+ : nullifierWillOverflow
414
+ ? 'nullifiers'
415
+ : 'private logs';
411
416
  throw new Error(`Number of ${overflownData} exceeds the limit.`);
412
417
  }
413
418
  // Clearing the read requests might not be enough to squash the overflown data.
@@ -416,8 +421,8 @@ export class PrivateKernelResetPrivateInputsBuilder {
416
421
  }
417
422
 
418
423
  this.numTransientData = numTransientData;
419
- this.transientDataIndexHints = transientDataIndexHints;
420
- this.requestedDimensions.TRANSIENT_DATA_AMOUNT = numTransientData;
424
+ this.transientDataSquashingHints = transientDataSquashingHints;
425
+ this.requestedDimensions.TRANSIENT_DATA_SQUASHING = numTransientData;
421
426
 
422
427
  return numTransientData > 0;
423
428
  }
@@ -427,9 +432,11 @@ export class PrivateKernelResetPrivateInputsBuilder {
427
432
  throw new Error('`needsResetTransientData` must be run before `needsSiloNoteHashes`.');
428
433
  }
429
434
 
430
- const numNoteHashes = this.previousKernel.end.noteHashes.filter(n => !n.contractAddress.isZero()).length;
435
+ const numNoteHashes = this.previousKernel.end.noteHashes
436
+ .getActiveItems()
437
+ .filter(n => !n.contractAddress.isZero()).length;
431
438
  const numToSilo = Math.max(0, numNoteHashes - this.numTransientData);
432
- this.requestedDimensions.NOTE_HASH_SILOING_AMOUNT = numToSilo;
439
+ this.requestedDimensions.NOTE_HASH_SILOING = numToSilo;
433
440
 
434
441
  return numToSilo > 0;
435
442
  }
@@ -439,13 +446,15 @@ export class PrivateKernelResetPrivateInputsBuilder {
439
446
  throw new Error('`needsResetTransientData` must be run before `needsSiloNullifiers`.');
440
447
  }
441
448
 
442
- const numNullifiers = this.previousKernel.end.nullifiers.filter(n => !n.contractAddress.isZero()).length;
449
+ const numNullifiers = this.previousKernel.end.nullifiers
450
+ .getActiveItems()
451
+ .filter(n => !n.contractAddress.isZero()).length;
443
452
  const numToSilo = Math.max(0, numNullifiers - this.numTransientData);
444
453
  // Include the first nullifier if there's something to silo.
445
454
  // The reset circuit checks that capped_size must be greater than or equal to all non-empty nullifiers.
446
455
  // Which includes the first nullifier, even though its contract address is always zero and doesn't need siloing.
447
456
  const cappedSize = numToSilo ? numToSilo + 1 : 0;
448
- this.requestedDimensions.NULLIFIER_SILOING_AMOUNT = cappedSize;
457
+ this.requestedDimensions.NULLIFIER_SILOING = cappedSize;
449
458
 
450
459
  return numToSilo > 0;
451
460
  }
@@ -456,16 +465,18 @@ export class PrivateKernelResetPrivateInputsBuilder {
456
465
  }
457
466
 
458
467
  const privateLogs = this.previousKernel.end.privateLogs;
459
- const numLogs = privateLogs.filter(l => !l.contractAddress.isZero()).length;
468
+ const numLogs = privateLogs.getActiveItems().filter(l => !l.contractAddress.isZero()).length;
460
469
 
461
470
  const noteHashes = this.previousKernel.end.noteHashes;
462
- const squashedNoteHashCounters = this.transientDataIndexHints
463
- .filter(h => h.noteHashIndex < noteHashes.length)
464
- .map(h => noteHashes[h.noteHashIndex].counter);
465
- const numSquashedLogs = privateLogs.filter(l => squashedNoteHashCounters.includes(l.inner.noteHashCounter)).length;
471
+ const squashedNoteHashCounters = this.transientDataSquashingHints
472
+ .filter(h => h.noteHashIndex < noteHashes.claimedLength)
473
+ .map(h => noteHashes.array[h.noteHashIndex].counter);
474
+ const numSquashedLogs = privateLogs
475
+ .getActiveItems()
476
+ .filter(l => squashedNoteHashCounters.includes(l.inner.noteHashCounter)).length;
466
477
 
467
478
  const numToSilo = numLogs - numSquashedLogs;
468
- this.requestedDimensions.PRIVATE_LOG_SILOING_AMOUNT = numToSilo;
479
+ this.requestedDimensions.PRIVATE_LOG_SILOING = numToSilo;
469
480
 
470
481
  return numToSilo > 0;
471
482
  }
@@ -0,0 +1,58 @@
1
+ import { MAX_INCLUDE_BY_TIMESTAMP_DURATION } from '@aztec/constants';
2
+ import type { PrivateKernelCircuitPublicInputs } from '@aztec/stdlib/kernel';
3
+ import type { UInt64 } from '@aztec/stdlib/types';
4
+
5
+ const ROUNDED_DURATIONS = [
6
+ 3600, // 1 hour
7
+ 1800, // 30 mins
8
+ 1, // 1 second
9
+ ];
10
+
11
+ function roundTimestamp(blockTimestamp: bigint, includeByTimestamp: bigint): UInt64 {
12
+ return ROUNDED_DURATIONS.reduce((timestamp, duration) => {
13
+ if (timestamp <= blockTimestamp) {
14
+ // The timestamp must be greater than the block timestamp.
15
+ // If it is too small, round it down again using a smaller duration.
16
+ const totalDuration = includeByTimestamp - blockTimestamp;
17
+ const roundedDuration = totalDuration - (totalDuration % BigInt(duration));
18
+ return blockTimestamp + roundedDuration;
19
+ }
20
+ return timestamp;
21
+ }, 0n);
22
+ }
23
+
24
+ export function computeTxIncludeByTimestamp(
25
+ previousKernel: PrivateKernelCircuitPublicInputs,
26
+ maxDuration = MAX_INCLUDE_BY_TIMESTAMP_DURATION,
27
+ ): UInt64 {
28
+ if (maxDuration > MAX_INCLUDE_BY_TIMESTAMP_DURATION) {
29
+ throw new Error(
30
+ `Custom max duration cannot be greater than the max allowed. Max allowed: ${MAX_INCLUDE_BY_TIMESTAMP_DURATION}. Custom value: ${maxDuration}.`,
31
+ );
32
+ }
33
+
34
+ const anchorBlockTimestamp = previousKernel.constants.anchorBlockHeader.globalVariables.timestamp;
35
+ const maxTimestamp = anchorBlockTimestamp + BigInt(maxDuration);
36
+ const includeByTimestamp = previousKernel.includeByTimestamp;
37
+
38
+ // If the includeByTimestamp set during the tx execution is greater than or equal to the max allowed duration,
39
+ // use the maximum allowed timestamp.
40
+ // Note: It shouldn't be larger than the max allowed duration, but we check for it anyway.
41
+ if (includeByTimestamp >= maxTimestamp) {
42
+ return maxTimestamp;
43
+ }
44
+
45
+ // Round it down to the nearest hour/min/second to reduce precision and avoid revealing the exact value.
46
+ // This makes it harder for others to infer what function calls may have been used to produce a specific timestamp.
47
+ const roundedTimestamp = roundTimestamp(anchorBlockTimestamp, includeByTimestamp);
48
+
49
+ // The tx can't be published if the timestamp is the same or less than the anchor block's timestamp.
50
+ // Future blocks will have a greater timestamp, so the tx would never be included.
51
+ if (roundedTimestamp <= anchorBlockTimestamp) {
52
+ throw new Error(
53
+ `Include-by timestamp must be greater than the anchor block timestamp. Anchor block timestamp: ${anchorBlockTimestamp}. Include-by timestamp: ${includeByTimestamp}.`,
54
+ );
55
+ }
56
+
57
+ return roundedTimestamp;
58
+ }
@@ -1 +1,2 @@
1
1
  export * from './build_private_kernel_reset_private_inputs.js';
2
+ export * from './compute_tx_include_by_timestamp.js';
@@ -0,0 +1,2 @@
1
+ export * from './private_kernel_execution_prover.js';
2
+ export * from './private_kernel_oracle.js';