@aztec/pxe 0.0.0-test.0 → 0.0.1-commit.0208eb9

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 (458) 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 +43 -0
  6. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -0
  7. package/dest/block_synchronizer/block_synchronizer.js +147 -0
  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 +13 -24
  12. package/dest/config/index.d.ts.map +1 -1
  13. package/dest/config/index.js +35 -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/benchmarked_node.d.ts +9 -0
  17. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  18. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  19. package/dest/contract_function_simulator/contract_function_simulator.d.ts +82 -0
  20. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -0
  21. package/dest/contract_function_simulator/contract_function_simulator.js +339 -0
  22. package/dest/contract_function_simulator/execution_note_cache.d.ts +104 -0
  23. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -0
  24. package/dest/contract_function_simulator/execution_note_cache.js +208 -0
  25. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +16 -0
  26. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -0
  27. package/dest/contract_function_simulator/execution_tagging_index_cache.js +26 -0
  28. package/dest/contract_function_simulator/hashed_values_cache.d.ts +28 -0
  29. package/dest/contract_function_simulator/hashed_values_cache.d.ts.map +1 -0
  30. package/dest/contract_function_simulator/hashed_values_cache.js +36 -0
  31. package/dest/contract_function_simulator/index.d.ts +14 -0
  32. package/dest/contract_function_simulator/index.d.ts.map +1 -0
  33. package/dest/contract_function_simulator/index.js +12 -0
  34. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +21 -0
  35. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -0
  36. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +40 -0
  37. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +16 -0
  38. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -0
  39. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +26 -0
  40. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +17 -0
  41. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts.map +1 -0
  42. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +65 -0
  43. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +24 -0
  44. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -0
  45. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +51 -0
  46. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +16 -0
  47. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -0
  48. package/dest/contract_function_simulator/noir-structs/utility_context.js +22 -0
  49. package/dest/contract_function_simulator/oracle/index.d.ts +14 -0
  50. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -0
  51. package/dest/contract_function_simulator/oracle/index.js +2 -0
  52. package/dest/contract_function_simulator/oracle/interfaces.d.ts +107 -0
  53. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -0
  54. package/dest/contract_function_simulator/oracle/interfaces.js +4 -0
  55. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +19 -0
  56. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -0
  57. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.js +24 -0
  58. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +28 -0
  59. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -0
  60. package/dest/contract_function_simulator/oracle/note_packing_utils.js +54 -0
  61. package/dest/contract_function_simulator/oracle/oracle.d.ts +60 -0
  62. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -0
  63. package/dest/contract_function_simulator/oracle/oracle.js +368 -0
  64. package/dest/contract_function_simulator/oracle/private_execution.d.ts +23 -0
  65. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -0
  66. package/dest/contract_function_simulator/oracle/private_execution.js +87 -0
  67. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +239 -0
  68. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -0
  69. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +426 -0
  70. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +208 -0
  71. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -0
  72. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +367 -0
  73. package/dest/contract_function_simulator/pick_notes.d.ts +85 -0
  74. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -0
  75. package/dest/contract_function_simulator/pick_notes.js +51 -0
  76. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +6 -0
  77. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -0
  78. package/dest/contract_function_simulator/proxied_contract_data_source.js +80 -0
  79. package/dest/contract_sync/index.d.ts +24 -0
  80. package/dest/contract_sync/index.d.ts.map +1 -0
  81. package/dest/contract_sync/index.js +61 -0
  82. package/dest/debug/pxe_debug_utils.d.ts +41 -0
  83. package/dest/debug/pxe_debug_utils.d.ts.map +1 -0
  84. package/dest/debug/pxe_debug_utils.js +47 -0
  85. package/dest/entrypoints/client/bundle/index.d.ts +4 -3
  86. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  87. package/dest/entrypoints/client/bundle/index.js +2 -2
  88. package/dest/entrypoints/client/bundle/utils.d.ts +10 -10
  89. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  90. package/dest/entrypoints/client/bundle/utils.js +33 -12
  91. package/dest/entrypoints/client/lazy/index.d.ts +4 -3
  92. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  93. package/dest/entrypoints/client/lazy/index.js +2 -2
  94. package/dest/entrypoints/client/lazy/utils.d.ts +10 -10
  95. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  96. package/dest/entrypoints/client/lazy/utils.js +33 -12
  97. package/dest/entrypoints/pxe_creation_options.d.ts +18 -0
  98. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -0
  99. package/dest/entrypoints/server/index.d.ts +8 -4
  100. package/dest/entrypoints/server/index.d.ts.map +1 -1
  101. package/dest/entrypoints/server/index.js +6 -3
  102. package/dest/entrypoints/server/utils.d.ts +8 -16
  103. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  104. package/dest/entrypoints/server/utils.js +46 -36
  105. package/dest/error_enriching.d.ts +11 -0
  106. package/dest/error_enriching.d.ts.map +1 -0
  107. package/dest/{pxe_service/error_enriching.js → error_enriching.js} +30 -22
  108. package/dest/events/event_service.d.ts +15 -0
  109. package/dest/events/event_service.d.ts.map +1 -0
  110. package/dest/events/event_service.js +44 -0
  111. package/dest/events/index.d.ts +2 -0
  112. package/dest/events/index.d.ts.map +1 -0
  113. package/dest/events/index.js +1 -0
  114. package/dest/events/private_event_filter_validator.d.ts +9 -0
  115. package/dest/events/private_event_filter_validator.d.ts.map +1 -0
  116. package/dest/events/private_event_filter_validator.js +38 -0
  117. package/dest/job_coordinator/job_coordinator.d.ts +75 -0
  118. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  119. package/dest/job_coordinator/job_coordinator.js +94 -0
  120. package/dest/logs/log_service.d.ts +28 -0
  121. package/dest/logs/log_service.d.ts.map +1 -0
  122. package/dest/logs/log_service.js +123 -0
  123. package/dest/notes/index.d.ts +2 -0
  124. package/dest/notes/index.d.ts.map +1 -0
  125. package/dest/notes/index.js +1 -0
  126. package/dest/notes/note_service.d.ts +48 -0
  127. package/dest/notes/note_service.d.ts.map +1 -0
  128. package/dest/notes/note_service.js +147 -0
  129. package/dest/oracle_version.d.ts +3 -0
  130. package/dest/oracle_version.d.ts.map +1 -0
  131. package/dest/oracle_version.js +11 -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/private_kernel/hints/index.js +2 -0
  138. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +28 -0
  139. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  140. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +277 -0
  141. package/dest/private_kernel/index.d.ts +3 -0
  142. package/dest/private_kernel/index.d.ts.map +1 -0
  143. package/dest/private_kernel/index.js +2 -0
  144. package/dest/private_kernel/private_kernel_execution_prover.d.ts +45 -0
  145. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -0
  146. package/dest/private_kernel/private_kernel_execution_prover.js +285 -0
  147. package/dest/private_kernel/private_kernel_oracle.d.ts +59 -0
  148. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -0
  149. package/dest/private_kernel/private_kernel_oracle.js +92 -0
  150. package/dest/pxe.d.ts +204 -0
  151. package/dest/pxe.d.ts.map +1 -0
  152. package/dest/pxe.js +742 -0
  153. package/dest/storage/address_store/address_store.d.ts +11 -0
  154. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  155. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +13 -15
  156. package/dest/storage/address_store/index.d.ts +2 -0
  157. package/dest/storage/address_store/index.d.ts.map +1 -0
  158. package/dest/storage/address_store/index.js +1 -0
  159. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +17 -0
  160. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  161. package/dest/storage/anchor_block_store/anchor_block_store.js +26 -0
  162. package/dest/storage/anchor_block_store/index.d.ts +2 -0
  163. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  164. package/dest/storage/anchor_block_store/index.js +1 -0
  165. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  166. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  167. package/dest/storage/capsule_store/capsule_store.js +253 -0
  168. package/dest/storage/capsule_store/index.d.ts +2 -0
  169. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  170. package/dest/storage/capsule_store/index.js +1 -0
  171. package/dest/storage/contract_store/contract_store.d.ts +66 -0
  172. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  173. package/dest/storage/contract_store/contract_store.js +233 -0
  174. package/dest/storage/contract_store/index.d.ts +2 -0
  175. package/dest/storage/contract_store/index.d.ts.map +1 -0
  176. package/dest/storage/contract_store/index.js +1 -0
  177. package/dest/storage/contract_store/private_functions_tree.d.ts +27 -0
  178. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  179. package/dest/storage/contract_store/private_functions_tree.js +47 -0
  180. package/dest/storage/index.d.ts +9 -10
  181. package/dest/storage/index.d.ts.map +1 -1
  182. package/dest/storage/index.js +8 -9
  183. package/dest/storage/metadata.d.ts +2 -0
  184. package/dest/storage/metadata.d.ts.map +1 -0
  185. package/dest/storage/metadata.js +1 -0
  186. package/dest/storage/note_store/index.d.ts +3 -0
  187. package/dest/storage/note_store/index.d.ts.map +1 -0
  188. package/dest/storage/note_store/index.js +2 -0
  189. package/dest/storage/note_store/note_store.d.ts +83 -0
  190. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  191. package/dest/storage/note_store/note_store.js +341 -0
  192. package/dest/storage/note_store/stored_note.d.ts +16 -0
  193. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  194. package/dest/storage/note_store/stored_note.js +43 -0
  195. package/dest/storage/private_event_store/private_event_store.d.ts +91 -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 +273 -0
  198. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  199. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  200. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  201. package/dest/storage/tagging_store/index.d.ts +4 -0
  202. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  203. package/dest/storage/tagging_store/index.js +3 -0
  204. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
  205. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  206. package/dest/storage/tagging_store/recipient_tagging_store.js +111 -0
  207. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  208. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  209. package/dest/storage/tagging_store/sender_address_book_store.js +36 -0
  210. package/dest/storage/tagging_store/sender_tagging_store.d.ts +77 -0
  211. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  212. package/dest/storage/tagging_store/sender_tagging_store.js +348 -0
  213. package/dest/tagging/constants.d.ts +2 -0
  214. package/dest/tagging/constants.d.ts.map +1 -0
  215. package/dest/tagging/constants.js +10 -0
  216. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  217. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  218. package/dest/tagging/get_all_logs_by_tags.js +46 -0
  219. package/dest/tagging/index.d.ts +17 -0
  220. package/dest/tagging/index.d.ts.map +1 -0
  221. package/dest/tagging/index.js +15 -0
  222. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +15 -0
  223. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -0
  224. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +99 -0
  225. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +12 -0
  226. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -0
  227. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +20 -0
  228. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +15 -0
  229. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -0
  230. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +32 -0
  231. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +21 -0
  232. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  233. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +74 -0
  234. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -0
  235. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  236. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +29 -0
  237. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +21 -0
  238. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  239. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +60 -0
  240. package/package.json +37 -34
  241. package/src/bin/check_oracle_version.ts +161 -0
  242. package/src/block_synchronizer/block_synchronizer.ts +172 -0
  243. package/src/block_synchronizer/index.ts +1 -0
  244. package/src/config/index.ts +41 -55
  245. package/src/config/package_info.ts +1 -1
  246. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  247. package/src/contract_function_simulator/contract_function_simulator.ts +633 -0
  248. package/src/contract_function_simulator/execution_note_cache.ts +252 -0
  249. package/src/contract_function_simulator/execution_tagging_index_cache.ts +32 -0
  250. package/src/contract_function_simulator/hashed_values_cache.ts +47 -0
  251. package/src/contract_function_simulator/index.ts +13 -0
  252. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +51 -0
  253. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +28 -0
  254. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +69 -0
  255. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +64 -0
  256. package/src/contract_function_simulator/noir-structs/utility_context.ts +23 -0
  257. package/src/contract_function_simulator/oracle/index.ts +16 -0
  258. package/src/contract_function_simulator/oracle/interfaces.ts +185 -0
  259. package/src/contract_function_simulator/oracle/message_load_oracle_inputs.ts +23 -0
  260. package/src/contract_function_simulator/oracle/note_packing_utils.ts +68 -0
  261. package/src/contract_function_simulator/oracle/oracle.ts +637 -0
  262. package/src/contract_function_simulator/oracle/private_execution.ts +141 -0
  263. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +701 -0
  264. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +544 -0
  265. package/src/contract_function_simulator/pick_notes.ts +141 -0
  266. package/src/contract_function_simulator/proxied_contract_data_source.ts +83 -0
  267. package/src/contract_sync/index.ts +119 -0
  268. package/src/debug/pxe_debug_utils.ts +63 -0
  269. package/src/entrypoints/client/bundle/index.ts +3 -2
  270. package/src/entrypoints/client/bundle/utils.ts +35 -36
  271. package/src/entrypoints/client/lazy/index.ts +3 -2
  272. package/src/entrypoints/client/lazy/utils.ts +36 -32
  273. package/src/entrypoints/pxe_creation_options.ts +14 -0
  274. package/src/entrypoints/server/index.ts +7 -3
  275. package/src/entrypoints/server/utils.ts +52 -52
  276. package/src/{pxe_service/error_enriching.ts → error_enriching.ts} +40 -39
  277. package/src/events/event_service.ts +71 -0
  278. package/src/events/index.ts +1 -0
  279. package/src/events/private_event_filter_validator.ts +46 -0
  280. package/src/job_coordinator/job_coordinator.ts +150 -0
  281. package/src/logs/log_service.ts +220 -0
  282. package/src/notes/index.ts +1 -0
  283. package/src/notes/note_service.ts +195 -0
  284. package/src/oracle_version.ts +12 -0
  285. package/src/private_kernel/hints/compute_tx_include_by_timestamp.ts +58 -0
  286. package/src/private_kernel/hints/index.ts +2 -0
  287. package/src/{kernel_prover/hints/build_private_kernel_reset_private_inputs.ts → private_kernel/hints/private_kernel_reset_private_inputs_builder.ts} +179 -156
  288. package/src/private_kernel/index.ts +2 -0
  289. package/src/private_kernel/private_kernel_execution_prover.ts +433 -0
  290. package/src/private_kernel/private_kernel_oracle.ts +152 -0
  291. package/src/pxe.ts +1076 -0
  292. package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +15 -21
  293. package/src/storage/address_store/index.ts +1 -0
  294. package/src/storage/{sync_data_provider/sync_data_provider.ts → anchor_block_store/anchor_block_store.ts} +10 -17
  295. package/src/storage/anchor_block_store/index.ts +1 -0
  296. package/src/storage/capsule_store/capsule_store.ts +315 -0
  297. package/src/storage/capsule_store/index.ts +1 -0
  298. package/src/storage/contract_store/contract_store.ts +330 -0
  299. package/src/storage/contract_store/index.ts +1 -0
  300. package/src/storage/contract_store/private_functions_tree.ts +67 -0
  301. package/src/storage/index.ts +8 -10
  302. package/src/storage/metadata.ts +1 -0
  303. package/src/storage/note_store/index.ts +2 -0
  304. package/src/storage/note_store/note_store.ts +411 -0
  305. package/src/storage/note_store/stored_note.ts +48 -0
  306. package/src/storage/private_event_store/private_event_store.ts +384 -0
  307. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  308. package/src/storage/tagging_store/index.ts +3 -0
  309. package/src/storage/tagging_store/recipient_tagging_store.ts +139 -0
  310. package/src/storage/tagging_store/sender_address_book_store.ts +48 -0
  311. package/src/storage/tagging_store/sender_tagging_store.ts +429 -0
  312. package/src/tagging/constants.ts +10 -0
  313. package/src/tagging/get_all_logs_by_tags.ts +68 -0
  314. package/src/tagging/index.ts +19 -0
  315. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +143 -0
  316. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +34 -0
  317. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +49 -0
  318. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +99 -0
  319. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +36 -0
  320. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +84 -0
  321. package/dest/bin/index.d.ts +0 -3
  322. package/dest/bin/index.d.ts.map +0 -1
  323. package/dest/bin/index.js +0 -28
  324. package/dest/entrypoints/client/pxe_creation_options.d.ts +0 -11
  325. package/dest/entrypoints/client/pxe_creation_options.d.ts.map +0 -1
  326. package/dest/kernel_oracle/index.d.ts +0 -45
  327. package/dest/kernel_oracle/index.d.ts.map +0 -1
  328. package/dest/kernel_oracle/index.js +0 -76
  329. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  330. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  331. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.js +0 -270
  332. package/dest/kernel_prover/hints/index.d.ts +0 -2
  333. package/dest/kernel_prover/hints/index.d.ts.map +0 -1
  334. package/dest/kernel_prover/hints/index.js +0 -1
  335. package/dest/kernel_prover/index.d.ts +0 -3
  336. package/dest/kernel_prover/index.d.ts.map +0 -1
  337. package/dest/kernel_prover/index.js +0 -2
  338. package/dest/kernel_prover/kernel_prover.d.ts +0 -38
  339. package/dest/kernel_prover/kernel_prover.d.ts.map +0 -1
  340. package/dest/kernel_prover/kernel_prover.js +0 -217
  341. package/dest/kernel_prover/proving_data_oracle.d.ts +0 -73
  342. package/dest/kernel_prover/proving_data_oracle.d.ts.map +0 -1
  343. package/dest/kernel_prover/proving_data_oracle.js +0 -4
  344. package/dest/note_decryption_utils/add_public_values_to_payload.d.ts +0 -11
  345. package/dest/note_decryption_utils/add_public_values_to_payload.d.ts.map +0 -1
  346. package/dest/note_decryption_utils/add_public_values_to_payload.js +0 -47
  347. package/dest/pxe_http/index.d.ts +0 -2
  348. package/dest/pxe_http/index.d.ts.map +0 -1
  349. package/dest/pxe_http/index.js +0 -1
  350. package/dest/pxe_http/pxe_http_server.d.ts +0 -16
  351. package/dest/pxe_http/pxe_http_server.d.ts.map +0 -1
  352. package/dest/pxe_http/pxe_http_server.js +0 -27
  353. package/dest/pxe_oracle_interface/index.d.ts +0 -159
  354. package/dest/pxe_oracle_interface/index.d.ts.map +0 -1
  355. package/dest/pxe_oracle_interface/index.js +0 -692
  356. package/dest/pxe_oracle_interface/tagging_utils.d.ts +0 -17
  357. package/dest/pxe_oracle_interface/tagging_utils.d.ts.map +0 -1
  358. package/dest/pxe_oracle_interface/tagging_utils.js +0 -23
  359. package/dest/pxe_service/error_enriching.d.ts +0 -11
  360. package/dest/pxe_service/error_enriching.d.ts.map +0 -1
  361. package/dest/pxe_service/index.d.ts +0 -3
  362. package/dest/pxe_service/index.d.ts.map +0 -1
  363. package/dest/pxe_service/index.js +0 -2
  364. package/dest/pxe_service/pxe_service.d.ts +0 -111
  365. package/dest/pxe_service/pxe_service.d.ts.map +0 -1
  366. package/dest/pxe_service/pxe_service.js +0 -664
  367. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -13
  368. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  369. package/dest/storage/address_data_provider/index.d.ts +0 -2
  370. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  371. package/dest/storage/address_data_provider/index.js +0 -1
  372. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts +0 -11
  373. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts.map +0 -1
  374. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.js +0 -20
  375. package/dest/storage/auth_witness_data_provider/index.d.ts +0 -2
  376. package/dest/storage/auth_witness_data_provider/index.d.ts.map +0 -1
  377. package/dest/storage/auth_witness_data_provider/index.js +0 -1
  378. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -16
  379. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  380. package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -57
  381. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  382. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  383. package/dest/storage/capsule_data_provider/index.js +0 -1
  384. package/dest/storage/contract_data_provider/contract_data_provider.d.ts +0 -109
  385. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  386. package/dest/storage/contract_data_provider/contract_data_provider.js +0 -183
  387. package/dest/storage/contract_data_provider/index.d.ts +0 -3
  388. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  389. package/dest/storage/contract_data_provider/index.js +0 -2
  390. package/dest/storage/contract_data_provider/private_functions_tree.d.ts +0 -66
  391. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  392. package/dest/storage/contract_data_provider/private_functions_tree.js +0 -99
  393. package/dest/storage/data_provider.d.ts +0 -4
  394. package/dest/storage/data_provider.d.ts.map +0 -1
  395. package/dest/storage/data_provider.js +0 -1
  396. package/dest/storage/note_data_provider/index.d.ts +0 -3
  397. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  398. package/dest/storage/note_data_provider/index.js +0 -2
  399. package/dest/storage/note_data_provider/note_dao.d.ts +0 -106
  400. package/dest/storage/note_data_provider/note_dao.d.ts.map +0 -1
  401. package/dest/storage/note_data_provider/note_dao.js +0 -106
  402. package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -20
  403. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  404. package/dest/storage/note_data_provider/note_data_provider.js +0 -249
  405. package/dest/storage/sync_data_provider/index.d.ts +0 -2
  406. package/dest/storage/sync_data_provider/index.d.ts.map +0 -1
  407. package/dest/storage/sync_data_provider/index.js +0 -1
  408. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +0 -12
  409. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +0 -1
  410. package/dest/storage/sync_data_provider/sync_data_provider.js +0 -29
  411. package/dest/storage/tagging_data_provider/index.d.ts +0 -2
  412. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  413. package/dest/storage/tagging_data_provider/index.js +0 -1
  414. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +0 -18
  415. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +0 -1
  416. package/dest/storage/tagging_data_provider/tagging_data_provider.js +0 -65
  417. package/dest/synchronizer/index.d.ts +0 -2
  418. package/dest/synchronizer/index.d.ts.map +0 -1
  419. package/dest/synchronizer/index.js +0 -1
  420. package/dest/synchronizer/synchronizer.d.ts +0 -37
  421. package/dest/synchronizer/synchronizer.d.ts.map +0 -1
  422. package/dest/synchronizer/synchronizer.js +0 -103
  423. package/dest/test/pxe_test_suite.d.ts +0 -3
  424. package/dest/test/pxe_test_suite.d.ts.map +0 -1
  425. package/dest/test/pxe_test_suite.js +0 -97
  426. package/src/bin/index.ts +0 -38
  427. package/src/entrypoints/client/pxe_creation_options.ts +0 -7
  428. package/src/kernel_oracle/index.ts +0 -117
  429. package/src/kernel_prover/hints/index.ts +0 -1
  430. package/src/kernel_prover/index.ts +0 -2
  431. package/src/kernel_prover/kernel_prover.ts +0 -351
  432. package/src/kernel_prover/proving_data_oracle.ts +0 -83
  433. package/src/note_decryption_utils/add_public_values_to_payload.ts +0 -64
  434. package/src/pxe_http/index.ts +0 -1
  435. package/src/pxe_http/pxe_http_server.ts +0 -29
  436. package/src/pxe_oracle_interface/index.ts +0 -925
  437. package/src/pxe_oracle_interface/tagging_utils.ts +0 -32
  438. package/src/pxe_service/index.ts +0 -2
  439. package/src/pxe_service/pxe_service.ts +0 -949
  440. package/src/storage/address_data_provider/index.ts +0 -1
  441. package/src/storage/auth_witness_data_provider/auth_witness_data_provider.ts +0 -34
  442. package/src/storage/auth_witness_data_provider/index.ts +0 -1
  443. package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -80
  444. package/src/storage/capsule_data_provider/index.ts +0 -1
  445. package/src/storage/contract_data_provider/contract_data_provider.ts +0 -261
  446. package/src/storage/contract_data_provider/index.ts +0 -2
  447. package/src/storage/contract_data_provider/private_functions_tree.ts +0 -131
  448. package/src/storage/data_provider.ts +0 -3
  449. package/src/storage/note_data_provider/index.ts +0 -2
  450. package/src/storage/note_data_provider/note_dao.ts +0 -162
  451. package/src/storage/note_data_provider/note_data_provider.ts +0 -345
  452. package/src/storage/sync_data_provider/index.ts +0 -1
  453. package/src/storage/tagging_data_provider/index.ts +0 -1
  454. package/src/storage/tagging_data_provider/tagging_data_provider.ts +0 -92
  455. package/src/synchronizer/index.ts +0 -1
  456. package/src/synchronizer/synchronizer.ts +0 -121
  457. package/src/test/pxe_test_suite.ts +0 -111
  458. /package/dest/entrypoints/{client/pxe_creation_options.js → pxe_creation_options.js} +0 -0
@@ -0,0 +1,633 @@
1
+ import {
2
+ AVM_EMITNOTEHASH_BASE_L2_GAS,
3
+ AVM_EMITNULLIFIER_BASE_L2_GAS,
4
+ AVM_SENDL2TOL1MSG_BASE_L2_GAS,
5
+ DA_BYTES_PER_FIELD,
6
+ DA_GAS_PER_BYTE,
7
+ FIXED_AVM_STARTUP_L2_GAS,
8
+ FIXED_DA_GAS,
9
+ FIXED_L2_GAS,
10
+ GeneratorIndex,
11
+ L2_GAS_PER_CONTRACT_CLASS_LOG,
12
+ L2_GAS_PER_PRIVATE_LOG,
13
+ MAX_CONTRACT_CLASS_LOGS_PER_TX,
14
+ MAX_ENQUEUED_CALLS_PER_TX,
15
+ MAX_L2_TO_L1_MSGS_PER_TX,
16
+ MAX_NOTE_HASHES_PER_TX,
17
+ MAX_NULLIFIERS_PER_TX,
18
+ MAX_PRIVATE_LOGS_PER_TX,
19
+ } from '@aztec/constants';
20
+ import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
21
+ import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
22
+ import { Fr } from '@aztec/foundation/curves/bn254';
23
+ import { type Logger, createLogger } from '@aztec/foundation/log';
24
+ import { Timer } from '@aztec/foundation/timer';
25
+ import type { KeyStore } from '@aztec/key-store';
26
+ import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
27
+ import { protocolContractsHash } from '@aztec/protocol-contracts';
28
+ import {
29
+ type CircuitSimulator,
30
+ ExecutionError,
31
+ createSimulationError,
32
+ extractCallStack,
33
+ resolveAssertionMessageFromError,
34
+ toACVMWitness,
35
+ witnessMapToFields,
36
+ } from '@aztec/simulator/client';
37
+ import type { FunctionCall } from '@aztec/stdlib/abi';
38
+ import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
39
+ import type { AuthWitness } from '@aztec/stdlib/auth-witness';
40
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
41
+ import { Gas } from '@aztec/stdlib/gas';
42
+ import {
43
+ computeNoteHashNonce,
44
+ computeProtocolNullifier,
45
+ computeUniqueNoteHash,
46
+ siloNoteHash,
47
+ siloNullifier,
48
+ } from '@aztec/stdlib/hash';
49
+ import type { AztecNode } from '@aztec/stdlib/interfaces/server';
50
+ import {
51
+ PartialPrivateTailPublicInputsForPublic,
52
+ PartialPrivateTailPublicInputsForRollup,
53
+ type PrivateExecutionStep,
54
+ type PrivateKernelExecutionProofOutput,
55
+ PrivateKernelTailCircuitPublicInputs,
56
+ PrivateToPublicAccumulatedData,
57
+ PrivateToRollupAccumulatedData,
58
+ PublicCallRequest,
59
+ ScopedLogHash,
60
+ } from '@aztec/stdlib/kernel';
61
+ import { PrivateLog } from '@aztec/stdlib/logs';
62
+ import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
63
+ import { ChonkProof } from '@aztec/stdlib/proofs';
64
+ import {
65
+ BlockHeader,
66
+ CallContext,
67
+ HashedValues,
68
+ PrivateExecutionResult,
69
+ TxConstantData,
70
+ TxExecutionRequest,
71
+ collectNested,
72
+ getFinalMinRevertibleSideEffectCounter,
73
+ } from '@aztec/stdlib/tx';
74
+
75
+ import type { AddressStore } from '../storage/address_store/address_store.js';
76
+ import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
77
+ import type { ContractStore } from '../storage/contract_store/contract_store.js';
78
+ import type { NoteStore } from '../storage/note_store/note_store.js';
79
+ import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
80
+ import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
81
+ import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
82
+ import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
83
+ import type { BenchmarkedNode } from './benchmarked_node.js';
84
+ import { ExecutionNoteCache } from './execution_note_cache.js';
85
+ import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
86
+ import { HashedValuesCache } from './hashed_values_cache.js';
87
+ import { Oracle } from './oracle/oracle.js';
88
+ import { executePrivateFunction } from './oracle/private_execution.js';
89
+ import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
90
+ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
91
+
92
+ /**
93
+ * The contract function simulator.
94
+ */
95
+ export class ContractFunctionSimulator {
96
+ private log: Logger;
97
+
98
+ constructor(
99
+ private contractStore: ContractStore,
100
+ private noteStore: NoteStore,
101
+ private keyStore: KeyStore,
102
+ private addressStore: AddressStore,
103
+ private aztecNode: AztecNode,
104
+ private senderTaggingStore: SenderTaggingStore,
105
+ private recipientTaggingStore: RecipientTaggingStore,
106
+ private senderAddressBookStore: SenderAddressBookStore,
107
+ private capsuleStore: CapsuleStore,
108
+ private privateEventStore: PrivateEventStore,
109
+ private simulator: CircuitSimulator,
110
+ ) {
111
+ this.log = createLogger('simulator');
112
+ }
113
+
114
+ /**
115
+ * Runs a private function.
116
+ * @param request - The transaction request.
117
+ * @param entryPointArtifact - The artifact of the entry point function.
118
+ * @param contractAddress - The address of the contract (should match request.origin)
119
+ * @param msgSender - The address calling the function. This can be replaced to simulate a call from another contract
120
+ * or a specific account.
121
+ * @param anchorBlockHeader - The block header to use as base state for this run.
122
+ * @param senderForTags - The address that is used as a tagging sender when emitting private logs. Returned from
123
+ * the `privateGetSenderForTags` oracle.
124
+ * @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
125
+ * @param jobId - The job ID for staged writes.
126
+ * @returns The result of the execution.
127
+ */
128
+ public async run(
129
+ request: TxExecutionRequest,
130
+ contractAddress: AztecAddress,
131
+ selector: FunctionSelector,
132
+ msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
133
+ anchorBlockHeader: BlockHeader,
134
+ senderForTags: AztecAddress | undefined,
135
+ scopes: AztecAddress[] | undefined,
136
+ jobId: string,
137
+ ): Promise<PrivateExecutionResult> {
138
+ const simulatorSetupTimer = new Timer();
139
+
140
+ const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(contractAddress, selector);
141
+
142
+ if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
143
+ throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
144
+ }
145
+
146
+ if (request.origin !== contractAddress) {
147
+ this.log.warn(
148
+ `Request origin does not match contract address in simulation. Request origin: ${request.origin}, contract address: ${contractAddress}`,
149
+ );
150
+ }
151
+
152
+ // reserve the first side effect for the tx hash (inserted by the private kernel)
153
+ const startSideEffectCounter = 2;
154
+
155
+ const callContext = new CallContext(
156
+ msgSender,
157
+ contractAddress,
158
+ await FunctionSelector.fromNameAndParameters(entryPointArtifact.name, entryPointArtifact.parameters),
159
+ entryPointArtifact.isStatic,
160
+ );
161
+
162
+ const protocolNullifier = await computeProtocolNullifier(await request.toTxRequest().hash());
163
+ const noteCache = new ExecutionNoteCache(protocolNullifier);
164
+ const taggingIndexCache = new ExecutionTaggingIndexCache();
165
+
166
+ const privateExecutionOracle = new PrivateExecutionOracle(
167
+ request.firstCallArgsHash,
168
+ request.txContext,
169
+ callContext,
170
+ anchorBlockHeader,
171
+ async call => {
172
+ await this.runUtility(call, [], anchorBlockHeader, scopes, jobId);
173
+ },
174
+ request.authWitnesses,
175
+ request.capsules,
176
+ HashedValuesCache.create(request.argsOfCalls),
177
+ noteCache,
178
+ taggingIndexCache,
179
+ this.contractStore,
180
+ this.noteStore,
181
+ this.keyStore,
182
+ this.addressStore,
183
+ this.aztecNode,
184
+ this.senderTaggingStore,
185
+ this.recipientTaggingStore,
186
+ this.senderAddressBookStore,
187
+ this.capsuleStore,
188
+ this.privateEventStore,
189
+ jobId,
190
+ 0, // totalPublicArgsCount
191
+ startSideEffectCounter,
192
+ undefined, // log
193
+ scopes,
194
+ senderForTags,
195
+ this.simulator,
196
+ );
197
+
198
+ const setupTime = simulatorSetupTimer.ms();
199
+
200
+ try {
201
+ // Note: any nested private function calls are made recursively within this
202
+ // function call. So this execution result is the result of executing _all_
203
+ // private functions of this tx (the results of those executions are contained
204
+ // within executionResult.nestedExecutionResults).
205
+ const executionResult = await executePrivateFunction(
206
+ this.simulator,
207
+ privateExecutionOracle,
208
+ entryPointArtifact,
209
+ contractAddress,
210
+ request.functionSelector,
211
+ );
212
+ const simulatorTeardownTimer = new Timer();
213
+
214
+ noteCache.finish();
215
+ const firstNullifierHint = noteCache.getNonceGenerator();
216
+
217
+ const publicCallRequests = collectNested([executionResult], r =>
218
+ r.publicInputs.publicCallRequests
219
+ .getActiveItems()
220
+ .map(r => r.inner)
221
+ .concat(r.publicInputs.publicTeardownCallRequest.isEmpty() ? [] : [r.publicInputs.publicTeardownCallRequest]),
222
+ );
223
+ const publicFunctionsCalldata = await Promise.all(
224
+ publicCallRequests.map(async r => {
225
+ const calldata = await privateExecutionOracle.privateLoadFromExecutionCache(r.calldataHash);
226
+ return new HashedValues(calldata, r.calldataHash);
227
+ }),
228
+ );
229
+
230
+ const teardownTime = simulatorTeardownTimer.ms();
231
+
232
+ // Add simulator overhead to topmost call in the stack
233
+ if (executionResult.profileResult) {
234
+ executionResult.profileResult.timings.witgen += setupTime + teardownTime;
235
+ }
236
+
237
+ // Not to be confused with a PrivateCallExecutionResult. This is a superset
238
+ // of the PrivateCallExecutionResult, containing also firstNullifierHint
239
+ // and publicFunctionsCalldata.
240
+ return new PrivateExecutionResult(executionResult, firstNullifierHint, publicFunctionsCalldata);
241
+ } catch (err) {
242
+ throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
243
+ }
244
+ }
245
+
246
+ // docs:start:execute_utility_function
247
+ /**
248
+ * Runs a utility function.
249
+ * @param call - The function call to execute.
250
+ * @param authwits - Authentication witnesses required for the function call.
251
+ * @param anchorBlockHeader - The block header to use as base state for this run.
252
+ * @param scopes - Optional array of account addresses whose notes can be accessed in this call. Defaults to all
253
+ * accounts if not specified.
254
+ * @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
255
+ */
256
+ public async runUtility(
257
+ call: FunctionCall,
258
+ authwits: AuthWitness[],
259
+ anchorBlockHeader: BlockHeader,
260
+ scopes: AztecAddress[] | undefined,
261
+ jobId: string,
262
+ ): Promise<Fr[]> {
263
+ const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
264
+
265
+ if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
266
+ throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
267
+ }
268
+
269
+ const oracle = new UtilityExecutionOracle(
270
+ call.to,
271
+ authwits,
272
+ [],
273
+ anchorBlockHeader,
274
+ this.contractStore,
275
+ this.noteStore,
276
+ this.keyStore,
277
+ this.addressStore,
278
+ this.aztecNode,
279
+ this.recipientTaggingStore,
280
+ this.senderAddressBookStore,
281
+ this.capsuleStore,
282
+ this.privateEventStore,
283
+ jobId,
284
+ undefined,
285
+ scopes,
286
+ );
287
+
288
+ try {
289
+ this.log.verbose(`Executing utility function ${entryPointArtifact.name}`, {
290
+ contract: call.to,
291
+ selector: call.selector,
292
+ });
293
+
294
+ const initialWitness = toACVMWitness(0, call.args);
295
+ const acirExecutionResult = await this.simulator
296
+ .executeUserCircuit(initialWitness, entryPointArtifact, new Oracle(oracle).toACIRCallback())
297
+ .catch((err: Error) => {
298
+ err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
299
+ throw new ExecutionError(
300
+ err.message,
301
+ {
302
+ contractAddress: call.to,
303
+ functionSelector: call.selector,
304
+ },
305
+ extractCallStack(err, entryPointArtifact.debug),
306
+ { cause: err },
307
+ );
308
+ });
309
+
310
+ this.log.verbose(`Utility simulation for ${call.to}.${call.selector} completed`);
311
+ return witnessMapToFields(acirExecutionResult.returnWitness);
312
+ } catch (err) {
313
+ throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
314
+ }
315
+ }
316
+ // docs:end:execute_utility_function
317
+
318
+ /**
319
+ * Returns the execution statistics collected during the simulator run.
320
+ * @returns The execution statistics.
321
+ */
322
+ getStats() {
323
+ const nodeRPCCalls =
324
+ typeof (this.aztecNode as BenchmarkedNode).getStats === 'function'
325
+ ? (this.aztecNode as BenchmarkedNode).getStats()
326
+ : {
327
+ perMethod: {},
328
+ roundTrips: { roundTrips: 0, totalBlockingTime: 0, roundTripDurations: [], roundTripMethods: [] },
329
+ };
330
+
331
+ return { nodeRPCCalls };
332
+ }
333
+ }
334
+
335
+ class OrderedSideEffect<T> {
336
+ sideEffect: T;
337
+ counter: number;
338
+
339
+ constructor(sideEffect: T, counter: number) {
340
+ this.sideEffect = sideEffect;
341
+ this.counter = counter;
342
+ }
343
+ }
344
+
345
+ /**
346
+ * Generates the final public inputs of the tail kernel circuit, an empty Chonk proof
347
+ * and the execution steps for a `PrivateExecutionResult` as if it had been
348
+ * processed by the private kernel prover. This skips many of the checks performed by the kernels
349
+ * (allowing state overrides) and is much faster, while still generating a valid
350
+ * output that can be sent to the node for public simulation
351
+ * @param privateExecutionResult - The result of the private execution.
352
+ * @param contractStore - A provider for contract data in order to get function names and debug info.
353
+ * @param minRevertibleSideEffectCounterOverride - Optional override for the min revertible side effect counter.
354
+ * Used by TXE to simulate account contract behavior (setting the counter before app execution).
355
+ * @returns The simulated proving result.
356
+ */
357
+ export async function generateSimulatedProvingResult(
358
+ privateExecutionResult: PrivateExecutionResult,
359
+ contractStore: ContractStore,
360
+ minRevertibleSideEffectCounterOverride?: number,
361
+ ): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
362
+ const siloedNoteHashes: OrderedSideEffect<Fr>[] = [];
363
+ const nullifiers: OrderedSideEffect<Fr>[] = [];
364
+ const taggedPrivateLogs: OrderedSideEffect<PrivateLog>[] = [];
365
+ const l2ToL1Messages: OrderedSideEffect<ScopedL2ToL1Message>[] = [];
366
+ const contractClassLogsHashes: OrderedSideEffect<ScopedLogHash>[] = [];
367
+ const publicCallRequests: OrderedSideEffect<PublicCallRequest>[] = [];
368
+ const executionSteps: PrivateExecutionStep[] = [];
369
+
370
+ let publicTeardownCallRequest;
371
+
372
+ const executions = [privateExecutionResult.entrypoint];
373
+
374
+ while (executions.length !== 0) {
375
+ const execution = executions.shift()!;
376
+ executions.unshift(...execution!.nestedExecutionResults);
377
+
378
+ const { contractAddress } = execution.publicInputs.callContext;
379
+
380
+ const noteHashesFromExecution = await Promise.all(
381
+ execution.publicInputs.noteHashes
382
+ .getActiveItems()
383
+ .filter(noteHash => !noteHash.isEmpty())
384
+ .map(
385
+ async noteHash =>
386
+ new OrderedSideEffect(await siloNoteHash(contractAddress, noteHash.value), noteHash.counter),
387
+ ),
388
+ );
389
+
390
+ const nullifiersFromExecution = await Promise.all(
391
+ execution.publicInputs.nullifiers
392
+ .getActiveItems()
393
+ .map(
394
+ async nullifier =>
395
+ new OrderedSideEffect(await siloNullifier(contractAddress, nullifier.value), nullifier.counter),
396
+ ),
397
+ );
398
+
399
+ const privateLogsFromExecution = await Promise.all(
400
+ execution.publicInputs.privateLogs.getActiveItems().map(async metadata => {
401
+ metadata.log.fields[0] = await poseidon2HashWithSeparator(
402
+ [contractAddress, metadata.log.fields[0]],
403
+ GeneratorIndex.PRIVATE_LOG_FIRST_FIELD,
404
+ );
405
+ return new OrderedSideEffect(metadata.log, metadata.counter);
406
+ }),
407
+ );
408
+
409
+ siloedNoteHashes.push(...noteHashesFromExecution);
410
+ taggedPrivateLogs.push(...privateLogsFromExecution);
411
+ nullifiers.push(...nullifiersFromExecution);
412
+ l2ToL1Messages.push(
413
+ ...execution.publicInputs.l2ToL1Msgs
414
+ .getActiveItems()
415
+ .map(message => new OrderedSideEffect(message.message.scope(contractAddress), message.counter)),
416
+ );
417
+ contractClassLogsHashes.push(
418
+ ...execution.publicInputs.contractClassLogsHashes
419
+ .getActiveItems()
420
+ .map(
421
+ contractClassLogHash =>
422
+ new OrderedSideEffect(contractClassLogHash.logHash.scope(contractAddress), contractClassLogHash.counter),
423
+ ),
424
+ );
425
+ publicCallRequests.push(
426
+ ...execution.publicInputs.publicCallRequests
427
+ .getActiveItems()
428
+ .map(callRequest => new OrderedSideEffect(callRequest.inner, callRequest.counter)),
429
+ );
430
+
431
+ if (publicTeardownCallRequest !== undefined && !execution.publicInputs.publicTeardownCallRequest.isEmpty()) {
432
+ throw new Error('Trying to set multiple teardown requests');
433
+ }
434
+
435
+ publicTeardownCallRequest = execution.publicInputs.publicTeardownCallRequest.isEmpty()
436
+ ? publicTeardownCallRequest
437
+ : execution.publicInputs.publicTeardownCallRequest;
438
+
439
+ executionSteps.push({
440
+ functionName: await contractStore.getDebugFunctionName(
441
+ execution.publicInputs.callContext.contractAddress,
442
+ execution.publicInputs.callContext.functionSelector,
443
+ ),
444
+ timings: execution.profileResult?.timings ?? { witgen: 0, oracles: {} },
445
+ bytecode: execution.acir,
446
+ vk: execution.vk,
447
+ witness: execution.partialWitness,
448
+ });
449
+ }
450
+
451
+ const constantData = new TxConstantData(
452
+ privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader,
453
+ privateExecutionResult.entrypoint.publicInputs.txContext,
454
+ getVKTreeRoot(),
455
+ protocolContractsHash,
456
+ );
457
+
458
+ const hasPublicCalls = privateExecutionResult.publicFunctionCalldata.length !== 0;
459
+ let inputsForRollup;
460
+ let inputsForPublic;
461
+ let gasUsed;
462
+
463
+ const sortByCounter = <T>(a: OrderedSideEffect<T>, b: OrderedSideEffect<T>) => a.counter - b.counter;
464
+ const getEffect = <T>(orderedSideEffect: OrderedSideEffect<T>) => orderedSideEffect.sideEffect;
465
+
466
+ const isPrivateOnlyTx = privateExecutionResult.publicFunctionCalldata.length === 0;
467
+ const minRevertibleSideEffectCounter =
468
+ minRevertibleSideEffectCounterOverride ?? getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
469
+
470
+ const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(
471
+ nullifiers.sort(sortByCounter),
472
+ minRevertibleSideEffectCounter,
473
+ );
474
+ const nonceGenerator = privateExecutionResult.firstNullifier;
475
+ if (nonRevertibleNullifiers.length === 0) {
476
+ nonRevertibleNullifiers.push(nonceGenerator);
477
+ } else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
478
+ throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
479
+ }
480
+
481
+ if (isPrivateOnlyTx) {
482
+ // We must make the note hashes unique by using the
483
+ // nonce generator and their index in the tx.
484
+ const uniqueNoteHashes = await Promise.all(
485
+ siloedNoteHashes.sort(sortByCounter).map(async (orderedSideEffect, i) => {
486
+ const siloedNoteHash = orderedSideEffect.sideEffect;
487
+ const nonce = await computeNoteHashNonce(nonceGenerator, i);
488
+ const uniqueNoteHash = await computeUniqueNoteHash(nonce, siloedNoteHash);
489
+ return uniqueNoteHash;
490
+ }),
491
+ );
492
+ const accumulatedDataForRollup = new PrivateToRollupAccumulatedData(
493
+ padArrayEnd(uniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
494
+ padArrayEnd(nonRevertibleNullifiers.concat(revertibleNullifiers), Fr.ZERO, MAX_NULLIFIERS_PER_TX),
495
+ padArrayEnd(
496
+ l2ToL1Messages.sort(sortByCounter).map(getEffect),
497
+ ScopedL2ToL1Message.empty(),
498
+ MAX_L2_TO_L1_MSGS_PER_TX,
499
+ ),
500
+ padArrayEnd(taggedPrivateLogs.sort(sortByCounter).map(getEffect), PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
501
+ padArrayEnd(
502
+ contractClassLogsHashes.sort(sortByCounter).map(getEffect),
503
+ ScopedLogHash.empty(),
504
+ MAX_CONTRACT_CLASS_LOGS_PER_TX,
505
+ ),
506
+ );
507
+ gasUsed = meterGasUsed(accumulatedDataForRollup);
508
+ inputsForRollup = new PartialPrivateTailPublicInputsForRollup(accumulatedDataForRollup);
509
+ } else {
510
+ const [nonRevertibleNoteHashes, revertibleNoteHashes] = splitOrderedSideEffects(
511
+ siloedNoteHashes.sort(sortByCounter),
512
+ minRevertibleSideEffectCounter,
513
+ );
514
+ const nonRevertibleUniqueNoteHashes = await Promise.all(
515
+ nonRevertibleNoteHashes.map(async (noteHash, i) => {
516
+ const nonce = await computeNoteHashNonce(nonceGenerator, i);
517
+ return await computeUniqueNoteHash(nonce, noteHash);
518
+ }),
519
+ );
520
+ const [nonRevertibleL2ToL1Messages, revertibleL2ToL1Messages] = splitOrderedSideEffects(
521
+ l2ToL1Messages.sort(sortByCounter),
522
+ minRevertibleSideEffectCounter,
523
+ );
524
+ const [nonRevertibleTaggedPrivateLogs, revertibleTaggedPrivateLogs] = splitOrderedSideEffects(
525
+ taggedPrivateLogs,
526
+ minRevertibleSideEffectCounter,
527
+ );
528
+ const [nonRevertibleContractClassLogHashes, revertibleContractClassLogHashes] = splitOrderedSideEffects(
529
+ contractClassLogsHashes.sort(sortByCounter),
530
+ minRevertibleSideEffectCounter,
531
+ );
532
+ const [nonRevertiblePublicCallRequests, revertiblePublicCallRequests] = splitOrderedSideEffects(
533
+ publicCallRequests.sort(sortByCounter),
534
+ minRevertibleSideEffectCounter,
535
+ );
536
+
537
+ const nonRevertibleData = new PrivateToPublicAccumulatedData(
538
+ padArrayEnd(nonRevertibleUniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
539
+ padArrayEnd(nonRevertibleNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
540
+ padArrayEnd(nonRevertibleL2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
541
+ padArrayEnd(nonRevertibleTaggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
542
+ padArrayEnd(nonRevertibleContractClassLogHashes, ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX),
543
+ padArrayEnd(nonRevertiblePublicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX),
544
+ );
545
+
546
+ const revertibleData = new PrivateToPublicAccumulatedData(
547
+ padArrayEnd(revertibleNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
548
+ padArrayEnd(revertibleNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
549
+ padArrayEnd(revertibleL2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
550
+ padArrayEnd(revertibleTaggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
551
+ padArrayEnd(revertibleContractClassLogHashes, ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX),
552
+ padArrayEnd(revertiblePublicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX),
553
+ );
554
+ gasUsed = meterGasUsed(revertibleData).add(meterGasUsed(nonRevertibleData));
555
+ if (publicTeardownCallRequest) {
556
+ gasUsed.add(privateExecutionResult.entrypoint.publicInputs.txContext.gasSettings.teardownGasLimits);
557
+ }
558
+
559
+ inputsForPublic = new PartialPrivateTailPublicInputsForPublic(
560
+ nonRevertibleData,
561
+ revertibleData,
562
+ publicTeardownCallRequest ?? PublicCallRequest.empty(),
563
+ );
564
+ }
565
+
566
+ const publicInputs = new PrivateKernelTailCircuitPublicInputs(
567
+ constantData,
568
+ /*gasUsed=*/ gasUsed.add(Gas.from({ l2Gas: FIXED_L2_GAS, daGas: FIXED_DA_GAS })),
569
+ /*feePayer=*/ AztecAddress.zero(),
570
+ /*includeByTimestamp=*/ 0n,
571
+ hasPublicCalls ? inputsForPublic : undefined,
572
+ !hasPublicCalls ? inputsForRollup : undefined,
573
+ );
574
+
575
+ return {
576
+ publicInputs,
577
+ chonkProof: ChonkProof.empty(),
578
+ executionSteps,
579
+ };
580
+ }
581
+
582
+ function splitOrderedSideEffects<T>(effects: OrderedSideEffect<T>[], minRevertibleSideEffectCounter: number) {
583
+ const revertibleSideEffects: T[] = [];
584
+ const nonRevertibleSideEffects: T[] = [];
585
+ effects.forEach(effect => {
586
+ if (minRevertibleSideEffectCounter === 0 || effect.counter < minRevertibleSideEffectCounter) {
587
+ nonRevertibleSideEffects.push(effect.sideEffect);
588
+ } else {
589
+ revertibleSideEffects.push(effect.sideEffect);
590
+ }
591
+ });
592
+ return [nonRevertibleSideEffects, revertibleSideEffects];
593
+ }
594
+
595
+ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccumulatedData) {
596
+ let meteredDAFields = 0;
597
+ let meteredL2Gas = 0;
598
+
599
+ const numNoteHashes = arrayNonEmptyLength(data.noteHashes, hash => hash.isEmpty());
600
+ meteredDAFields += numNoteHashes;
601
+ meteredL2Gas += numNoteHashes * AVM_EMITNOTEHASH_BASE_L2_GAS;
602
+
603
+ const numNullifiers = arrayNonEmptyLength(data.nullifiers, nullifier => nullifier.isEmpty());
604
+ meteredDAFields += numNullifiers;
605
+ meteredL2Gas += numNullifiers * AVM_EMITNULLIFIER_BASE_L2_GAS;
606
+
607
+ const numL2toL1Messages = arrayNonEmptyLength(data.l2ToL1Msgs, msg => msg.isEmpty());
608
+ meteredDAFields += numL2toL1Messages;
609
+ meteredL2Gas += numL2toL1Messages * AVM_SENDL2TOL1MSG_BASE_L2_GAS;
610
+
611
+ const numPrivatelogs = arrayNonEmptyLength(data.privateLogs, log => log.isEmpty());
612
+ // Every private log emits its length as an additional field
613
+ meteredDAFields += data.privateLogs.reduce((acc, log) => (!log.isEmpty() ? acc + log.emittedLength + 1 : acc), 0);
614
+ meteredL2Gas += numPrivatelogs * L2_GAS_PER_PRIVATE_LOG;
615
+
616
+ const numContractClassLogs = arrayNonEmptyLength(data.contractClassLogsHashes, log => log.isEmpty());
617
+ // Every contract class log emits its length and contract address as additional fields
618
+ meteredDAFields += data.contractClassLogsHashes.reduce(
619
+ (acc, log) => (!log.isEmpty() ? acc + log.logHash.length + 2 : acc),
620
+ 0,
621
+ );
622
+ meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
623
+
624
+ const meteredDAGas = meteredDAFields * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE;
625
+
626
+ if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {
627
+ const dataForPublic = data as PrivateToPublicAccumulatedData;
628
+
629
+ const numPublicCallRequests = arrayNonEmptyLength(dataForPublic.publicCallRequests, req => req.isEmpty());
630
+ meteredL2Gas += numPublicCallRequests * FIXED_AVM_STARTUP_L2_GAS;
631
+ }
632
+ return Gas.from({ l2Gas: meteredL2Gas, daGas: meteredDAGas });
633
+ }