@aztec/pxe 0.0.0-test.1 → 0.0.1-commit.017a351

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 (573) 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 +73 -0
  5. package/dest/bin/index.d.ts +2 -3
  6. package/dest/bin/index.d.ts.map +1 -1
  7. package/dest/bin/index.js +1 -28
  8. package/dest/bin/oracle_version_helpers.d.ts +26 -0
  9. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  10. package/dest/bin/oracle_version_helpers.js +93 -0
  11. package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
  12. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
  13. package/dest/block_synchronizer/block_stream_source.js +62 -0
  14. package/dest/block_synchronizer/block_synchronizer.d.ts +49 -0
  15. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  16. package/dest/block_synchronizer/block_synchronizer.js +173 -0
  17. package/dest/block_synchronizer/index.d.ts +2 -0
  18. package/dest/block_synchronizer/index.d.ts.map +1 -0
  19. package/dest/block_synchronizer/index.js +1 -0
  20. package/dest/config/index.d.ts +20 -25
  21. package/dest/config/index.d.ts.map +1 -1
  22. package/dest/config/index.js +35 -35
  23. package/dest/config/package_info.d.ts +1 -1
  24. package/dest/config/package_info.js +1 -1
  25. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  26. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  27. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  28. package/dest/contract_function_simulator/contract_function_simulator.d.ts +119 -0
  29. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -0
  30. package/dest/contract_function_simulator/contract_function_simulator.js +480 -0
  31. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  32. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  33. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  34. package/dest/contract_function_simulator/execution_note_cache.d.ts +104 -0
  35. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -0
  36. package/dest/contract_function_simulator/execution_note_cache.js +208 -0
  37. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +12 -0
  38. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -0
  39. package/dest/contract_function_simulator/execution_tagging_index_cache.js +30 -0
  40. package/dest/contract_function_simulator/hashed_values_cache.d.ts +28 -0
  41. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -0
  42. package/dest/contract_function_simulator/hashed_values_cache.js +36 -0
  43. package/dest/contract_function_simulator/index.d.ts +26 -0
  44. package/dest/contract_function_simulator/index.d.ts.map +1 -0
  45. package/dest/contract_function_simulator/index.js +23 -0
  46. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +48 -0
  47. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  48. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +45 -0
  49. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  50. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  51. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  52. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +20 -0
  53. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -0
  54. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +39 -0
  55. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +26 -0
  56. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -0
  57. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +57 -0
  58. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +17 -0
  59. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -0
  60. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +63 -0
  61. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  62. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  63. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  64. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +22 -0
  65. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -0
  66. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +47 -0
  67. package/dest/contract_function_simulator/noir-structs/option.d.ts +61 -0
  68. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  69. package/dest/contract_function_simulator/noir-structs/option.js +62 -0
  70. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +11 -0
  71. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  72. package/dest/contract_function_simulator/noir-structs/provided_secret.js +24 -0
  73. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +16 -0
  74. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -0
  75. package/dest/contract_function_simulator/noir-structs/utility_context.js +22 -0
  76. package/dest/contract_function_simulator/oracle/index.d.ts +14 -0
  77. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -0
  78. package/dest/contract_function_simulator/oracle/index.js +2 -0
  79. package/dest/contract_function_simulator/oracle/interfaces.d.ts +25 -0
  80. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -0
  81. package/dest/contract_function_simulator/oracle/interfaces.js +4 -0
  82. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +19 -0
  83. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -0
  84. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +24 -0
  85. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +28 -0
  86. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -0
  87. package/dest/contract_function_simulator/oracle/note_packing_utils.js +54 -0
  88. package/dest/contract_function_simulator/oracle/oracle.d.ts +89 -0
  89. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -0
  90. package/dest/contract_function_simulator/oracle/oracle.js +552 -0
  91. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +127 -0
  92. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  93. package/dest/contract_function_simulator/oracle/oracle_registry.js +786 -0
  94. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +139 -0
  95. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  96. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +560 -0
  97. package/dest/contract_function_simulator/oracle/private_execution.d.ts +23 -0
  98. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -0
  99. package/dest/contract_function_simulator/oracle/private_execution.js +89 -0
  100. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +212 -0
  101. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -0
  102. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +457 -0
  103. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +283 -0
  104. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -0
  105. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +654 -0
  106. package/dest/contract_function_simulator/pick_notes.d.ts +85 -0
  107. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -0
  108. package/dest/contract_function_simulator/pick_notes.js +68 -0
  109. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +6 -0
  110. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -0
  111. package/dest/contract_function_simulator/proxied_contract_data_source.js +51 -0
  112. package/dest/contract_logging.d.ts +27 -0
  113. package/dest/contract_logging.d.ts.map +1 -0
  114. package/dest/contract_logging.js +38 -0
  115. package/dest/contract_sync/contract_sync_service.d.ts +42 -0
  116. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  117. package/dest/contract_sync/contract_sync_service.js +135 -0
  118. package/dest/contract_sync/helpers.d.ts +27 -0
  119. package/dest/contract_sync/helpers.d.ts.map +1 -0
  120. package/dest/contract_sync/helpers.js +53 -0
  121. package/dest/debug/pxe_debug_utils.d.ts +40 -0
  122. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  123. package/dest/debug/pxe_debug_utils.js +42 -0
  124. package/dest/entrypoints/client/bundle/index.d.ts +6 -3
  125. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  126. package/dest/entrypoints/client/bundle/index.js +4 -2
  127. package/dest/entrypoints/client/bundle/utils.d.ts +10 -10
  128. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  129. package/dest/entrypoints/client/bundle/utils.js +51 -14
  130. package/dest/entrypoints/client/lazy/index.d.ts +6 -3
  131. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  132. package/dest/entrypoints/client/lazy/index.js +4 -2
  133. package/dest/entrypoints/client/lazy/utils.d.ts +10 -10
  134. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  135. package/dest/entrypoints/client/lazy/utils.js +51 -14
  136. package/dest/entrypoints/pxe_creation_options.d.ts +26 -0
  137. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -0
  138. package/dest/entrypoints/pxe_creation_options.js +3 -0
  139. package/dest/entrypoints/server/index.d.ts +10 -4
  140. package/dest/entrypoints/server/index.d.ts.map +1 -1
  141. package/dest/entrypoints/server/index.js +8 -3
  142. package/dest/entrypoints/server/utils.d.ts +9 -16
  143. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  144. package/dest/entrypoints/server/utils.js +62 -36
  145. package/dest/error_enriching.d.ts +11 -0
  146. package/dest/error_enriching.d.ts.map +1 -0
  147. package/dest/{pxe_service/error_enriching.js → error_enriching.js} +30 -22
  148. package/dest/events/event_service.d.ts +24 -0
  149. package/dest/events/event_service.d.ts.map +1 -0
  150. package/dest/events/event_service.js +77 -0
  151. package/dest/events/index.d.ts +2 -0
  152. package/dest/events/index.d.ts.map +1 -0
  153. package/dest/events/index.js +1 -0
  154. package/dest/events/private_event_filter_validator.d.ts +10 -0
  155. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  156. package/dest/events/private_event_filter_validator.js +53 -0
  157. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  158. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  159. package/dest/hooks/authorize_utility_call.js +4 -0
  160. package/dest/hooks/execution_hooks.d.ts +42 -0
  161. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  162. package/dest/hooks/execution_hooks.js +9 -0
  163. package/dest/hooks/index.d.ts +4 -0
  164. package/dest/hooks/index.d.ts.map +1 -0
  165. package/dest/hooks/index.js +1 -0
  166. package/dest/job_coordinator/job_coordinator.d.ts +75 -0
  167. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  168. package/dest/job_coordinator/job_coordinator.js +94 -0
  169. package/dest/logs/log_service.d.ts +29 -0
  170. package/dest/logs/log_service.d.ts.map +1 -0
  171. package/dest/logs/log_service.js +172 -0
  172. package/dest/messages/message_context_service.d.ts +17 -0
  173. package/dest/messages/message_context_service.d.ts.map +1 -0
  174. package/dest/messages/message_context_service.js +55 -0
  175. package/dest/notes/index.d.ts +2 -0
  176. package/dest/notes/index.d.ts.map +1 -0
  177. package/dest/notes/index.js +1 -0
  178. package/dest/notes/note_service.d.ts +70 -0
  179. package/dest/notes/note_service.d.ts.map +1 -0
  180. package/dest/notes/note_service.js +172 -0
  181. package/dest/notes_filter.d.ts +24 -0
  182. package/dest/notes_filter.d.ts.map +1 -0
  183. package/dest/notes_filter.js +4 -0
  184. package/dest/oracle_version.d.ts +4 -0
  185. package/dest/oracle_version.d.ts.map +1 -0
  186. package/dest/oracle_version.js +21 -0
  187. package/dest/private_kernel/batch_planner.d.ts +47 -0
  188. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  189. package/dest/private_kernel/batch_planner.js +104 -0
  190. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  191. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  192. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.js +41 -0
  193. package/dest/private_kernel/hints/index.d.ts +3 -0
  194. package/dest/private_kernel/hints/index.d.ts.map +1 -0
  195. package/dest/private_kernel/hints/index.js +2 -0
  196. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -0
  197. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  198. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +338 -0
  199. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  200. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  201. package/dest/private_kernel/hints/test_utils.js +202 -0
  202. package/dest/private_kernel/index.d.ts +3 -0
  203. package/dest/private_kernel/index.d.ts.map +1 -0
  204. package/dest/private_kernel/index.js +2 -0
  205. package/dest/private_kernel/private_kernel_execution_prover.d.ts +49 -0
  206. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -0
  207. package/dest/private_kernel/private_kernel_execution_prover.js +386 -0
  208. package/dest/private_kernel/private_kernel_oracle.d.ts +63 -0
  209. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -0
  210. package/dest/private_kernel/private_kernel_oracle.js +98 -0
  211. package/dest/pxe.d.ts +300 -0
  212. package/dest/pxe.d.ts.map +1 -0
  213. package/dest/pxe.js +839 -0
  214. package/dest/storage/address_store/address_store.d.ts +11 -0
  215. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  216. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +13 -15
  217. package/dest/storage/address_store/index.d.ts +2 -0
  218. package/dest/storage/address_store/index.d.ts.map +1 -0
  219. package/dest/storage/address_store/index.js +1 -0
  220. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +17 -0
  221. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  222. package/dest/storage/anchor_block_store/anchor_block_store.js +26 -0
  223. package/dest/storage/anchor_block_store/index.d.ts +2 -0
  224. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  225. package/dest/storage/anchor_block_store/index.js +1 -0
  226. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  227. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  228. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  229. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  230. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  231. package/dest/storage/backwards_compatibility_tests/schema_tests.js +591 -0
  232. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  233. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  234. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  235. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  236. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  237. package/dest/storage/capsule_store/capsule_service.js +50 -0
  238. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  239. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  240. package/dest/storage/capsule_store/capsule_store.js +261 -0
  241. package/dest/storage/capsule_store/index.d.ts +3 -0
  242. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  243. package/dest/storage/capsule_store/index.js +2 -0
  244. package/dest/storage/contract_store/contract_store.d.ts +93 -0
  245. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  246. package/dest/storage/contract_store/contract_store.js +292 -0
  247. package/dest/storage/contract_store/index.d.ts +2 -0
  248. package/dest/storage/contract_store/index.d.ts.map +1 -0
  249. package/dest/storage/contract_store/index.js +1 -0
  250. package/dest/storage/contract_store/private_functions_tree.d.ts +27 -0
  251. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  252. package/dest/storage/contract_store/private_functions_tree.js +47 -0
  253. package/dest/storage/index.d.ts +9 -10
  254. package/dest/storage/index.d.ts.map +1 -1
  255. package/dest/storage/index.js +8 -9
  256. package/dest/storage/metadata.d.ts +2 -0
  257. package/dest/storage/metadata.d.ts.map +1 -0
  258. package/dest/storage/metadata.js +1 -0
  259. package/dest/storage/note_store/index.d.ts +3 -0
  260. package/dest/storage/note_store/index.d.ts.map +1 -0
  261. package/dest/storage/note_store/index.js +2 -0
  262. package/dest/storage/note_store/note_store.d.ts +83 -0
  263. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  264. package/dest/storage/note_store/note_store.js +343 -0
  265. package/dest/storage/note_store/stored_note.d.ts +16 -0
  266. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  267. package/dest/storage/note_store/stored_note.js +43 -0
  268. package/dest/storage/open_pxe_stores.d.ts +33 -0
  269. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  270. package/dest/storage/open_pxe_stores.js +27 -0
  271. package/dest/storage/private_event_store/private_event_store.d.ts +91 -0
  272. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  273. package/dest/storage/private_event_store/private_event_store.js +276 -0
  274. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  275. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  276. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  277. package/dest/storage/tagging_store/index.d.ts +4 -0
  278. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  279. package/dest/storage/tagging_store/index.js +3 -0
  280. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
  281. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  282. package/dest/storage/tagging_store/recipient_tagging_store.js +111 -0
  283. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  284. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  285. package/dest/storage/tagging_store/sender_address_book_store.js +36 -0
  286. package/dest/storage/tagging_store/sender_tagging_store.d.ts +78 -0
  287. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  288. package/dest/storage/tagging_store/sender_tagging_store.js +374 -0
  289. package/dest/tagging/constants.d.ts +2 -0
  290. package/dest/tagging/constants.d.ts.map +1 -0
  291. package/dest/tagging/constants.js +10 -0
  292. package/dest/tagging/get_all_logs_by_tags.d.ts +48 -0
  293. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  294. package/dest/tagging/get_all_logs_by_tags.js +59 -0
  295. package/dest/tagging/index.d.ts +18 -0
  296. package/dest/tagging/index.d.ts.map +1 -0
  297. package/dest/tagging/index.js +16 -0
  298. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  299. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  300. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  301. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +56 -0
  302. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  303. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +163 -0
  304. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  305. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  306. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  307. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  308. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  309. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  310. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +16 -0
  311. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  312. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +92 -0
  313. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +17 -0
  314. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  315. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +60 -0
  316. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +19 -0
  317. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  318. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +72 -0
  319. package/package.json +48 -33
  320. package/src/bin/check_oracle_version.ts +88 -0
  321. package/src/bin/index.ts +1 -38
  322. package/src/bin/oracle_version_helpers.ts +121 -0
  323. package/src/block_synchronizer/block_stream_source.ts +81 -0
  324. package/src/block_synchronizer/block_synchronizer.ts +200 -0
  325. package/src/block_synchronizer/index.ts +1 -0
  326. package/src/config/index.ts +48 -56
  327. package/src/config/package_info.ts +1 -1
  328. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  329. package/src/contract_function_simulator/contract_function_simulator.ts +888 -0
  330. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  331. package/src/contract_function_simulator/execution_note_cache.ts +252 -0
  332. package/src/contract_function_simulator/execution_tagging_index_cache.ts +33 -0
  333. package/src/contract_function_simulator/hashed_values_cache.ts +47 -0
  334. package/src/contract_function_simulator/index.ts +63 -0
  335. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +55 -0
  336. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  337. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +52 -0
  338. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +61 -0
  339. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +66 -0
  340. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  341. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +59 -0
  342. package/src/contract_function_simulator/noir-structs/option.ts +69 -0
  343. package/src/contract_function_simulator/noir-structs/provided_secret.ts +27 -0
  344. package/src/contract_function_simulator/noir-structs/utility_context.ts +23 -0
  345. package/src/contract_function_simulator/oracle/index.ts +16 -0
  346. package/src/contract_function_simulator/oracle/interfaces.ts +21 -0
  347. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +23 -0
  348. package/src/contract_function_simulator/oracle/note_packing_utils.ts +68 -0
  349. package/src/contract_function_simulator/oracle/oracle.ts +711 -0
  350. package/src/contract_function_simulator/oracle/oracle_registry.ts +585 -0
  351. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +553 -0
  352. package/src/contract_function_simulator/oracle/private_execution.ts +141 -0
  353. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +667 -0
  354. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +967 -0
  355. package/src/contract_function_simulator/pick_notes.ts +160 -0
  356. package/src/contract_function_simulator/proxied_contract_data_source.ts +60 -0
  357. package/src/contract_logging.ts +52 -0
  358. package/src/contract_sync/contract_sync_service.ts +189 -0
  359. package/src/contract_sync/helpers.ts +86 -0
  360. package/src/debug/pxe_debug_utils.ts +85 -0
  361. package/src/entrypoints/client/bundle/index.ts +5 -2
  362. package/src/entrypoints/client/bundle/utils.ts +47 -35
  363. package/src/entrypoints/client/lazy/index.ts +5 -2
  364. package/src/entrypoints/client/lazy/utils.ts +48 -31
  365. package/src/entrypoints/pxe_creation_options.ts +28 -0
  366. package/src/entrypoints/server/index.ts +9 -3
  367. package/src/entrypoints/server/utils.ts +65 -56
  368. package/src/{pxe_service/error_enriching.ts → error_enriching.ts} +40 -39
  369. package/src/events/event_service.ts +119 -0
  370. package/src/events/index.ts +1 -0
  371. package/src/events/private_event_filter_validator.ts +66 -0
  372. package/src/hooks/authorize_utility_call.ts +44 -0
  373. package/src/hooks/execution_hooks.ts +48 -0
  374. package/src/hooks/index.ts +7 -0
  375. package/src/job_coordinator/job_coordinator.ts +150 -0
  376. package/src/logs/log_service.ts +237 -0
  377. package/src/messages/message_context_service.ts +62 -0
  378. package/src/notes/index.ts +1 -0
  379. package/src/notes/note_service.ts +230 -0
  380. package/src/notes_filter.ts +24 -0
  381. package/src/oracle_version.ts +22 -0
  382. package/src/private_kernel/batch_planner.ts +169 -0
  383. package/src/private_kernel/hints/compute_tx_expiration_timestamp.ts +58 -0
  384. package/src/private_kernel/hints/index.ts +2 -0
  385. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +542 -0
  386. package/src/private_kernel/hints/test_utils.ts +318 -0
  387. package/src/private_kernel/index.ts +2 -0
  388. package/src/private_kernel/private_kernel_execution_prover.ts +598 -0
  389. package/src/private_kernel/private_kernel_oracle.ts +162 -0
  390. package/src/pxe.ts +1305 -0
  391. package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +15 -21
  392. package/src/storage/address_store/index.ts +1 -0
  393. package/src/storage/anchor_block_store/anchor_block_store.ts +33 -0
  394. package/src/storage/anchor_block_store/index.ts +1 -0
  395. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  396. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  397. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  398. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  399. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  400. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +46 -0
  401. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +36 -0
  402. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  403. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
  404. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +16 -0
  405. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
  406. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +97 -0
  407. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  408. package/src/storage/backwards_compatibility_tests/schema_tests.ts +712 -0
  409. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  410. package/src/storage/capsule_store/capsule_service.ts +90 -0
  411. package/src/storage/capsule_store/capsule_store.ts +333 -0
  412. package/src/storage/capsule_store/index.ts +2 -0
  413. package/src/storage/contract_store/contract_store.ts +408 -0
  414. package/src/storage/contract_store/index.ts +1 -0
  415. package/src/storage/contract_store/private_functions_tree.ts +67 -0
  416. package/src/storage/index.ts +8 -10
  417. package/src/storage/metadata.ts +1 -0
  418. package/src/storage/note_store/index.ts +2 -0
  419. package/src/storage/note_store/note_store.ts +415 -0
  420. package/src/storage/note_store/stored_note.ts +48 -0
  421. package/src/storage/open_pxe_stores.ts +49 -0
  422. package/src/storage/private_event_store/private_event_store.ts +388 -0
  423. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  424. package/src/storage/tagging_store/index.ts +3 -0
  425. package/src/storage/tagging_store/recipient_tagging_store.ts +139 -0
  426. package/src/storage/tagging_store/sender_address_book_store.ts +48 -0
  427. package/src/storage/tagging_store/sender_tagging_store.ts +476 -0
  428. package/src/tagging/constants.ts +10 -0
  429. package/src/tagging/get_all_logs_by_tags.ts +120 -0
  430. package/src/tagging/index.ts +20 -0
  431. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  432. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +240 -0
  433. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  434. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  435. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +134 -0
  436. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +66 -0
  437. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +84 -0
  438. package/dest/entrypoints/client/pxe_creation_options.d.ts +0 -11
  439. package/dest/entrypoints/client/pxe_creation_options.d.ts.map +0 -1
  440. package/dest/entrypoints/client/pxe_creation_options.js +0 -1
  441. package/dest/kernel_oracle/index.d.ts +0 -45
  442. package/dest/kernel_oracle/index.d.ts.map +0 -1
  443. package/dest/kernel_oracle/index.js +0 -76
  444. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  445. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  446. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.js +0 -270
  447. package/dest/kernel_prover/hints/index.d.ts +0 -2
  448. package/dest/kernel_prover/hints/index.d.ts.map +0 -1
  449. package/dest/kernel_prover/hints/index.js +0 -1
  450. package/dest/kernel_prover/index.d.ts +0 -3
  451. package/dest/kernel_prover/index.d.ts.map +0 -1
  452. package/dest/kernel_prover/index.js +0 -2
  453. package/dest/kernel_prover/kernel_prover.d.ts +0 -38
  454. package/dest/kernel_prover/kernel_prover.d.ts.map +0 -1
  455. package/dest/kernel_prover/kernel_prover.js +0 -217
  456. package/dest/kernel_prover/proving_data_oracle.d.ts +0 -73
  457. package/dest/kernel_prover/proving_data_oracle.d.ts.map +0 -1
  458. package/dest/kernel_prover/proving_data_oracle.js +0 -4
  459. package/dest/note_decryption_utils/add_public_values_to_payload.d.ts +0 -11
  460. package/dest/note_decryption_utils/add_public_values_to_payload.d.ts.map +0 -1
  461. package/dest/note_decryption_utils/add_public_values_to_payload.js +0 -47
  462. package/dest/pxe_http/index.d.ts +0 -2
  463. package/dest/pxe_http/index.d.ts.map +0 -1
  464. package/dest/pxe_http/index.js +0 -1
  465. package/dest/pxe_http/pxe_http_server.d.ts +0 -16
  466. package/dest/pxe_http/pxe_http_server.d.ts.map +0 -1
  467. package/dest/pxe_http/pxe_http_server.js +0 -27
  468. package/dest/pxe_oracle_interface/index.d.ts +0 -159
  469. package/dest/pxe_oracle_interface/index.d.ts.map +0 -1
  470. package/dest/pxe_oracle_interface/index.js +0 -692
  471. package/dest/pxe_oracle_interface/tagging_utils.d.ts +0 -17
  472. package/dest/pxe_oracle_interface/tagging_utils.d.ts.map +0 -1
  473. package/dest/pxe_oracle_interface/tagging_utils.js +0 -23
  474. package/dest/pxe_service/error_enriching.d.ts +0 -11
  475. package/dest/pxe_service/error_enriching.d.ts.map +0 -1
  476. package/dest/pxe_service/index.d.ts +0 -3
  477. package/dest/pxe_service/index.d.ts.map +0 -1
  478. package/dest/pxe_service/index.js +0 -2
  479. package/dest/pxe_service/pxe_service.d.ts +0 -111
  480. package/dest/pxe_service/pxe_service.d.ts.map +0 -1
  481. package/dest/pxe_service/pxe_service.js +0 -664
  482. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -13
  483. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  484. package/dest/storage/address_data_provider/index.d.ts +0 -2
  485. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  486. package/dest/storage/address_data_provider/index.js +0 -1
  487. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts +0 -11
  488. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts.map +0 -1
  489. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.js +0 -20
  490. package/dest/storage/auth_witness_data_provider/index.d.ts +0 -2
  491. package/dest/storage/auth_witness_data_provider/index.d.ts.map +0 -1
  492. package/dest/storage/auth_witness_data_provider/index.js +0 -1
  493. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -16
  494. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  495. package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -57
  496. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  497. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  498. package/dest/storage/capsule_data_provider/index.js +0 -1
  499. package/dest/storage/contract_data_provider/contract_data_provider.d.ts +0 -109
  500. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  501. package/dest/storage/contract_data_provider/contract_data_provider.js +0 -183
  502. package/dest/storage/contract_data_provider/index.d.ts +0 -3
  503. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  504. package/dest/storage/contract_data_provider/index.js +0 -2
  505. package/dest/storage/contract_data_provider/private_functions_tree.d.ts +0 -66
  506. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  507. package/dest/storage/contract_data_provider/private_functions_tree.js +0 -99
  508. package/dest/storage/data_provider.d.ts +0 -4
  509. package/dest/storage/data_provider.d.ts.map +0 -1
  510. package/dest/storage/data_provider.js +0 -1
  511. package/dest/storage/note_data_provider/index.d.ts +0 -3
  512. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  513. package/dest/storage/note_data_provider/index.js +0 -2
  514. package/dest/storage/note_data_provider/note_dao.d.ts +0 -106
  515. package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
  516. package/dest/storage/note_data_provider/note_dao.js +0 -106
  517. package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -20
  518. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  519. package/dest/storage/note_data_provider/note_data_provider.js +0 -249
  520. package/dest/storage/sync_data_provider/index.d.ts +0 -2
  521. package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
  522. package/dest/storage/sync_data_provider/index.js +0 -1
  523. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -12
  524. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
  525. package/dest/storage/sync_data_provider/sync_data_provider.js +0 -29
  526. package/dest/storage/tagging_data_provider/index.d.ts +0 -2
  527. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  528. package/dest/storage/tagging_data_provider/index.js +0 -1
  529. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -18
  530. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
  531. package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -65
  532. package/dest/synchronizer/index.d.ts +0 -2
  533. package/dest/synchronizer/index.d.ts.map +0 -1
  534. package/dest/synchronizer/index.js +0 -1
  535. package/dest/synchronizer/synchronizer.d.ts +0 -37
  536. package/dest/synchronizer/synchronizer.d.ts.map +0 -1
  537. package/dest/synchronizer/synchronizer.js +0 -103
  538. package/dest/test/pxe_test_suite.d.ts +0 -3
  539. package/dest/test/pxe_test_suite.d.ts.map +0 -1
  540. package/dest/test/pxe_test_suite.js +0 -97
  541. package/src/entrypoints/client/pxe_creation_options.ts +0 -7
  542. package/src/kernel_oracle/index.ts +0 -117
  543. package/src/kernel_prover/hints/build_private_kernel_reset_private_inputs.ts +0 -472
  544. package/src/kernel_prover/hints/index.ts +0 -1
  545. package/src/kernel_prover/index.ts +0 -2
  546. package/src/kernel_prover/kernel_prover.ts +0 -351
  547. package/src/kernel_prover/proving_data_oracle.ts +0 -83
  548. package/src/note_decryption_utils/add_public_values_to_payload.ts +0 -64
  549. package/src/pxe_http/index.ts +0 -1
  550. package/src/pxe_http/pxe_http_server.ts +0 -29
  551. package/src/pxe_oracle_interface/index.ts +0 -925
  552. package/src/pxe_oracle_interface/tagging_utils.ts +0 -32
  553. package/src/pxe_service/index.ts +0 -2
  554. package/src/pxe_service/pxe_service.ts +0 -949
  555. package/src/storage/address_data_provider/index.ts +0 -1
  556. package/src/storage/auth_witness_data_provider/auth_witness_data_provider.ts +0 -34
  557. package/src/storage/auth_witness_data_provider/index.ts +0 -1
  558. package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -80
  559. package/src/storage/capsule_data_provider/index.ts +0 -1
  560. package/src/storage/contract_data_provider/contract_data_provider.ts +0 -261
  561. package/src/storage/contract_data_provider/index.ts +0 -2
  562. package/src/storage/contract_data_provider/private_functions_tree.ts +0 -131
  563. package/src/storage/data_provider.ts +0 -3
  564. package/src/storage/note_data_provider/index.ts +0 -2
  565. package/src/storage/note_data_provider/note_dao.ts +0 -162
  566. package/src/storage/note_data_provider/note_data_provider.ts +0 -345
  567. package/src/storage/sync_data_provider/index.ts +0 -1
  568. package/src/storage/sync_data_provider/sync_data_provider.ts +0 -40
  569. package/src/storage/tagging_data_provider/index.ts +0 -1
  570. package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -92
  571. package/src/synchronizer/index.ts +0 -1
  572. package/src/synchronizer/synchronizer.ts +0 -121
  573. package/src/test/pxe_test_suite.ts +0 -111
@@ -0,0 +1,888 @@
1
+ import {
2
+ AVM_EMITNOTEHASH_BASE_L2_GAS,
3
+ AVM_EMITNULLIFIER_BASE_L2_GAS,
4
+ AVM_SENDL2TOL1MSG_BASE_L2_GAS,
5
+ DA_GAS_PER_FIELD,
6
+ FIXED_AVM_STARTUP_L2_GAS,
7
+ L2_GAS_PER_CONTRACT_CLASS_LOG,
8
+ L2_GAS_PER_L2_TO_L1_MSG,
9
+ L2_GAS_PER_NOTE_HASH,
10
+ L2_GAS_PER_NULLIFIER,
11
+ L2_GAS_PER_PRIVATE_LOG,
12
+ MAX_CONTRACT_CLASS_LOGS_PER_TX,
13
+ MAX_ENQUEUED_CALLS_PER_TX,
14
+ MAX_L2_TO_L1_MSGS_PER_TX,
15
+ MAX_NOTE_HASHES_PER_TX,
16
+ MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
17
+ MAX_NULLIFIERS_PER_TX,
18
+ MAX_NULLIFIER_READ_REQUESTS_PER_TX,
19
+ MAX_PRIVATE_LOGS_PER_TX,
20
+ MAX_TX_LIFETIME,
21
+ PRIVATE_TX_L2_GAS_OVERHEAD,
22
+ PUBLIC_TX_L2_GAS_OVERHEAD,
23
+ TX_DA_GAS_OVERHEAD,
24
+ } from '@aztec/constants';
25
+ import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
26
+ import { Fr } from '@aztec/foundation/curves/bn254';
27
+ import { type Logger, createLogger } from '@aztec/foundation/log';
28
+ import { Timer } from '@aztec/foundation/timer';
29
+ import type { KeyStore } from '@aztec/key-store';
30
+ import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
31
+ import { protocolContractsHash } from '@aztec/protocol-contracts';
32
+ import {
33
+ type CircuitSimulator,
34
+ ExecutionError,
35
+ createSimulationError,
36
+ extractCallStack,
37
+ resolveAssertionMessageFromError,
38
+ toACVMWitness,
39
+ witnessMapToFields,
40
+ } from '@aztec/simulator/client';
41
+ import type { FunctionCall } from '@aztec/stdlib/abi';
42
+ import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
43
+ import type { AuthWitness } from '@aztec/stdlib/auth-witness';
44
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
45
+ import type { BlockParameter, L2TipsProvider } from '@aztec/stdlib/block';
46
+ import { Gas } from '@aztec/stdlib/gas';
47
+ import {
48
+ computeNoteHashNonce,
49
+ computeProtocolNullifier,
50
+ computeSiloedPrivateLogFirstField,
51
+ computeUniqueNoteHash,
52
+ siloNoteHash,
53
+ siloNullifier,
54
+ } from '@aztec/stdlib/hash';
55
+ import type { AztecNode } from '@aztec/stdlib/interfaces/server';
56
+ import {
57
+ ClaimedLengthArray,
58
+ PartialPrivateTailPublicInputsForPublic,
59
+ PartialPrivateTailPublicInputsForRollup,
60
+ type PrivateExecutionStep,
61
+ type PrivateKernelExecutionProofOutput,
62
+ PrivateKernelTailCircuitPublicInputs,
63
+ PrivateLogData,
64
+ PrivateToPublicAccumulatedData,
65
+ PrivateToRollupAccumulatedData,
66
+ PublicCallRequest,
67
+ ReadRequestActionEnum,
68
+ ScopedLogHash,
69
+ ScopedNoteHash,
70
+ ScopedNullifier,
71
+ ScopedReadRequest,
72
+ buildTransientDataHints,
73
+ getNoteHashReadRequestResetActions,
74
+ getNullifierReadRequestResetActions,
75
+ } from '@aztec/stdlib/kernel';
76
+ import { PrivateLog } from '@aztec/stdlib/logs';
77
+ import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
78
+ import { ChonkProof } from '@aztec/stdlib/proofs';
79
+ import { MerkleTreeId } from '@aztec/stdlib/trees';
80
+ import {
81
+ BlockHeader,
82
+ CallContext,
83
+ HashedValues,
84
+ type OffchainEffect,
85
+ PrivateExecutionResult,
86
+ TxConstantData,
87
+ TxExecutionRequest,
88
+ collectNested,
89
+ collectNoteHashNullifierCounterMap,
90
+ getFinalMinRevertibleSideEffectCounter,
91
+ } from '@aztec/stdlib/tx';
92
+
93
+ import type { ContractSyncService } from '../contract_sync/contract_sync_service.js';
94
+ import type { ExecutionHooks } from '../hooks/index.js';
95
+ import type { MessageContextService } from '../messages/message_context_service.js';
96
+ import type { AddressStore } from '../storage/address_store/address_store.js';
97
+ import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
98
+ import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
99
+ import type { ContractStore } from '../storage/contract_store/contract_store.js';
100
+ import type { NoteStore } from '../storage/note_store/note_store.js';
101
+ import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
102
+ import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
103
+ import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
104
+ import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
105
+ import type { BenchmarkedNode } from './benchmarked_node.js';
106
+ import { ExecutionNoteCache } from './execution_note_cache.js';
107
+ import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
108
+ import { HashedValuesCache } from './hashed_values_cache.js';
109
+ import { Oracle } from './oracle/oracle.js';
110
+ import { executePrivateFunction } from './oracle/private_execution.js';
111
+ import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
112
+ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
113
+
114
+ /** Options for ContractFunctionSimulator.run. */
115
+ export type ContractSimulatorRunOpts = {
116
+ /** The address of the contract (should match request.origin). */
117
+ contractAddress: AztecAddress;
118
+ /** The function selector of the entry point. */
119
+ selector: FunctionSelector;
120
+ /** The address calling the function. Can be replaced to simulate a call from another contract or account. */
121
+ msgSender?: AztecAddress;
122
+ /** The block header to use as base state for this run. */
123
+ anchorBlockHeader: BlockHeader;
124
+ /** The address used as a tagging sender when emitting private logs. */
125
+ senderForTags?: AztecAddress;
126
+ /** The accounts whose notes we can access in this call. */
127
+ scopes: AztecAddress[];
128
+ /** The job ID for staged writes. */
129
+ jobId: string;
130
+ };
131
+
132
+ /** Args for ContractFunctionSimulator constructor. */
133
+ export type ContractFunctionSimulatorArgs = {
134
+ contractStore: ContractStore;
135
+ noteStore: NoteStore;
136
+ keyStore: KeyStore;
137
+ addressStore: AddressStore;
138
+ aztecNode: AztecNode;
139
+ l2TipsStore: L2TipsProvider;
140
+ senderTaggingStore: SenderTaggingStore;
141
+ recipientTaggingStore: RecipientTaggingStore;
142
+ senderAddressBookStore: SenderAddressBookStore;
143
+ capsuleStore: CapsuleStore;
144
+ privateEventStore: PrivateEventStore;
145
+ simulator: CircuitSimulator;
146
+ contractSyncService: ContractSyncService;
147
+ messageContextService: MessageContextService;
148
+ hooks?: ExecutionHooks;
149
+ };
150
+
151
+ /**
152
+ * The contract function simulator.
153
+ */
154
+ export class ContractFunctionSimulator {
155
+ private readonly log: Logger;
156
+ private readonly contractStore: ContractStore;
157
+ private readonly noteStore: NoteStore;
158
+ private readonly keyStore: KeyStore;
159
+ private readonly addressStore: AddressStore;
160
+ private readonly aztecNode: AztecNode;
161
+ private readonly l2TipsStore: L2TipsProvider;
162
+ private readonly senderTaggingStore: SenderTaggingStore;
163
+ private readonly recipientTaggingStore: RecipientTaggingStore;
164
+ private readonly senderAddressBookStore: SenderAddressBookStore;
165
+ private readonly capsuleStore: CapsuleStore;
166
+ private readonly privateEventStore: PrivateEventStore;
167
+ private readonly simulator: CircuitSimulator;
168
+ private readonly contractSyncService: ContractSyncService;
169
+ private readonly messageContextService: MessageContextService;
170
+ private readonly hooks: ExecutionHooks | undefined;
171
+
172
+ constructor(args: ContractFunctionSimulatorArgs) {
173
+ this.contractStore = args.contractStore;
174
+ this.noteStore = args.noteStore;
175
+ this.keyStore = args.keyStore;
176
+ this.addressStore = args.addressStore;
177
+ this.aztecNode = args.aztecNode;
178
+ this.l2TipsStore = args.l2TipsStore;
179
+ this.senderTaggingStore = args.senderTaggingStore;
180
+ this.recipientTaggingStore = args.recipientTaggingStore;
181
+ this.senderAddressBookStore = args.senderAddressBookStore;
182
+ this.capsuleStore = args.capsuleStore;
183
+ this.privateEventStore = args.privateEventStore;
184
+ this.simulator = args.simulator;
185
+ this.contractSyncService = args.contractSyncService;
186
+ this.messageContextService = args.messageContextService;
187
+ this.hooks = args.hooks;
188
+ this.log = createLogger('simulator');
189
+ }
190
+
191
+ /**
192
+ * Runs a private function.
193
+ * @param request - The transaction request.
194
+ */
195
+ public async run(
196
+ request: TxExecutionRequest,
197
+ {
198
+ contractAddress,
199
+ selector,
200
+ msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
201
+ anchorBlockHeader,
202
+ senderForTags,
203
+ scopes,
204
+ jobId,
205
+ }: ContractSimulatorRunOpts,
206
+ ): Promise<PrivateExecutionResult> {
207
+ const simulatorSetupTimer = new Timer();
208
+
209
+ const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(contractAddress, selector);
210
+
211
+ if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
212
+ throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
213
+ }
214
+
215
+ if (request.origin !== contractAddress) {
216
+ throw new Error(
217
+ `Request origin does not match contract address in simulation. Request origin: ${request.origin}, contract address: ${contractAddress}`,
218
+ );
219
+ }
220
+
221
+ // reserve the first side effect for the tx hash (inserted by the private kernel)
222
+ const startSideEffectCounter = 2;
223
+
224
+ const callContext = new CallContext(
225
+ msgSender,
226
+ contractAddress,
227
+ await FunctionSelector.fromNameAndParameters(entryPointArtifact.name, entryPointArtifact.parameters),
228
+ entryPointArtifact.isStatic,
229
+ );
230
+
231
+ const protocolNullifier = await computeProtocolNullifier(await request.toTxRequest().hash());
232
+ const noteCache = new ExecutionNoteCache(protocolNullifier);
233
+ const taggingIndexCache = new ExecutionTaggingIndexCache();
234
+
235
+ const privateExecutionOracle = new PrivateExecutionOracle({
236
+ argsHash: request.firstCallArgsHash,
237
+ txContext: request.txContext,
238
+ callContext,
239
+ anchorBlockHeader,
240
+ utilityExecutor: async (call, execScopes) => {
241
+ await this.runUtility(call, [], anchorBlockHeader, execScopes, jobId);
242
+ },
243
+ authWitnesses: request.authWitnesses,
244
+ capsules: request.capsules,
245
+ executionCache: HashedValuesCache.create(request.argsOfCalls),
246
+ noteCache,
247
+ taggingIndexCache,
248
+ contractStore: this.contractStore,
249
+ noteStore: this.noteStore,
250
+ keyStore: this.keyStore,
251
+ addressStore: this.addressStore,
252
+ aztecNode: this.aztecNode,
253
+ senderTaggingStore: this.senderTaggingStore,
254
+ recipientTaggingStore: this.recipientTaggingStore,
255
+ senderAddressBookStore: this.senderAddressBookStore,
256
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
257
+ privateEventStore: this.privateEventStore,
258
+ messageContextService: this.messageContextService,
259
+ contractSyncService: this.contractSyncService,
260
+ jobId,
261
+ totalPublicCalldataCount: 0,
262
+ sideEffectCounter: startSideEffectCounter,
263
+ scopes,
264
+ senderForTags,
265
+ simulator: this.simulator,
266
+ l2TipsStore: this.l2TipsStore,
267
+ hooks: this.hooks,
268
+ });
269
+
270
+ const setupTime = simulatorSetupTimer.ms();
271
+
272
+ try {
273
+ // Note: any nested private function calls are made recursively within this
274
+ // function call. So this execution result is the result of executing _all_
275
+ // private functions of this tx (the results of those executions are contained
276
+ // within executionResult.nestedExecutionResults).
277
+ const executionResult = await executePrivateFunction(
278
+ this.simulator,
279
+ privateExecutionOracle,
280
+ entryPointArtifact,
281
+ contractAddress,
282
+ request.functionSelector,
283
+ );
284
+ const simulatorTeardownTimer = new Timer();
285
+
286
+ noteCache.finish();
287
+ const firstNullifierHint = noteCache.getNonceGenerator();
288
+
289
+ const publicCallRequests = collectNested([executionResult], r =>
290
+ r.publicInputs.publicCallRequests
291
+ .getActiveItems()
292
+ .map(r => r.inner)
293
+ .concat(r.publicInputs.publicTeardownCallRequest.isEmpty() ? [] : [r.publicInputs.publicTeardownCallRequest]),
294
+ );
295
+ const publicFunctionsCalldata = await Promise.all(
296
+ publicCallRequests.map(async r => {
297
+ const calldata = await privateExecutionOracle.getHashPreimage(r.calldataHash);
298
+ return new HashedValues(calldata, r.calldataHash);
299
+ }),
300
+ );
301
+
302
+ const teardownTime = simulatorTeardownTimer.ms();
303
+
304
+ // Add simulator overhead to topmost call in the stack
305
+ if (executionResult.profileResult) {
306
+ executionResult.profileResult.timings.witgen += setupTime + teardownTime;
307
+ }
308
+
309
+ // Not to be confused with a PrivateCallExecutionResult. This is a superset
310
+ // of the PrivateCallExecutionResult, containing also firstNullifierHint
311
+ // and publicFunctionsCalldata.
312
+ return new PrivateExecutionResult(executionResult, firstNullifierHint, publicFunctionsCalldata);
313
+ } catch (err) {
314
+ throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
315
+ }
316
+ }
317
+
318
+ /**
319
+ * Runs a utility function.
320
+ * @param call - The function call to execute.
321
+ * @param authwits - Authentication witnesses required for the function call.
322
+ * @param anchorBlockHeader - The block header to use as base state for this run.
323
+ * @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
324
+ * accounts if not specified.
325
+ * @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
326
+ */
327
+ public async runUtility(
328
+ call: FunctionCall,
329
+ authwits: AuthWitness[],
330
+ anchorBlockHeader: BlockHeader,
331
+ scopes: AztecAddress[],
332
+ jobId: string,
333
+ ): Promise<{ result: Fr[]; offchainEffects: OffchainEffect[] }> {
334
+ const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
335
+
336
+ if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
337
+ throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
338
+ }
339
+
340
+ const utilityExecutor = async (syncCall: FunctionCall, execScopes: AztecAddress[]) => {
341
+ await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, jobId);
342
+ };
343
+
344
+ const oracle = new UtilityExecutionOracle({
345
+ contractAddress: call.to,
346
+ authWitnesses: authwits,
347
+ capsules: [],
348
+ anchorBlockHeader,
349
+ contractStore: this.contractStore,
350
+ noteStore: this.noteStore,
351
+ keyStore: this.keyStore,
352
+ addressStore: this.addressStore,
353
+ aztecNode: this.aztecNode,
354
+ recipientTaggingStore: this.recipientTaggingStore,
355
+ senderAddressBookStore: this.senderAddressBookStore,
356
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
357
+ privateEventStore: this.privateEventStore,
358
+ messageContextService: this.messageContextService,
359
+ contractSyncService: this.contractSyncService,
360
+ l2TipsStore: this.l2TipsStore,
361
+ jobId,
362
+ scopes,
363
+ simulator: this.simulator,
364
+ hooks: this.hooks,
365
+ utilityExecutor,
366
+ });
367
+
368
+ try {
369
+ this.log.verbose(`Executing utility function ${entryPointArtifact.name}`, {
370
+ contract: call.to,
371
+ selector: call.selector,
372
+ });
373
+
374
+ const initialWitness = toACVMWitness(0, call.args);
375
+ const acirExecutionResult = await this.simulator
376
+ .executeUserCircuit(initialWitness, entryPointArtifact, new Oracle(oracle).toACIRCallback())
377
+ .catch((err: Error) => {
378
+ err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
379
+ throw new ExecutionError(
380
+ err.message,
381
+ {
382
+ contractAddress: call.to,
383
+ functionSelector: call.selector,
384
+ },
385
+ extractCallStack(err, entryPointArtifact.debug),
386
+ { cause: err },
387
+ );
388
+ });
389
+
390
+ this.log.verbose(`Utility execution for ${call.to}.${call.selector} completed`);
391
+ return {
392
+ result: witnessMapToFields(acirExecutionResult.returnWitness),
393
+ offchainEffects: oracle.getOffchainEffects(),
394
+ };
395
+ } catch (err) {
396
+ throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
397
+ }
398
+ }
399
+
400
+ /**
401
+ * Returns the execution statistics collected during the simulator run.
402
+ * @returns The execution statistics.
403
+ */
404
+ getStats() {
405
+ const nodeRPCCalls =
406
+ typeof (this.aztecNode as BenchmarkedNode).getStats === 'function'
407
+ ? (this.aztecNode as BenchmarkedNode).getStats()
408
+ : {
409
+ perMethod: {},
410
+ roundTrips: { roundTrips: 0, totalBlockingTime: 0, roundTripDurations: [], roundTripMethods: [] },
411
+ };
412
+
413
+ return { nodeRPCCalls };
414
+ }
415
+ }
416
+
417
+ class OrderedSideEffect<T> {
418
+ sideEffect: T;
419
+ counter: number;
420
+
421
+ constructor(sideEffect: T, counter: number) {
422
+ this.sideEffect = sideEffect;
423
+ this.counter = counter;
424
+ }
425
+ }
426
+
427
+ /**
428
+ * Generates the final public inputs of the tail kernel circuit, an empty Chonk proof
429
+ * and the execution steps for a `PrivateExecutionResult` as if it had been
430
+ * processed by the private kernel prover. This skips many of the checks performed by the kernels
431
+ * (allowing state overrides) and is much faster, while still generating a valid
432
+ * output that can be sent to the node for public simulation
433
+ * @param privateExecutionResult - The result of the private execution.
434
+ * @param debugFunctionNameGetter - A provider for contract data in order to get function names and debug info.
435
+ * @param node - AztecNode for verifying settled read requests against the note hash and nullifier trees.
436
+ * @param minRevertibleSideEffectCounterOverride - Optional override for the min revertible side effect counter.
437
+ * Used by TXE to simulate account contract behavior (setting the counter before app execution).
438
+ * @returns The simulated proving result.
439
+ */
440
+ export async function generateSimulatedProvingResult(
441
+ privateExecutionResult: PrivateExecutionResult,
442
+ debugFunctionNameGetter: (contractAddress: AztecAddress, functionSelector: FunctionSelector) => Promise<string>,
443
+ node: AztecNode,
444
+ minRevertibleSideEffectCounterOverride?: number,
445
+ ): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
446
+ const taggedPrivateLogs: OrderedSideEffect<PrivateLogData>[] = [];
447
+ const l2ToL1Messages: OrderedSideEffect<ScopedL2ToL1Message>[] = [];
448
+ const contractClassLogsHashes: OrderedSideEffect<ScopedLogHash>[] = [];
449
+ const publicCallRequests: OrderedSideEffect<PublicCallRequest>[] = [];
450
+ const executionSteps: PrivateExecutionStep[] = [];
451
+
452
+ // Unsiloed scoped arrays — used for squashing, read request verification,
453
+ // and siloed at the end only for the surviving items
454
+ const scopedNoteHashes: ScopedNoteHash[] = [];
455
+ const scopedNullifiers: ScopedNullifier[] = [];
456
+
457
+ // Read requests for verification
458
+ const noteHashReadRequests: ScopedReadRequest[] = [];
459
+ const nullifierReadRequests: ScopedReadRequest[] = [];
460
+
461
+ let publicTeardownCallRequest;
462
+
463
+ // We set expiration timestamp to anchor_block_timestamp + MAX_TX_LIFETIME (24h) just like kernels do
464
+ let expirationTimestamp =
465
+ privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.globalVariables.timestamp +
466
+ BigInt(MAX_TX_LIFETIME);
467
+
468
+ let feePayer = AztecAddress.zero();
469
+
470
+ const executions = [privateExecutionResult.entrypoint];
471
+
472
+ while (executions.length !== 0) {
473
+ const execution = executions.shift()!;
474
+ executions.unshift(...execution!.nestedExecutionResults);
475
+
476
+ // Just like kernels we overwrite the default value if the call sets it.
477
+ const callExpirationTimestamp = execution.publicInputs.expirationTimestamp;
478
+ if (callExpirationTimestamp !== 0n && callExpirationTimestamp < expirationTimestamp) {
479
+ expirationTimestamp = callExpirationTimestamp;
480
+ }
481
+
482
+ const { contractAddress } = execution.publicInputs.callContext;
483
+
484
+ if (execution.publicInputs.isFeePayer) {
485
+ if (!feePayer.isZero()) {
486
+ throw new Error('Multiple fee payers found in private execution result');
487
+ }
488
+ feePayer = contractAddress;
489
+ }
490
+
491
+ scopedNoteHashes.push(
492
+ ...execution.publicInputs.noteHashes
493
+ .getActiveItems()
494
+ .filter(nh => !nh.isEmpty())
495
+ .map(nh => nh.scope(contractAddress)),
496
+ );
497
+ scopedNullifiers.push(...execution.publicInputs.nullifiers.getActiveItems().map(n => n.scope(contractAddress)));
498
+
499
+ taggedPrivateLogs.push(
500
+ ...(await Promise.all(
501
+ execution.publicInputs.privateLogs.getActiveItems().map(async metadata => {
502
+ metadata.log.fields[0] = await computeSiloedPrivateLogFirstField(contractAddress, metadata.log.fields[0]);
503
+ return new OrderedSideEffect(metadata, metadata.counter);
504
+ }),
505
+ )),
506
+ );
507
+
508
+ noteHashReadRequests.push(...execution.publicInputs.noteHashReadRequests.getActiveItems());
509
+ nullifierReadRequests.push(...execution.publicInputs.nullifierReadRequests.getActiveItems());
510
+ l2ToL1Messages.push(
511
+ ...execution.publicInputs.l2ToL1Msgs
512
+ .getActiveItems()
513
+ .map(message => new OrderedSideEffect(message.message.scope(contractAddress), message.counter)),
514
+ );
515
+ contractClassLogsHashes.push(
516
+ ...execution.publicInputs.contractClassLogsHashes
517
+ .getActiveItems()
518
+ .map(
519
+ contractClassLogHash =>
520
+ new OrderedSideEffect(contractClassLogHash.logHash.scope(contractAddress), contractClassLogHash.counter),
521
+ ),
522
+ );
523
+ publicCallRequests.push(
524
+ ...execution.publicInputs.publicCallRequests
525
+ .getActiveItems()
526
+ .map(callRequest => new OrderedSideEffect(callRequest.inner, callRequest.counter)),
527
+ );
528
+
529
+ if (publicTeardownCallRequest !== undefined && !execution.publicInputs.publicTeardownCallRequest.isEmpty()) {
530
+ throw new Error('Trying to set multiple teardown requests');
531
+ }
532
+
533
+ publicTeardownCallRequest = execution.publicInputs.publicTeardownCallRequest.isEmpty()
534
+ ? publicTeardownCallRequest
535
+ : execution.publicInputs.publicTeardownCallRequest;
536
+
537
+ executionSteps.push({
538
+ functionName: await debugFunctionNameGetter(
539
+ execution.publicInputs.callContext.contractAddress,
540
+ execution.publicInputs.callContext.functionSelector,
541
+ ),
542
+ timings: execution.profileResult?.timings ?? { witgen: 0, oracles: {} },
543
+ bytecode: execution.acir,
544
+ vk: execution.vk,
545
+ witness: execution.partialWitness,
546
+ });
547
+ }
548
+
549
+ const noteHashNullifierCounterMap = collectNoteHashNullifierCounterMap(privateExecutionResult);
550
+ const minRevertibleSideEffectCounter =
551
+ minRevertibleSideEffectCounterOverride ?? getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
552
+
553
+ const scopedNoteHashesCLA = new ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>(
554
+ padArrayEnd(scopedNoteHashes, ScopedNoteHash.empty(), MAX_NOTE_HASHES_PER_TX),
555
+ scopedNoteHashes.length,
556
+ );
557
+ const scopedNullifiersCLA = new ClaimedLengthArray<ScopedNullifier, typeof MAX_NULLIFIERS_PER_TX>(
558
+ padArrayEnd(scopedNullifiers, ScopedNullifier.empty(), MAX_NULLIFIERS_PER_TX),
559
+ scopedNullifiers.length,
560
+ );
561
+
562
+ const { filteredNoteHashes, filteredNullifiers, filteredPrivateLogs } = squashTransientSideEffects(
563
+ taggedPrivateLogs,
564
+ scopedNoteHashesCLA,
565
+ scopedNullifiersCLA,
566
+ noteHashNullifierCounterMap,
567
+ minRevertibleSideEffectCounter,
568
+ );
569
+
570
+ await verifyReadRequests(
571
+ node,
572
+ await privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.hash(),
573
+ noteHashReadRequests,
574
+ nullifierReadRequests,
575
+ scopedNoteHashesCLA,
576
+ scopedNullifiersCLA,
577
+ );
578
+
579
+ const siloedNoteHashes = await Promise.all(
580
+ filteredNoteHashes
581
+ .sort((a, b) => a.counter - b.counter)
582
+ .map(async nh => new OrderedSideEffect(await siloNoteHash(nh.contractAddress, nh.value), nh.counter)),
583
+ );
584
+ const siloedNullifiers = await Promise.all(
585
+ filteredNullifiers
586
+ .sort((a, b) => a.counter - b.counter)
587
+ .map(async n => new OrderedSideEffect(await siloNullifier(n.contractAddress, n.value), n.counter)),
588
+ );
589
+
590
+ const constantData = new TxConstantData(
591
+ privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader,
592
+ privateExecutionResult.entrypoint.publicInputs.txContext,
593
+ getVKTreeRoot(),
594
+ protocolContractsHash,
595
+ );
596
+
597
+ const hasPublicCalls = privateExecutionResult.publicFunctionCalldata.length !== 0;
598
+ let inputsForRollup;
599
+ let inputsForPublic;
600
+ let gasUsed;
601
+
602
+ const sortByCounter = <T>(a: OrderedSideEffect<T>, b: OrderedSideEffect<T>) => a.counter - b.counter;
603
+ const getEffect = <T>(orderedSideEffect: OrderedSideEffect<T>) => orderedSideEffect.sideEffect;
604
+
605
+ const isPrivateOnlyTx = privateExecutionResult.publicFunctionCalldata.length === 0;
606
+
607
+ const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(
608
+ siloedNullifiers,
609
+ minRevertibleSideEffectCounter,
610
+ );
611
+ const nonceGenerator = privateExecutionResult.firstNullifier;
612
+ if (nonRevertibleNullifiers.length === 0) {
613
+ nonRevertibleNullifiers.push(nonceGenerator);
614
+ } else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
615
+ throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
616
+ }
617
+
618
+ if (isPrivateOnlyTx) {
619
+ // We must make the note hashes unique by using the
620
+ // nonce generator and their index in the tx.
621
+ const uniqueNoteHashes = await Promise.all(
622
+ siloedNoteHashes.map(async (orderedSideEffect, i) => {
623
+ const siloedNoteHash = orderedSideEffect.sideEffect;
624
+ const nonce = await computeNoteHashNonce(nonceGenerator, i);
625
+ const uniqueNoteHash = await computeUniqueNoteHash(nonce, siloedNoteHash);
626
+ return uniqueNoteHash;
627
+ }),
628
+ );
629
+ const accumulatedDataForRollup = new PrivateToRollupAccumulatedData(
630
+ padArrayEnd(uniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
631
+ padArrayEnd(nonRevertibleNullifiers.concat(revertibleNullifiers), Fr.ZERO, MAX_NULLIFIERS_PER_TX),
632
+ padArrayEnd(
633
+ l2ToL1Messages.sort(sortByCounter).map(getEffect),
634
+ ScopedL2ToL1Message.empty(),
635
+ MAX_L2_TO_L1_MSGS_PER_TX,
636
+ ),
637
+ padArrayEnd(filteredPrivateLogs.sort(sortByCounter).map(getEffect), PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
638
+ padArrayEnd(
639
+ contractClassLogsHashes.sort(sortByCounter).map(getEffect),
640
+ ScopedLogHash.empty(),
641
+ MAX_CONTRACT_CLASS_LOGS_PER_TX,
642
+ ),
643
+ );
644
+ gasUsed = meterGasUsed(accumulatedDataForRollup, isPrivateOnlyTx);
645
+ inputsForRollup = new PartialPrivateTailPublicInputsForRollup(accumulatedDataForRollup);
646
+ } else {
647
+ const [nonRevertibleNoteHashes, revertibleNoteHashes] = splitOrderedSideEffects(
648
+ siloedNoteHashes,
649
+ minRevertibleSideEffectCounter,
650
+ );
651
+ const nonRevertibleUniqueNoteHashes = await Promise.all(
652
+ nonRevertibleNoteHashes.map(async (noteHash, i) => {
653
+ const nonce = await computeNoteHashNonce(nonceGenerator, i);
654
+ return await computeUniqueNoteHash(nonce, noteHash);
655
+ }),
656
+ );
657
+ const [nonRevertibleL2ToL1Messages, revertibleL2ToL1Messages] = splitOrderedSideEffects(
658
+ l2ToL1Messages.sort(sortByCounter),
659
+ minRevertibleSideEffectCounter,
660
+ );
661
+ const [nonRevertibleTaggedPrivateLogs, revertibleTaggedPrivateLogs] = splitOrderedSideEffects(
662
+ filteredPrivateLogs,
663
+ minRevertibleSideEffectCounter,
664
+ );
665
+ const [nonRevertibleContractClassLogHashes, revertibleContractClassLogHashes] = splitOrderedSideEffects(
666
+ contractClassLogsHashes.sort(sortByCounter),
667
+ minRevertibleSideEffectCounter,
668
+ );
669
+ const [nonRevertiblePublicCallRequests, revertiblePublicCallRequests] = splitOrderedSideEffects(
670
+ publicCallRequests.sort(sortByCounter),
671
+ minRevertibleSideEffectCounter,
672
+ );
673
+
674
+ const nonRevertibleData = new PrivateToPublicAccumulatedData(
675
+ padArrayEnd(nonRevertibleUniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
676
+ padArrayEnd(nonRevertibleNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
677
+ padArrayEnd(nonRevertibleL2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
678
+ padArrayEnd(nonRevertibleTaggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
679
+ padArrayEnd(nonRevertibleContractClassLogHashes, ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX),
680
+ padArrayEnd(nonRevertiblePublicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX),
681
+ );
682
+
683
+ const revertibleData = new PrivateToPublicAccumulatedData(
684
+ padArrayEnd(revertibleNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
685
+ padArrayEnd(revertibleNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
686
+ padArrayEnd(revertibleL2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
687
+ padArrayEnd(revertibleTaggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
688
+ padArrayEnd(revertibleContractClassLogHashes, ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX),
689
+ padArrayEnd(revertiblePublicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX),
690
+ );
691
+ gasUsed = meterGasUsed(revertibleData, isPrivateOnlyTx).add(meterGasUsed(nonRevertibleData, isPrivateOnlyTx));
692
+ if (publicTeardownCallRequest) {
693
+ gasUsed = gasUsed.add(privateExecutionResult.entrypoint.publicInputs.txContext.gasSettings.teardownGasLimits);
694
+ }
695
+
696
+ inputsForPublic = new PartialPrivateTailPublicInputsForPublic(
697
+ nonRevertibleData,
698
+ revertibleData,
699
+ publicTeardownCallRequest ?? PublicCallRequest.empty(),
700
+ );
701
+ }
702
+
703
+ const publicInputs = new PrivateKernelTailCircuitPublicInputs(
704
+ constantData,
705
+ /*gasUsed=*/ gasUsed.add(
706
+ Gas.from({
707
+ l2Gas: isPrivateOnlyTx ? PRIVATE_TX_L2_GAS_OVERHEAD : PUBLIC_TX_L2_GAS_OVERHEAD,
708
+ daGas: TX_DA_GAS_OVERHEAD,
709
+ }),
710
+ ),
711
+ /*feePayer=*/ feePayer,
712
+ /*expirationTimestamp=*/ expirationTimestamp,
713
+ hasPublicCalls ? inputsForPublic : undefined,
714
+ !hasPublicCalls ? inputsForRollup : undefined,
715
+ );
716
+
717
+ return {
718
+ publicInputs,
719
+ chonkProof: ChonkProof.empty(),
720
+ executionSteps,
721
+ };
722
+ }
723
+
724
+ /**
725
+ * Squashes transient note hashes and nullifiers, mimicking the behavior
726
+ * of the reset kernels. Returns the filtered (surviving) scoped items and private logs.
727
+ */
728
+ function squashTransientSideEffects(
729
+ taggedPrivateLogs: OrderedSideEffect<PrivateLogData>[],
730
+ scopedNoteHashesCLA: ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>,
731
+ scopedNullifiersCLA: ClaimedLengthArray<ScopedNullifier, typeof MAX_NULLIFIERS_PER_TX>,
732
+ noteHashNullifierCounterMap: Map<number, number>,
733
+ minRevertibleSideEffectCounter: number,
734
+ ) {
735
+ const { numTransientData, hints: transientDataHints } = buildTransientDataHints(
736
+ scopedNoteHashesCLA,
737
+ scopedNullifiersCLA,
738
+ /*futureNoteHashReads=*/ [],
739
+ /*futureNullifierReads=*/ [],
740
+ /*futureLogs=*/ [],
741
+ noteHashNullifierCounterMap,
742
+ minRevertibleSideEffectCounter,
743
+ );
744
+
745
+ const squashedNoteHashCounters = new Set<number>();
746
+ const squashedNullifierCounters = new Set<number>();
747
+ for (let i = 0; i < numTransientData; i++) {
748
+ const hint = transientDataHints[i];
749
+ squashedNoteHashCounters.add(scopedNoteHashesCLA.array[hint.noteHashIndex].counter);
750
+ squashedNullifierCounters.add(scopedNullifiersCLA.array[hint.nullifierIndex].counter);
751
+ }
752
+
753
+ return {
754
+ filteredNoteHashes: scopedNoteHashesCLA.getActiveItems().filter(nh => !squashedNoteHashCounters.has(nh.counter)),
755
+ filteredNullifiers: scopedNullifiersCLA.getActiveItems().filter(n => !squashedNullifierCounters.has(n.counter)),
756
+ filteredPrivateLogs: taggedPrivateLogs
757
+ .filter(item => !squashedNoteHashCounters.has(item.sideEffect.noteHashCounter))
758
+ .map(item => new OrderedSideEffect(item.sideEffect.log, item.counter)),
759
+ };
760
+ }
761
+
762
+ /**
763
+ * Verifies settled read requests by checking membership in the note hash and nullifier trees
764
+ * at the tx's anchor block, mimicking the behavior of the kernels
765
+ */
766
+ async function verifyReadRequests(
767
+ node: Pick<AztecNode, 'findLeavesIndexes'>,
768
+ anchorBlockHash: BlockParameter,
769
+ noteHashReadRequests: ScopedReadRequest[],
770
+ nullifierReadRequests: ScopedReadRequest[],
771
+ scopedNoteHashesCLA: ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>,
772
+ scopedNullifiersCLA: ClaimedLengthArray<ScopedNullifier, typeof MAX_NULLIFIERS_PER_TX>,
773
+ ) {
774
+ const noteHashReadRequestsCLA = new ClaimedLengthArray<ScopedReadRequest, typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>(
775
+ padArrayEnd(noteHashReadRequests, ScopedReadRequest.empty(), MAX_NOTE_HASH_READ_REQUESTS_PER_TX),
776
+ noteHashReadRequests.length,
777
+ );
778
+ const nullifierReadRequestsCLA = new ClaimedLengthArray<ScopedReadRequest, typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX>(
779
+ padArrayEnd(nullifierReadRequests, ScopedReadRequest.empty(), MAX_NULLIFIER_READ_REQUESTS_PER_TX),
780
+ nullifierReadRequests.length,
781
+ );
782
+
783
+ const noteHashResetActions = getNoteHashReadRequestResetActions(noteHashReadRequestsCLA, scopedNoteHashesCLA);
784
+ const nullifierResetActions = getNullifierReadRequestResetActions(nullifierReadRequestsCLA, scopedNullifiersCLA);
785
+
786
+ const settledNoteHashReads: { index: number; value: Fr }[] = [];
787
+ for (let i = 0; i < noteHashResetActions.actions.length; i++) {
788
+ if (noteHashResetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
789
+ settledNoteHashReads.push({ index: i, value: noteHashReadRequests[i].value });
790
+ }
791
+ }
792
+
793
+ const settledNullifierReads: { index: number; value: Fr }[] = [];
794
+ for (let i = 0; i < nullifierResetActions.actions.length; i++) {
795
+ if (nullifierResetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
796
+ settledNullifierReads.push({ index: i, value: nullifierReadRequests[i].value });
797
+ }
798
+ }
799
+
800
+ const [noteHashResults, nullifierResults] = await Promise.all([
801
+ settledNoteHashReads.length > 0
802
+ ? node.findLeavesIndexes(
803
+ anchorBlockHash,
804
+ MerkleTreeId.NOTE_HASH_TREE,
805
+ settledNoteHashReads.map(({ value }) => value),
806
+ )
807
+ : [],
808
+ settledNullifierReads.length > 0
809
+ ? node.findLeavesIndexes(
810
+ anchorBlockHash,
811
+ MerkleTreeId.NULLIFIER_TREE,
812
+ settledNullifierReads.map(({ value }) => value),
813
+ )
814
+ : [],
815
+ ]);
816
+
817
+ for (let i = 0; i < settledNoteHashReads.length; i++) {
818
+ if (!noteHashResults[i]) {
819
+ throw new Error(
820
+ `Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`,
821
+ );
822
+ }
823
+ }
824
+
825
+ for (let i = 0; i < settledNullifierReads.length; i++) {
826
+ if (!nullifierResults[i]) {
827
+ throw new Error(
828
+ `Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`,
829
+ );
830
+ }
831
+ }
832
+ }
833
+
834
+ function splitOrderedSideEffects<T>(effects: OrderedSideEffect<T>[], minRevertibleSideEffectCounter: number) {
835
+ const revertibleSideEffects: T[] = [];
836
+ const nonRevertibleSideEffects: T[] = [];
837
+ effects.forEach(effect => {
838
+ if (minRevertibleSideEffectCounter === 0 || effect.counter < minRevertibleSideEffectCounter) {
839
+ nonRevertibleSideEffects.push(effect.sideEffect);
840
+ } else {
841
+ revertibleSideEffects.push(effect.sideEffect);
842
+ }
843
+ });
844
+ return [nonRevertibleSideEffects, revertibleSideEffects];
845
+ }
846
+
847
+ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccumulatedData, isPrivateOnlyTx: boolean) {
848
+ let meteredDAFields = 0;
849
+ let meteredL2Gas = 0;
850
+
851
+ const numNoteHashes = arrayNonEmptyLength(data.noteHashes, hash => hash.isEmpty());
852
+ meteredDAFields += numNoteHashes;
853
+ const noteHashBaseGas = isPrivateOnlyTx ? L2_GAS_PER_NOTE_HASH : AVM_EMITNOTEHASH_BASE_L2_GAS;
854
+ meteredL2Gas += numNoteHashes * noteHashBaseGas;
855
+
856
+ const numNullifiers = arrayNonEmptyLength(data.nullifiers, nullifier => nullifier.isEmpty());
857
+ meteredDAFields += numNullifiers;
858
+ const nullifierBaseGas = isPrivateOnlyTx ? L2_GAS_PER_NULLIFIER : AVM_EMITNULLIFIER_BASE_L2_GAS;
859
+ meteredL2Gas += numNullifiers * nullifierBaseGas;
860
+
861
+ const numL2toL1Messages = arrayNonEmptyLength(data.l2ToL1Msgs, msg => msg.isEmpty());
862
+ meteredDAFields += numL2toL1Messages;
863
+ const l2ToL1MessageBaseGas = isPrivateOnlyTx ? L2_GAS_PER_L2_TO_L1_MSG : AVM_SENDL2TOL1MSG_BASE_L2_GAS;
864
+ meteredL2Gas += numL2toL1Messages * l2ToL1MessageBaseGas;
865
+
866
+ const numPrivatelogs = arrayNonEmptyLength(data.privateLogs, log => log.isEmpty());
867
+ // Every private log emits its length as an additional field
868
+ meteredDAFields += data.privateLogs.reduce((acc, log) => (!log.isEmpty() ? acc + log.emittedLength + 1 : acc), 0);
869
+ meteredL2Gas += numPrivatelogs * L2_GAS_PER_PRIVATE_LOG;
870
+
871
+ const numContractClassLogs = arrayNonEmptyLength(data.contractClassLogsHashes, log => log.isEmpty());
872
+ // Every contract class log emits its contract address as an additional field
873
+ meteredDAFields += data.contractClassLogsHashes.reduce(
874
+ (acc, log) => (!log.isEmpty() ? acc + log.logHash.length + 1 : acc),
875
+ 0,
876
+ );
877
+ meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
878
+
879
+ const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
880
+
881
+ if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {
882
+ const dataForPublic = data as PrivateToPublicAccumulatedData;
883
+
884
+ const numPublicCallRequests = arrayNonEmptyLength(dataForPublic.publicCallRequests, req => req.isEmpty());
885
+ meteredL2Gas += numPublicCallRequests * FIXED_AVM_STARTUP_L2_GAS;
886
+ }
887
+ return Gas.from({ l2Gas: meteredL2Gas, daGas: meteredDAGas });
888
+ }