@aztec/pxe 5.0.0-private.20260319 → 5.0.0-rc.1

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 (365) hide show
  1. package/dest/bin/check_oracle_version.js +45 -111
  2. package/dest/bin/index.d.ts +2 -0
  3. package/dest/bin/index.d.ts.map +1 -0
  4. package/dest/bin/index.js +1 -0
  5. package/dest/bin/oracle_version_helpers.d.ts +51 -0
  6. package/dest/bin/oracle_version_helpers.d.ts.map +1 -0
  7. package/dest/bin/oracle_version_helpers.js +254 -0
  8. package/dest/block_synchronizer/block_stream_source.d.ts +10 -0
  9. package/dest/block_synchronizer/block_stream_source.d.ts.map +1 -0
  10. package/dest/block_synchronizer/block_stream_source.js +62 -0
  11. package/dest/block_synchronizer/block_synchronizer.d.ts +8 -4
  12. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  13. package/dest/block_synchronizer/block_synchronizer.js +35 -13
  14. package/dest/config/index.d.ts +7 -1
  15. package/dest/config/index.d.ts.map +1 -1
  16. package/dest/config/index.js +12 -14
  17. package/dest/contract_function_simulator/contract_function_simulator.d.ts +9 -4
  18. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  19. package/dest/contract_function_simulator/contract_function_simulator.js +36 -15
  20. package/dest/contract_function_simulator/ephemeral_array_service.d.ts +28 -0
  21. package/dest/contract_function_simulator/ephemeral_array_service.d.ts.map +1 -0
  22. package/dest/contract_function_simulator/ephemeral_array_service.js +78 -0
  23. package/dest/contract_function_simulator/execution_note_cache.d.ts +2 -2
  24. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  25. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts +5 -9
  26. package/dest/contract_function_simulator/execution_tagging_index_cache.d.ts.map +1 -1
  27. package/dest/contract_function_simulator/execution_tagging_index_cache.js +3 -7
  28. package/dest/contract_function_simulator/index.d.ts +15 -3
  29. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  30. package/dest/contract_function_simulator/index.js +12 -1
  31. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts +48 -0
  32. package/dest/contract_function_simulator/noir-structs/bounded_vec.d.ts.map +1 -0
  33. package/dest/contract_function_simulator/noir-structs/bounded_vec.js +45 -0
  34. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts +37 -0
  35. package/dest/contract_function_simulator/noir-structs/ephemeral_array.d.ts.map +1 -0
  36. package/dest/contract_function_simulator/noir-structs/ephemeral_array.js +59 -0
  37. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +5 -5
  38. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  39. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +6 -8
  40. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts +13 -3
  41. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.d.ts.map +1 -1
  42. package/dest/contract_function_simulator/noir-structs/log_retrieval_request.js +35 -4
  43. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.d.ts +1 -1
  44. package/dest/contract_function_simulator/noir-structs/log_retrieval_response.js +1 -1
  45. package/dest/contract_function_simulator/noir-structs/note_data.d.ts +27 -0
  46. package/dest/contract_function_simulator/noir-structs/note_data.d.ts.map +1 -0
  47. package/dest/contract_function_simulator/noir-structs/note_data.js +3 -0
  48. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +5 -5
  49. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  50. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +6 -8
  51. package/dest/contract_function_simulator/noir-structs/option.d.ts +61 -0
  52. package/dest/contract_function_simulator/noir-structs/option.d.ts.map +1 -0
  53. package/dest/contract_function_simulator/noir-structs/option.js +62 -0
  54. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts +11 -0
  55. package/dest/contract_function_simulator/noir-structs/provided_secret.d.ts.map +1 -0
  56. package/dest/contract_function_simulator/noir-structs/provided_secret.js +14 -0
  57. package/dest/contract_function_simulator/oracle/acir_callback.d.ts +16 -0
  58. package/dest/contract_function_simulator/oracle/acir_callback.d.ts.map +1 -0
  59. package/dest/contract_function_simulator/oracle/acir_callback.js +71 -0
  60. package/dest/contract_function_simulator/oracle/index.d.ts +2 -13
  61. package/dest/contract_function_simulator/oracle/index.d.ts.map +1 -1
  62. package/dest/contract_function_simulator/oracle/index.js +1 -1
  63. package/dest/contract_function_simulator/oracle/interfaces.d.ts +15 -103
  64. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  65. package/dest/contract_function_simulator/oracle/interfaces.js +2 -2
  66. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +2 -2
  67. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  68. package/dest/contract_function_simulator/oracle/note_packing_utils.js +2 -2
  69. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts +60 -0
  70. package/dest/contract_function_simulator/oracle/oracle_registry.d.ts.map +1 -0
  71. package/dest/contract_function_simulator/oracle/oracle_registry.js +857 -0
  72. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts +139 -0
  73. package/dest/contract_function_simulator/oracle/oracle_type_mappings.d.ts.map +1 -0
  74. package/dest/contract_function_simulator/oracle/oracle_type_mappings.js +560 -0
  75. package/dest/contract_function_simulator/oracle/private_execution.d.ts +1 -1
  76. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  77. package/dest/contract_function_simulator/oracle/private_execution.js +3 -4
  78. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +33 -36
  79. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  80. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +71 -52
  81. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +105 -59
  82. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  83. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +396 -162
  84. package/dest/contract_function_simulator/pick_notes.d.ts +1 -1
  85. package/dest/contract_function_simulator/pick_notes.d.ts.map +1 -1
  86. package/dest/contract_function_simulator/pick_notes.js +20 -3
  87. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +1 -1
  88. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  89. package/dest/contract_function_simulator/proxied_contract_data_source.js +35 -64
  90. package/dest/contract_function_simulator/transient_array_service.d.ts +31 -0
  91. package/dest/contract_function_simulator/transient_array_service.d.ts.map +1 -0
  92. package/dest/contract_function_simulator/transient_array_service.js +62 -0
  93. package/dest/contract_logging.d.ts +9 -4
  94. package/dest/contract_logging.d.ts.map +1 -1
  95. package/dest/contract_logging.js +21 -6
  96. package/dest/contract_sync/contract_sync_service.d.ts +11 -9
  97. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -1
  98. package/dest/contract_sync/contract_sync_service.js +73 -51
  99. package/dest/contract_sync/helpers.d.ts +2 -4
  100. package/dest/contract_sync/helpers.d.ts.map +1 -1
  101. package/dest/contract_sync/helpers.js +12 -14
  102. package/dest/debug/pxe_debug_utils.d.ts +3 -8
  103. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  104. package/dest/debug/pxe_debug_utils.js +0 -6
  105. package/dest/entrypoints/client/bundle/index.d.ts +1 -2
  106. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  107. package/dest/entrypoints/client/bundle/index.js +0 -1
  108. package/dest/entrypoints/client/bundle/utils.d.ts +2 -2
  109. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  110. package/dest/entrypoints/client/bundle/utils.js +17 -5
  111. package/dest/entrypoints/client/lazy/index.d.ts +1 -2
  112. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  113. package/dest/entrypoints/client/lazy/index.js +0 -1
  114. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  115. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  116. package/dest/entrypoints/client/lazy/utils.js +17 -5
  117. package/dest/entrypoints/pxe_creation_options.d.ts +9 -1
  118. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  119. package/dest/entrypoints/pxe_creation_options.js +3 -1
  120. package/dest/entrypoints/server/index.d.ts +3 -3
  121. package/dest/entrypoints/server/index.d.ts.map +1 -1
  122. package/dest/entrypoints/server/index.js +2 -2
  123. package/dest/entrypoints/server/utils.d.ts +4 -3
  124. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  125. package/dest/entrypoints/server/utils.js +17 -5
  126. package/dest/events/event_service.d.ts +15 -6
  127. package/dest/events/event_service.d.ts.map +1 -1
  128. package/dest/events/event_service.js +44 -11
  129. package/dest/events/private_event_filter_validator.d.ts +3 -2
  130. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  131. package/dest/events/private_event_filter_validator.js +15 -0
  132. package/dest/hooks/authorize_utility_call.d.ts +41 -0
  133. package/dest/hooks/authorize_utility_call.d.ts.map +1 -0
  134. package/dest/hooks/authorize_utility_call.js +4 -0
  135. package/dest/hooks/execution_hooks.d.ts +42 -0
  136. package/dest/hooks/execution_hooks.d.ts.map +1 -0
  137. package/dest/hooks/execution_hooks.js +9 -0
  138. package/dest/hooks/index.d.ts +4 -0
  139. package/dest/hooks/index.d.ts.map +1 -0
  140. package/dest/hooks/index.js +1 -0
  141. package/dest/logs/log_service.d.ts +9 -9
  142. package/dest/logs/log_service.d.ts.map +1 -1
  143. package/dest/logs/log_service.js +126 -72
  144. package/dest/messages/message_context_service.d.ts +3 -3
  145. package/dest/messages/message_context_service.d.ts.map +1 -1
  146. package/dest/messages/message_context_service.js +30 -11
  147. package/dest/notes/note_service.d.ts +27 -6
  148. package/dest/notes/note_service.d.ts.map +1 -1
  149. package/dest/notes/note_service.js +80 -56
  150. package/dest/notes_filter.d.ts +2 -3
  151. package/dest/notes_filter.d.ts.map +1 -1
  152. package/dest/oracle_version.d.ts +4 -3
  153. package/dest/oracle_version.d.ts.map +1 -1
  154. package/dest/oracle_version.js +20 -10
  155. package/dest/private_kernel/batch_planner.d.ts +47 -0
  156. package/dest/private_kernel/batch_planner.d.ts.map +1 -0
  157. package/dest/private_kernel/batch_planner.js +104 -0
  158. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.js +1 -1
  159. package/dest/private_kernel/hints/test_utils.d.ts +1 -1
  160. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -1
  161. package/dest/private_kernel/hints/test_utils.js +2 -3
  162. package/dest/private_kernel/private_kernel_execution_prover.d.ts +6 -2
  163. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  164. package/dest/private_kernel/private_kernel_execution_prover.js +152 -59
  165. package/dest/private_kernel/private_kernel_oracle.d.ts +10 -10
  166. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  167. package/dest/private_kernel/private_kernel_oracle.js +24 -22
  168. package/dest/pxe.d.ts +60 -10
  169. package/dest/pxe.d.ts.map +1 -1
  170. package/dest/pxe.js +138 -91
  171. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +9 -6
  172. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -1
  173. package/dest/storage/anchor_block_store/anchor_block_store.js +9 -7
  174. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts +42 -0
  175. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.d.ts.map +1 -0
  176. package/dest/storage/backwards_compatibility_tests/kv_store_snapshot.js +93 -0
  177. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts +15 -0
  178. package/dest/storage/backwards_compatibility_tests/schema_tests.d.ts.map +1 -0
  179. package/dest/storage/backwards_compatibility_tests/schema_tests.js +594 -0
  180. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts +19 -0
  181. package/dest/storage/backwards_compatibility_tests/store_spy.d.ts.map +1 -0
  182. package/dest/storage/backwards_compatibility_tests/store_spy.js +63 -0
  183. package/dest/storage/capsule_store/capsule_service.d.ts +21 -0
  184. package/dest/storage/capsule_store/capsule_service.d.ts.map +1 -0
  185. package/dest/storage/capsule_store/capsule_service.js +50 -0
  186. package/dest/storage/capsule_store/capsule_store.d.ts +9 -9
  187. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -1
  188. package/dest/storage/capsule_store/capsule_store.js +36 -28
  189. package/dest/storage/capsule_store/index.d.ts +2 -1
  190. package/dest/storage/capsule_store/index.d.ts.map +1 -1
  191. package/dest/storage/capsule_store/index.js +1 -0
  192. package/dest/storage/contract_store/contract_store.d.ts +1 -1
  193. package/dest/storage/contract_store/contract_store.d.ts.map +1 -1
  194. package/dest/storage/contract_store/contract_store.js +9 -26
  195. package/dest/storage/index.d.ts +2 -2
  196. package/dest/storage/index.d.ts.map +1 -1
  197. package/dest/storage/index.js +1 -1
  198. package/dest/storage/metadata.d.ts +1 -1
  199. package/dest/storage/metadata.js +1 -1
  200. package/dest/storage/note_store/note_store.d.ts +42 -33
  201. package/dest/storage/note_store/note_store.d.ts.map +1 -1
  202. package/dest/storage/note_store/note_store.js +199 -170
  203. package/dest/storage/note_store/stored_note.d.ts +3 -8
  204. package/dest/storage/note_store/stored_note.d.ts.map +1 -1
  205. package/dest/storage/note_store/stored_note.js +4 -20
  206. package/dest/storage/open_pxe_stores.d.ts +33 -0
  207. package/dest/storage/open_pxe_stores.d.ts.map +1 -0
  208. package/dest/storage/open_pxe_stores.js +27 -0
  209. package/dest/storage/private_event_store/private_event_store.d.ts +13 -16
  210. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -1
  211. package/dest/storage/private_event_store/private_event_store.js +43 -43
  212. package/dest/storage/private_event_store/stored_private_event.js +1 -1
  213. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +6 -6
  214. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -1
  215. package/dest/storage/tagging_store/sender_tagging_store.d.ts +5 -5
  216. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -1
  217. package/dest/storage/tagging_store/sender_tagging_store.js +3 -3
  218. package/dest/tagging/get_all_logs_by_tags.d.ts +34 -10
  219. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -1
  220. package/dest/tagging/get_all_logs_by_tags.js +36 -37
  221. package/dest/tagging/index.d.ts +5 -4
  222. package/dest/tagging/index.d.ts.map +1 -1
  223. package/dest/tagging/index.js +4 -3
  224. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts +29 -0
  225. package/dest/tagging/persist_sender_tagging_index_ranges.d.ts.map +1 -0
  226. package/dest/tagging/persist_sender_tagging_index_ranges.js +42 -0
  227. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts +69 -0
  228. package/dest/tagging/recipient_sync/sync_tagged_private_logs.d.ts.map +1 -0
  229. package/dest/tagging/recipient_sync/sync_tagged_private_logs.js +203 -0
  230. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts +3 -3
  231. package/dest/tagging/recipient_sync/utils/find_highest_indexes.d.ts.map +1 -1
  232. package/dest/tagging/reconcile_tagging_index_ranges.d.ts +36 -0
  233. package/dest/tagging/reconcile_tagging_index_ranges.d.ts.map +1 -0
  234. package/dest/tagging/reconcile_tagging_index_ranges.js +74 -0
  235. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts +4 -5
  236. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -1
  237. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.js +26 -14
  238. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts +11 -6
  239. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -1
  240. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.js +21 -0
  241. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts +4 -4
  242. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -1
  243. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.js +2 -2
  244. package/package.json +20 -17
  245. package/src/bin/check_oracle_version.ts +51 -133
  246. package/src/bin/index.ts +5 -0
  247. package/src/bin/oracle_version_helpers.ts +311 -0
  248. package/src/block_synchronizer/block_stream_source.ts +81 -0
  249. package/src/block_synchronizer/block_synchronizer.ts +38 -16
  250. package/src/config/index.ts +14 -8
  251. package/src/contract_function_simulator/contract_function_simulator.ts +55 -18
  252. package/src/contract_function_simulator/ephemeral_array_service.ts +110 -0
  253. package/src/contract_function_simulator/execution_note_cache.ts +1 -1
  254. package/src/contract_function_simulator/execution_tagging_index_cache.ts +5 -9
  255. package/src/contract_function_simulator/index.ts +51 -2
  256. package/src/contract_function_simulator/noir-structs/bounded_vec.ts +55 -0
  257. package/src/contract_function_simulator/noir-structs/ephemeral_array.ts +66 -0
  258. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +4 -6
  259. package/src/contract_function_simulator/noir-structs/log_retrieval_request.ts +36 -3
  260. package/src/contract_function_simulator/noir-structs/log_retrieval_response.ts +1 -1
  261. package/src/contract_function_simulator/noir-structs/note_data.ts +27 -0
  262. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +4 -6
  263. package/src/contract_function_simulator/noir-structs/option.ts +69 -0
  264. package/src/contract_function_simulator/noir-structs/provided_secret.ts +16 -0
  265. package/src/contract_function_simulator/oracle/acir_callback.ts +108 -0
  266. package/src/contract_function_simulator/oracle/index.ts +1 -15
  267. package/src/contract_function_simulator/oracle/interfaces.ts +11 -176
  268. package/src/contract_function_simulator/oracle/note_packing_utils.ts +3 -3
  269. package/src/contract_function_simulator/oracle/oracle_registry.ts +673 -0
  270. package/src/contract_function_simulator/oracle/oracle_type_mappings.ts +553 -0
  271. package/src/contract_function_simulator/oracle/private_execution.ts +3 -4
  272. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +94 -71
  273. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +577 -269
  274. package/src/contract_function_simulator/pick_notes.ts +22 -3
  275. package/src/contract_function_simulator/proxied_contract_data_source.ts +41 -64
  276. package/src/contract_function_simulator/transient_array_service.ts +91 -0
  277. package/src/contract_logging.ts +18 -5
  278. package/src/contract_sync/contract_sync_service.ts +101 -87
  279. package/src/contract_sync/helpers.ts +13 -25
  280. package/src/debug/pxe_debug_utils.ts +3 -11
  281. package/src/entrypoints/client/bundle/index.ts +0 -1
  282. package/src/entrypoints/client/bundle/utils.ts +16 -5
  283. package/src/entrypoints/client/lazy/index.ts +0 -1
  284. package/src/entrypoints/client/lazy/utils.ts +16 -5
  285. package/src/entrypoints/pxe_creation_options.ts +14 -0
  286. package/src/entrypoints/server/index.ts +2 -2
  287. package/src/entrypoints/server/utils.ts +21 -6
  288. package/src/events/event_service.ts +69 -21
  289. package/src/events/private_event_filter_validator.ts +21 -1
  290. package/src/hooks/authorize_utility_call.ts +44 -0
  291. package/src/hooks/execution_hooks.ts +48 -0
  292. package/src/hooks/index.ts +7 -0
  293. package/src/logs/log_service.ts +158 -134
  294. package/src/messages/message_context_service.ts +43 -26
  295. package/src/notes/note_service.ts +119 -85
  296. package/src/notes_filter.ts +1 -3
  297. package/src/oracle_version.ts +20 -10
  298. package/src/private_kernel/batch_planner.ts +169 -0
  299. package/src/private_kernel/hints/private_kernel_reset_private_inputs_builder.ts +1 -1
  300. package/src/private_kernel/hints/test_utils.ts +2 -9
  301. package/src/private_kernel/private_kernel_execution_prover.ts +240 -82
  302. package/src/private_kernel/private_kernel_oracle.ts +35 -25
  303. package/src/pxe.ts +230 -95
  304. package/src/storage/anchor_block_store/anchor_block_store.ts +9 -7
  305. package/src/storage/backwards_compatibility_tests/__snapshots__/AddressStore.json +22 -0
  306. package/src/storage/backwards_compatibility_tests/__snapshots__/AnchorBlockStore.json +3 -0
  307. package/src/storage/backwards_compatibility_tests/__snapshots__/CapsuleStore.json +16 -0
  308. package/src/storage/backwards_compatibility_tests/__snapshots__/ContractStore.json +28 -0
  309. package/src/storage/backwards_compatibility_tests/__snapshots__/KeyStore.json +52 -0
  310. package/src/storage/backwards_compatibility_tests/__snapshots__/L2TipsKVStore.json +40 -0
  311. package/src/storage/backwards_compatibility_tests/__snapshots__/NoteStore.json +56 -0
  312. package/src/storage/backwards_compatibility_tests/__snapshots__/PrivateEventStore.json +44 -0
  313. package/src/storage/backwards_compatibility_tests/__snapshots__/RecipientTaggingStore.json +18 -0
  314. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderAddressBookStore.json +16 -0
  315. package/src/storage/backwards_compatibility_tests/__snapshots__/SenderTaggingStore.json +22 -0
  316. package/src/storage/backwards_compatibility_tests/__snapshots__/opened_stores.json +101 -0
  317. package/src/storage/backwards_compatibility_tests/kv_store_snapshot.ts +122 -0
  318. package/src/storage/backwards_compatibility_tests/schema_tests.ts +714 -0
  319. package/src/storage/backwards_compatibility_tests/store_spy.ts +73 -0
  320. package/src/storage/capsule_store/capsule_service.ts +90 -0
  321. package/src/storage/capsule_store/capsule_store.ts +44 -26
  322. package/src/storage/capsule_store/index.ts +1 -0
  323. package/src/storage/contract_store/contract_store.ts +14 -35
  324. package/src/storage/index.ts +1 -1
  325. package/src/storage/metadata.ts +1 -1
  326. package/src/storage/note_store/note_store.ts +228 -192
  327. package/src/storage/note_store/stored_note.ts +5 -27
  328. package/src/storage/open_pxe_stores.ts +49 -0
  329. package/src/storage/private_event_store/private_event_store.ts +52 -54
  330. package/src/storage/private_event_store/stored_private_event.ts +1 -1
  331. package/src/storage/tagging_store/recipient_tagging_store.ts +5 -9
  332. package/src/storage/tagging_store/sender_tagging_store.ts +6 -6
  333. package/src/tagging/get_all_logs_by_tags.ts +78 -50
  334. package/src/tagging/index.ts +4 -3
  335. package/src/tagging/persist_sender_tagging_index_ranges.ts +57 -0
  336. package/src/tagging/recipient_sync/sync_tagged_private_logs.ts +301 -0
  337. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  338. package/src/tagging/reconcile_tagging_index_ranges.ts +102 -0
  339. package/src/tagging/sender_sync/sync_sender_tagging_indexes.ts +41 -19
  340. package/src/tagging/sender_sync/utils/get_status_change_of_pending.ts +23 -8
  341. package/src/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.ts +4 -5
  342. package/dest/access_scopes.d.ts +0 -9
  343. package/dest/access_scopes.d.ts.map +0 -1
  344. package/dest/access_scopes.js +0 -6
  345. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts +0 -16
  346. package/dest/contract_function_simulator/noir-structs/message_tx_context.d.ts.map +0 -1
  347. package/dest/contract_function_simulator/noir-structs/message_tx_context.js +0 -57
  348. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts +0 -9
  349. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.d.ts.map +0 -1
  350. package/dest/contract_function_simulator/oracle/legacy_oracle_mappings.js +0 -42
  351. package/dest/contract_function_simulator/oracle/oracle.d.ts +0 -61
  352. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +0 -1
  353. package/dest/contract_function_simulator/oracle/oracle.js +0 -437
  354. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +0 -14
  355. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +0 -1
  356. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +0 -99
  357. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +0 -14
  358. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +0 -1
  359. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +0 -33
  360. package/src/access_scopes.ts +0 -9
  361. package/src/contract_function_simulator/noir-structs/message_tx_context.ts +0 -55
  362. package/src/contract_function_simulator/oracle/legacy_oracle_mappings.ts +0 -135
  363. package/src/contract_function_simulator/oracle/oracle.ts +0 -675
  364. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +0 -140
  365. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +0 -44
@@ -1,6 +1,8 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { createLogger } from '@aztec/foundation/log';
3
+ import { SerialQueue } from '@aztec/foundation/queue';
3
4
  import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
5
+ import { blockStreamSourceFromAztecNode } from './block_stream_source.js';
4
6
  /**
5
7
  * The BlockSynchronizer class orchestrates synchronization between PXE and Aztec node, maintaining an up-to-date
6
8
  * view of the L2 chain state. It handles block header retrieval, chain reorganizations, and provides an interface
@@ -16,6 +18,7 @@ import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
16
18
  config;
17
19
  log;
18
20
  isSyncing;
21
+ eventQueue;
19
22
  blockStream;
20
23
  constructor(node, store, anchorBlockStore, noteStore, privateEventStore, l2TipsStore, contractSyncService, config = {}, bindings){
21
24
  this.node = node;
@@ -26,18 +29,23 @@ import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
26
29
  this.l2TipsStore = l2TipsStore;
27
30
  this.contractSyncService = contractSyncService;
28
31
  this.config = config;
32
+ this.eventQueue = new SerialQueue();
29
33
  this.log = createLogger('pxe:block_synchronizer', bindings);
30
34
  this.blockStream = this.createBlockStream(config);
35
+ this.eventQueue.start();
31
36
  }
32
37
  createBlockStream(config) {
33
- return new L2BlockStream(this.node, this.l2TipsStore, this, createLogger('pxe:block_stream', this.log.getBindings()), {
38
+ return new L2BlockStream(blockStreamSourceFromAztecNode(this.node), this.l2TipsStore, this, createLogger('pxe:block_stream', this.log.getBindings()), {
34
39
  batchSize: config.l2BlockBatchSize,
35
40
  // Skipping finalized blocks makes us sync much faster - we only need to download blocks other than the latest one
36
41
  // in order to detect reorgs, and there can be no reorgs on finalized block, making this safe.
37
42
  skipFinalized: true
38
43
  });
39
44
  }
40
- /** Handle events emitted by the block stream. */ async handleBlockStreamEvent(event) {
45
+ /** Handle events emitted by the block stream. Serialized to prevent concurrent mutations to anchor state. */ handleBlockStreamEvent(event) {
46
+ return this.eventQueue.put(()=>this.doHandleBlockStreamEvent(event));
47
+ }
48
+ async doHandleBlockStreamEvent(event) {
41
49
  await this.l2TipsStore.handleBlockStreamEvent(event);
42
50
  switch(event.type){
43
51
  case 'blocks-added':
@@ -60,9 +68,11 @@ import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
60
68
  case 'chain-proven':
61
69
  {
62
70
  if (this.config.syncChainTip === 'proven') {
63
- const blockHeader = await this.node.getBlockHeader(BlockNumber(event.block.number));
64
- if (blockHeader) {
65
- await this.updateAnchorBlockHeader(blockHeader);
71
+ const block = await this.node.getBlock(BlockNumber(event.block.number));
72
+ if (block) {
73
+ await this.updateAnchorBlockHeader(block.header);
74
+ } else {
75
+ this.log.warn(`Block header not found for proven block ${event.block.number}, skipping anchor update`);
66
76
  }
67
77
  }
68
78
  break;
@@ -70,9 +80,11 @@ import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
70
80
  case 'chain-finalized':
71
81
  {
72
82
  if (this.config.syncChainTip === 'finalized') {
73
- const blockHeader = await this.node.getBlockHeader(BlockNumber(event.block.number));
74
- if (blockHeader) {
75
- await this.updateAnchorBlockHeader(blockHeader);
83
+ const block = await this.node.getBlock(BlockNumber(event.block.number));
84
+ if (block) {
85
+ await this.updateAnchorBlockHeader(block.header);
86
+ } else {
87
+ this.log.warn(`Block header not found for finalized block ${event.block.number}, skipping anchor update`);
76
88
  }
77
89
  }
78
90
  break;
@@ -88,18 +100,21 @@ import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
88
100
  });
89
101
  return;
90
102
  }
91
- this.log.warn(`Pruning data after block ${event.block.number} due to reorg`);
103
+ this.log.warn(`Pruning data after block ${event.block.number} due to reorg`, {
104
+ pruneBlock: event.block
105
+ });
92
106
  // Note that the following is not necessarily the anchor block that will be used in the transaction - if
93
107
  // the chain has already moved past the reorg, we'll also see blocks-added events that will push the anchor
94
108
  // forward.
95
- const newAnchorBlockHeader = await this.node.getBlockHeader(BlockHash.fromString(event.block.hash));
109
+ const newAnchorBlock = await this.node.getBlock(BlockHash.fromString(event.block.hash));
110
+ const newAnchorBlockHeader = newAnchorBlock?.header;
96
111
  if (!newAnchorBlockHeader) {
97
112
  throw new Error(`Block header for block number ${event.block.number} and hash ${event.block.hash} not found during chain prune. This likely indicates a bug in the node, as we receive block stream events and fetch block headers from the same node.`);
98
113
  }
99
114
  // Operations are wrapped in a single transaction to ensure atomicity.
100
115
  await this.store.transactionAsync(async ()=>{
101
- await this.noteStore.rollback(event.block.number, currentAnchorBlockNumber);
102
- await this.privateEventStore.rollback(event.block.number, currentAnchorBlockNumber);
116
+ await this.noteStore.rollback(event.block.number);
117
+ await this.privateEventStore.rollback(event.block.number);
103
118
  await this.updateAnchorBlockHeader(newAnchorBlockHeader);
104
119
  });
105
120
  break;
@@ -129,6 +144,8 @@ import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
129
144
  return;
130
145
  }
131
146
  this.log.debug(`Syncing PXE with the node`);
147
+ // Capture the promise locally so we always await the exact promise we created, even if this.isSyncing is modified
148
+ // between assignment and await (e.g. due to future refactors introducing a yield point).
132
149
  const isSyncing = this.doSync();
133
150
  this.isSyncing = isSyncing;
134
151
  try {
@@ -137,6 +154,11 @@ import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
137
154
  this.isSyncing = undefined;
138
155
  }
139
156
  }
157
+ /** Stops the block synchronizer, waiting for any in-progress sync and queued events to complete. */ async stop() {
158
+ await this.isSyncing;
159
+ await this.blockStream.stop();
160
+ await this.eventQueue.end();
161
+ }
140
162
  async doSync() {
141
163
  let currentHeader;
142
164
  try {
@@ -146,7 +168,7 @@ import { BlockHash, L2BlockStream } from '@aztec/stdlib/block';
146
168
  }
147
169
  if (!currentHeader) {
148
170
  // REFACTOR: We should know the header of the genesis block without having to request it from the node.
149
- await this.anchorBlockStore.setHeader(await this.node.getBlockHeader(BlockNumber.ZERO));
171
+ await this.anchorBlockStore.setHeader((await this.node.getBlockData(BlockNumber.ZERO)).header);
150
172
  }
151
173
  await this.blockStream.sync();
152
174
  }
@@ -17,6 +17,12 @@ export interface BlockSynchronizerConfig {
17
17
  l2BlockBatchSize: number;
18
18
  /** Which chain tip to sync to (proposed, checkpointed, proven, finalized) */
19
19
  syncChainTip?: 'proposed' | 'checkpointed' | 'proven' | 'finalized';
20
+ /**
21
+ * Whether PXE should automatically sync with the node before each operation (simulate, prove, profile,
22
+ * execute utility, get private events, update contract). When disabled, callers (e.g. wallets) are
23
+ * responsible for calling `pxe.sync()` explicitly
24
+ */
25
+ autoSync: boolean;
20
26
  }
21
27
  export type PXEConfig = KernelProverConfig & DataStoreConfig & ChainConfig & BlockSynchronizerConfig;
22
28
  export type CliPXEOptions = {
@@ -34,4 +40,4 @@ export declare const allPxeConfigMappings: ConfigMappingsType<CliPXEOptions & PX
34
40
  * Creates an instance of CliPxeOptions out of environment variables
35
41
  */
36
42
  export declare function getCliPXEOptions(): CliPXEOptions & PXEConfig;
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBS3hCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx3QkFBd0IsQ0FBQztBQUVsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxNQUFNLFdBQVcsa0JBQWtCO0lBQ2pDLDhDQUE4QztJQUM5QyxhQUFhLENBQUMsRUFBRSxPQUFPLENBQUM7Q0FDekI7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyx1QkFBdUI7SUFDdEMseUZBQXlGO0lBQ3pGLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztJQUN6Qiw2RUFBNkU7SUFDN0UsWUFBWSxDQUFDLEVBQUUsVUFBVSxHQUFHLGNBQWMsR0FBRyxRQUFRLEdBQUcsV0FBVyxDQUFDO0NBQ3JFO0FBRUQsTUFBTSxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsR0FBRyxlQUFlLEdBQUcsV0FBVyxHQUFHLHVCQUF1QixDQUFDO0FBRXJHLE1BQU0sTUFBTSxhQUFhLEdBQUc7SUFDMUIsMkNBQTJDO0lBQzNDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUNsQixDQUFDO0FBRUYsZUFBTyxNQUFNLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLFNBQVMsQ0FnQzNELENBQUM7QUFFRjs7R0FFRztBQUNILHdCQUFnQixZQUFZLElBQUksU0FBUyxDQUV4QztBQUVELGVBQU8sTUFBTSxvQkFBb0IsRUFBRSxrQkFBa0IsQ0FBQyxhQUFhLENBS2xFLENBQUM7QUFFRixlQUFPLE1BQU0sb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FXOUUsQ0FBQztBQUVGOztHQUVHO0FBQ0gsd0JBQWdCLGdCQUFnQixJQUFJLGFBQWEsR0FBRyxTQUFTLENBUTVEIn0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBTXhCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLEtBQUssV0FBVyxFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx3QkFBd0IsQ0FBQztBQUVsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxNQUFNLFdBQVcsa0JBQWtCO0lBQ2pDLDhDQUE4QztJQUM5QyxhQUFhLENBQUMsRUFBRSxPQUFPLENBQUM7Q0FDekI7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyx1QkFBdUI7SUFDdEMseUZBQXlGO0lBQ3pGLGdCQUFnQixFQUFFLE1BQU0sQ0FBQztJQUN6Qiw2RUFBNkU7SUFDN0UsWUFBWSxDQUFDLEVBQUUsVUFBVSxHQUFHLGNBQWMsR0FBRyxRQUFRLEdBQUcsV0FBVyxDQUFDO0lBQ3BFOzs7O09BSUc7SUFDSCxRQUFRLEVBQUUsT0FBTyxDQUFDO0NBQ25CO0FBRUQsTUFBTSxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsR0FBRyxlQUFlLEdBQUcsV0FBVyxHQUFHLHVCQUF1QixDQUFDO0FBRXJHLE1BQU0sTUFBTSxhQUFhLEdBQUc7SUFDMUIsMkNBQTJDO0lBQzNDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUNsQixDQUFDO0FBRUYsZUFBTyxNQUFNLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLFNBQVMsQ0ErQjNELENBQUM7QUFFRjs7R0FFRztBQUNILHdCQUFnQixZQUFZLElBQUksU0FBUyxDQUV4QztBQUVELGVBQU8sTUFBTSxvQkFBb0IsRUFBRSxrQkFBa0IsQ0FBQyxhQUFhLENBS2xFLENBQUM7QUFFRixlQUFPLE1BQU0sb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FXOUUsQ0FBQztBQUVGOztHQUVHO0FBQ0gsd0JBQWdCLGdCQUFnQixJQUFJLGFBQWEsR0FBRyxTQUFTLENBUTVEIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAElF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,yFAAyF;IACzF,gBAAgB,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,UAAU,GAAG,cAAc,GAAG,QAAQ,GAAG,WAAW,CAAC;CACrE;AAED,MAAM,MAAM,SAAS,GAAG,kBAAkB,GAAG,eAAe,GAAG,WAAW,GAAG,uBAAuB,CAAC;AAErG,MAAM,MAAM,aAAa,GAAG;IAC1B,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,SAAS,CAgC3D,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,aAAa,CAKlE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,aAAa,GAAG,SAAS,CAW9E,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,SAAS,CAQ5D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAMxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAElF,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,yFAAyF;IACzF,gBAAgB,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,UAAU,GAAG,cAAc,GAAG,QAAQ,GAAG,WAAW,CAAC;IACpE;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,SAAS,GAAG,kBAAkB,GAAG,eAAe,GAAG,WAAW,GAAG,uBAAuB,CAAC;AAErG,MAAM,MAAM,aAAa,GAAG;IAC1B,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,SAAS,CA+B3D,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAExC;AAED,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,aAAa,CAKlE,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,aAAa,GAAG,SAAS,CAW9E,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,SAAS,CAQ5D"}
@@ -1,4 +1,4 @@
1
- import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, parseBooleanEnv } from '@aztec/foundation/config';
1
+ import { booleanConfigHelper, enumConfigHelper, getConfigFromMappings, numberConfigHelper, parseBooleanEnv } from '@aztec/foundation/config';
2
2
  import { chainConfigMappings } from '@aztec/stdlib/config';
3
3
  import { dataConfigMappings } from '@aztec/stdlib/kv-store';
4
4
  export { getPackageInfo } from './package_info.js';
@@ -25,19 +25,17 @@ export const pxeConfigMappings = {
25
25
  syncChainTip: {
26
26
  env: 'PXE_SYNC_CHAIN_TIP',
27
27
  description: 'Which chain tip to sync to (proposed, checkpointed, proven, finalized)',
28
- defaultValue: 'proposed',
29
- parseEnv: (val)=>{
30
- const allowedValues = [
31
- 'proposed',
32
- 'checkpointed',
33
- 'proven',
34
- 'finalized'
35
- ];
36
- if (allowedValues.includes(val)) {
37
- return val;
38
- }
39
- throw new Error(`Invalid value for PXE_SYNC_CHAIN_TIP: ${val}. Allowed values are: ${allowedValues.join(', ')}`);
40
- }
28
+ ...enumConfigHelper([
29
+ 'proposed',
30
+ 'checkpointed',
31
+ 'proven',
32
+ 'finalized'
33
+ ], 'proposed')
34
+ },
35
+ autoSync: {
36
+ env: 'PXE_AUTO_SYNC',
37
+ description: 'Whether PXE syncs with the node automatically before each operation. Disable to let the caller (e.g. a wallet) drive syncs explicitly via pxe.sync().',
38
+ ...booleanConfigHelper(true)
41
39
  }
42
40
  };
43
41
  /**
@@ -5,11 +5,12 @@ import type { FunctionCall } from '@aztec/stdlib/abi';
5
5
  import { FunctionSelector } from '@aztec/stdlib/abi';
6
6
  import type { AuthWitness } from '@aztec/stdlib/auth-witness';
7
7
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
8
+ import type { L2TipsProvider } from '@aztec/stdlib/block';
8
9
  import type { AztecNode } from '@aztec/stdlib/interfaces/server';
9
10
  import { type PrivateKernelExecutionProofOutput, PrivateKernelTailCircuitPublicInputs } from '@aztec/stdlib/kernel';
10
11
  import { BlockHeader, type OffchainEffect, PrivateExecutionResult, TxExecutionRequest } from '@aztec/stdlib/tx';
11
- import type { AccessScopes } from '../access_scopes.js';
12
12
  import type { ContractSyncService } from '../contract_sync/contract_sync_service.js';
13
+ import type { ExecutionHooks } from '../hooks/index.js';
13
14
  import type { MessageContextService } from '../messages/message_context_service.js';
14
15
  import type { AddressStore } from '../storage/address_store/address_store.js';
15
16
  import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
@@ -32,7 +33,7 @@ export type ContractSimulatorRunOpts = {
32
33
  /** The address used as a tagging sender when emitting private logs. */
33
34
  senderForTags?: AztecAddress;
34
35
  /** The accounts whose notes we can access in this call. */
35
- scopes: AccessScopes;
36
+ scopes: AztecAddress[];
36
37
  /** The job ID for staged writes. */
37
38
  jobId: string;
38
39
  };
@@ -43,6 +44,7 @@ export type ContractFunctionSimulatorArgs = {
43
44
  keyStore: KeyStore;
44
45
  addressStore: AddressStore;
45
46
  aztecNode: AztecNode;
47
+ l2TipsStore: L2TipsProvider;
46
48
  senderTaggingStore: SenderTaggingStore;
47
49
  recipientTaggingStore: RecipientTaggingStore;
48
50
  senderAddressBookStore: SenderAddressBookStore;
@@ -51,6 +53,7 @@ export type ContractFunctionSimulatorArgs = {
51
53
  simulator: CircuitSimulator;
52
54
  contractSyncService: ContractSyncService;
53
55
  messageContextService: MessageContextService;
56
+ hooks?: ExecutionHooks;
54
57
  };
55
58
  /**
56
59
  * The contract function simulator.
@@ -62,6 +65,7 @@ export declare class ContractFunctionSimulator {
62
65
  private readonly keyStore;
63
66
  private readonly addressStore;
64
67
  private readonly aztecNode;
68
+ private readonly l2TipsStore;
65
69
  private readonly senderTaggingStore;
66
70
  private readonly recipientTaggingStore;
67
71
  private readonly senderAddressBookStore;
@@ -70,6 +74,7 @@ export declare class ContractFunctionSimulator {
70
74
  private readonly simulator;
71
75
  private readonly contractSyncService;
72
76
  private readonly messageContextService;
77
+ private readonly hooks;
73
78
  constructor(args: ContractFunctionSimulatorArgs);
74
79
  /**
75
80
  * Runs a private function.
@@ -85,7 +90,7 @@ export declare class ContractFunctionSimulator {
85
90
  * accounts if not specified.
86
91
  * @returns A return value of the utility function in a form as returned by the simulator (Noir fields)
87
92
  */
88
- runUtility(call: FunctionCall, authwits: AuthWitness[], anchorBlockHeader: BlockHeader, scopes: AccessScopes, jobId: string): Promise<{
93
+ runUtility(call: FunctionCall, authwits: AuthWitness[], anchorBlockHeader: BlockHeader, scopes: AztecAddress[], jobId: string): Promise<{
89
94
  result: Fr[];
90
95
  offchainEffects: OffchainEffect[];
91
96
  }>;
@@ -111,4 +116,4 @@ export declare class ContractFunctionSimulator {
111
116
  * @returns The simulated proving result.
112
117
  */
113
118
  export declare function generateSimulatedProvingResult(privateExecutionResult: PrivateExecutionResult, debugFunctionNameGetter: (contractAddress: AztecAddress, functionSelector: FunctionSelector) => Promise<string>, node: AztecNode, minRevertibleSideEffectCounterOverride?: number): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>>;
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL2NvbnRyYWN0X2Z1bmN0aW9uX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5QkEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3BELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE9BQU8sRUFDTCxLQUFLLGdCQUFnQixFQU90QixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFXM0QsT0FBTyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUtMLEtBQUssaUNBQWlDLEVBQ3RDLG9DQUFvQyxFQWFyQyxNQUFNLHNCQUFzQixDQUFDO0FBSTlCLE9BQU8sRUFDTCxXQUFXLEVBR1gsS0FBSyxjQUFjLEVBQ25CLHNCQUFzQixFQUV0QixrQkFBa0IsRUFJbkIsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3JGLE9BQU8sS0FBSyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDcEYsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFD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
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RfZnVuY3Rpb25fc2ltdWxhdG9yL2NvbnRyYWN0X2Z1bmN0aW9uX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5QkEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3BELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR2pELE9BQU8sRUFDTCxLQUFLLGdCQUFnQixFQU90QixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxLQUFLLEVBQWtCLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVTFFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFLTCxLQUFLLGlDQUFpQyxFQUN0QyxvQ0FBb0MsRUFhckMsTUFBTSxzQkFBc0IsQ0FBQztBQUs5QixPQUFPLEVBQ0wsV0FBVyxFQUdYLEtBQUssY0FBYyxFQUNuQixzQkFBc0IsRUFFdEIsa0JBQWtCLEVBSW5CLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNyRixPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FB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
@@ -1 +1 @@
1
- {"version":3,"file":"contract_function_simulator.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/contract_function_simulator.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EACL,KAAK,gBAAgB,EAOtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAgB,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAW3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAKL,KAAK,iCAAiC,EACtC,oCAAoC,EAarC,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EACL,WAAW,EAGX,KAAK,cAAc,EACnB,sBAAsB,EAEtB,kBAAkB,EAInB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC/F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uDAAuD,CAAC;AACpG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kDAAkD,CAAC;AAU3F,iDAAiD;AACjD,MAAM,MAAM,wBAAwB,GAAG;IACrC,iEAAiE;IACjE,eAAe,EAAE,YAAY,CAAC;IAC9B,gDAAgD;IAChD,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,6GAA6G;IAC7G,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,0DAA0D;IAC1D,iBAAiB,EAAE,WAAW,CAAC;IAC/B,uEAAuE;IACvE,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,2DAA2D;IAC3D,MAAM,EAAE,YAAY,CAAC;IACrB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,sDAAsD;AACtD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,YAAY,EAAE,YAAY,CAAC;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C,CAAC;AAEF;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAwB;IAC9D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAyB;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAwB;IAE9D,YAAY,IAAI,EAAE,6BAA6B,EAe9C;IAED;;;OAGG;IACU,GAAG,CACd,OAAO,EAAE,kBAAkB,EAC3B,EACE,eAAe,EACf,QAAQ,EACR,SAAsD,EACtD,iBAAiB,EACjB,aAAa,EACb,MAAM,EACN,KAAK,EACN,EAAE,wBAAwB,GAC1B,OAAO,CAAC,sBAAsB,CAAC,CA4GjC;IAGD;;;;;;;;OAQG;IACU,UAAU,CACrB,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,WAAW,EAAE,EACvB,iBAAiB,EAAE,WAAW,EAC9B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAAC,eAAe,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC,CAyD9D;IAGD;;;OAGG;IACH,QAAQ;;MAUP;CACF;AAYD;;;;;;;;;;;;GAYG;AACH,wBAAsB,8BAA8B,CAClD,sBAAsB,EAAE,sBAAsB,EAC9C,uBAAuB,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,EAC/G,IAAI,EAAE,SAAS,EACf,sCAAsC,CAAC,EAAE,MAAM,GAC9C,OAAO,CAAC,iCAAiC,CAAC,oCAAoC,CAAC,CAAC,CAqRlF"}
1
+ {"version":3,"file":"contract_function_simulator.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/contract_function_simulator.ts"],"names":[],"mappings":"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"}
@@ -14,14 +14,17 @@ import { ClaimedLengthArray, PartialPrivateTailPublicInputsForPublic, PartialPri
14
14
  import { PrivateLog } from '@aztec/stdlib/logs';
15
15
  import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
16
16
  import { ChonkProof } from '@aztec/stdlib/proofs';
17
+ import { MerkleTreeId } from '@aztec/stdlib/trees';
17
18
  import { CallContext, HashedValues, PrivateExecutionResult, TxConstantData, collectNested, collectNoteHashNullifierCounterMap, getFinalMinRevertibleSideEffectCounter } from '@aztec/stdlib/tx';
19
+ import { CapsuleService } from '../storage/capsule_store/capsule_service.js';
18
20
  import { ExecutionNoteCache } from './execution_note_cache.js';
19
21
  import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
20
22
  import { HashedValuesCache } from './hashed_values_cache.js';
21
- import { Oracle } from './oracle/oracle.js';
23
+ import { buildACIRCallback } from './oracle/acir_callback.js';
22
24
  import { executePrivateFunction } from './oracle/private_execution.js';
23
25
  import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
24
26
  import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
27
+ import { TransientArrayService } from './transient_array_service.js';
25
28
  /**
26
29
  * The contract function simulator.
27
30
  */ export class ContractFunctionSimulator {
@@ -31,6 +34,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
31
34
  keyStore;
32
35
  addressStore;
33
36
  aztecNode;
37
+ l2TipsStore;
34
38
  senderTaggingStore;
35
39
  recipientTaggingStore;
36
40
  senderAddressBookStore;
@@ -39,12 +43,14 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
39
43
  simulator;
40
44
  contractSyncService;
41
45
  messageContextService;
46
+ hooks;
42
47
  constructor(args){
43
48
  this.contractStore = args.contractStore;
44
49
  this.noteStore = args.noteStore;
45
50
  this.keyStore = args.keyStore;
46
51
  this.addressStore = args.addressStore;
47
52
  this.aztecNode = args.aztecNode;
53
+ this.l2TipsStore = args.l2TipsStore;
48
54
  this.senderTaggingStore = args.senderTaggingStore;
49
55
  this.recipientTaggingStore = args.recipientTaggingStore;
50
56
  this.senderAddressBookStore = args.senderAddressBookStore;
@@ -53,6 +59,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
53
59
  this.simulator = args.simulator;
54
60
  this.contractSyncService = args.contractSyncService;
55
61
  this.messageContextService = args.messageContextService;
62
+ this.hooks = args.hooks;
56
63
  this.log = createLogger('simulator');
57
64
  }
58
65
  /**
@@ -65,7 +72,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
65
72
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
66
73
  }
67
74
  if (request.origin !== contractAddress) {
68
- this.log.warn(`Request origin does not match contract address in simulation. Request origin: ${request.origin}, contract address: ${contractAddress}`);
75
+ throw new Error(`Request origin does not match contract address in simulation. Request origin: ${request.origin}, contract address: ${contractAddress}`);
69
76
  }
70
77
  // reserve the first side effect for the tx hash (inserted by the private kernel)
71
78
  const startSideEffectCounter = 2;
@@ -73,6 +80,10 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
73
80
  const protocolNullifier = await computeProtocolNullifier(await request.toTxRequest().hash());
74
81
  const noteCache = new ExecutionNoteCache(protocolNullifier);
75
82
  const taggingIndexCache = new ExecutionTaggingIndexCache();
83
+ // One shared transient store for the whole execution tree rooted at this transaction. Threaded into every child
84
+ // private oracle and inherited by nested utility frames, so that frames of the same contract see each other's
85
+ // transient arrays, then discarded when run() returns.
86
+ const transientArrayService = new TransientArrayService();
76
87
  const privateExecutionOracle = new PrivateExecutionOracle({
77
88
  argsHash: request.firstCallArgsHash,
78
89
  txContext: request.txContext,
@@ -94,7 +105,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
94
105
  senderTaggingStore: this.senderTaggingStore,
95
106
  recipientTaggingStore: this.recipientTaggingStore,
96
107
  senderAddressBookStore: this.senderAddressBookStore,
97
- capsuleStore: this.capsuleStore,
108
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
98
109
  privateEventStore: this.privateEventStore,
99
110
  messageContextService: this.messageContextService,
100
111
  contractSyncService: this.contractSyncService,
@@ -103,7 +114,10 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
103
114
  sideEffectCounter: startSideEffectCounter,
104
115
  scopes,
105
116
  senderForTags,
106
- simulator: this.simulator
117
+ simulator: this.simulator,
118
+ l2TipsStore: this.l2TipsStore,
119
+ hooks: this.hooks,
120
+ transientArrayService
107
121
  });
108
122
  const setupTime = simulatorSetupTimer.ms();
109
123
  try {
@@ -121,7 +135,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
121
135
  r.publicInputs.publicTeardownCallRequest
122
136
  ]));
123
137
  const publicFunctionsCalldata = await Promise.all(publicCallRequests.map(async (r)=>{
124
- const calldata = await privateExecutionOracle.loadFromExecutionCache(r.calldataHash);
138
+ const calldata = await privateExecutionOracle.getHashPreimage(r.calldataHash);
125
139
  return new HashedValues(calldata, r.calldataHash);
126
140
  }));
127
141
  const teardownTime = simulatorTeardownTimer.ms();
@@ -137,7 +151,6 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
137
151
  throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
138
152
  }
139
153
  }
140
- // docs:start:execute_utility_function
141
154
  /**
142
155
  * Runs a utility function.
143
156
  * @param call - The function call to execute.
@@ -151,6 +164,9 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
151
164
  if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
152
165
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
153
166
  }
167
+ const utilityExecutor = async (syncCall, execScopes)=>{
168
+ await this.runUtility(syncCall, [], anchorBlockHeader, execScopes, jobId);
169
+ };
154
170
  const oracle = new UtilityExecutionOracle({
155
171
  contractAddress: call.to,
156
172
  authWitnesses: authwits,
@@ -163,12 +179,18 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
163
179
  aztecNode: this.aztecNode,
164
180
  recipientTaggingStore: this.recipientTaggingStore,
165
181
  senderAddressBookStore: this.senderAddressBookStore,
166
- capsuleStore: this.capsuleStore,
182
+ capsuleService: new CapsuleService(this.capsuleStore, scopes),
167
183
  privateEventStore: this.privateEventStore,
168
184
  messageContextService: this.messageContextService,
169
185
  contractSyncService: this.contractSyncService,
186
+ l2TipsStore: this.l2TipsStore,
170
187
  jobId,
171
- scopes
188
+ scopes,
189
+ simulator: this.simulator,
190
+ hooks: this.hooks,
191
+ utilityExecutor,
192
+ // Execution-tree root (top-level utility run or contract sync): own store; nested frames inherit it.
193
+ transientArrayService: new TransientArrayService()
172
194
  });
173
195
  try {
174
196
  this.log.verbose(`Executing utility function ${entryPointArtifact.name}`, {
@@ -176,7 +198,7 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
176
198
  selector: call.selector
177
199
  });
178
200
  const initialWitness = toACVMWitness(0, call.args);
179
- const acirExecutionResult = await this.simulator.executeUserCircuit(initialWitness, entryPointArtifact, new Oracle(oracle).toACIRCallback()).catch((err)=>{
201
+ const acirExecutionResult = await this.simulator.executeUserCircuit(initialWitness, entryPointArtifact, buildACIRCallback(oracle)).catch((err)=>{
180
202
  err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
181
203
  throw new ExecutionError(err.message, {
182
204
  contractAddress: call.to,
@@ -194,7 +216,6 @@ import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
194
216
  throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
195
217
  }
196
218
  }
197
- // docs:end:execute_utility_function
198
219
  /**
199
220
  * Returns the execution statistics collected during the simulator run.
200
221
  * @returns The execution statistics.
@@ -401,17 +422,17 @@ class OrderedSideEffect {
401
422
  });
402
423
  }
403
424
  }
404
- const [noteHashWitnesses, nullifierWitnesses] = await Promise.all([
405
- Promise.all(settledNoteHashReads.map(({ value })=>node.getNoteHashMembershipWitness(anchorBlockHash, value))),
406
- Promise.all(settledNullifierReads.map(({ value })=>node.getNullifierMembershipWitness(anchorBlockHash, value)))
425
+ const [noteHashResults, nullifierResults] = await Promise.all([
426
+ settledNoteHashReads.length > 0 ? node.findLeavesIndexes(anchorBlockHash, MerkleTreeId.NOTE_HASH_TREE, settledNoteHashReads.map(({ value })=>value)) : [],
427
+ settledNullifierReads.length > 0 ? node.findLeavesIndexes(anchorBlockHash, MerkleTreeId.NULLIFIER_TREE, settledNullifierReads.map(({ value })=>value)) : []
407
428
  ]);
408
429
  for(let i = 0; i < settledNoteHashReads.length; i++){
409
- if (!noteHashWitnesses[i]) {
430
+ if (!noteHashResults[i]) {
410
431
  throw new Error(`Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`);
411
432
  }
412
433
  }
413
434
  for(let i = 0; i < settledNullifierReads.length; i++){
414
- if (!nullifierWitnesses[i]) {
435
+ if (!nullifierResults[i]) {
415
436
  throw new Error(`Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`);
416
437
  }
417
438
  }
@@ -0,0 +1,28 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ /** In-memory store for ephemeral arrays scoped to a single contract call frame. */
3
+ export declare class EphemeralArrayService {
4
+ #private;
5
+ /** Returns all elements in the array, or an empty array if uninitialized. */
6
+ readArrayAt(slot: Fr): Fr[][];
7
+ /** Returns the number of elements in the array at the given slot. */
8
+ len(slot: Fr): number;
9
+ /** Appends an element to the array and returns the new length. */
10
+ push(slot: Fr, elements: Fr[]): number;
11
+ /** Removes and returns the last element. Throws if empty. */
12
+ pop(slot: Fr): Fr[];
13
+ /** Returns the element at the given index. Throws if out of bounds. */
14
+ get(slot: Fr, index: number): Fr[];
15
+ /** Overwrites the element at the given index. Throws if out of bounds. */
16
+ set(slot: Fr, index: number, value: Fr[]): void;
17
+ /** Removes the element at the given index, shifting subsequent elements backward. Throws if out of bounds. */
18
+ remove(slot: Fr, index: number): void;
19
+ /** Removes all elements from the array. */
20
+ clear(slot: Fr): void;
21
+ /** Allocates a fresh, unused slot for a new ephemeral array. */
22
+ allocateSlot(): Fr;
23
+ /** Creates a new ephemeral array pre-populated with the given elements and returns its slot. */
24
+ newArray(elements: Fr[][]): Fr;
25
+ /** Copies `count` elements from the source array to the destination array (overwrites destination). */
26
+ copy(srcSlot: Fr, dstSlot: Fr, count: number): void;
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBoZW1lcmFsX2FycmF5X3NlcnZpY2UuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXBoZW1lcmFsX2FycmF5X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELG1GQUFtRjtBQUNuRixxQkFBYSxxQkFBcUI7O0lBT2hDLDZFQUE2RTtJQUM3RSxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUU1QjtJQU1ELHFFQUFxRTtJQUNyRSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBRXBCO0lBRUQsa0VBQWtFO0lBQ2xFLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsR0FBRyxNQUFNLENBS3JDO0lBRUQsNkRBQTZEO0lBQzdELEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQVFsQjtJQUVELHVFQUF1RTtJQUN2RSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQVFqQztJQUVELDBFQUEwRTtJQUMxRSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBUTlDO0lBRUQsOEdBQThHO0lBQzlHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQVFwQztJQUVELDJDQUEyQztJQUMzQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBRXBCO0lBRUQsZ0VBQWdFO0lBQ2hFLFlBQVksSUFBSSxFQUFFLENBTWpCO0lBRUQsZ0dBQWdHO0lBQ2hHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBSTdCO0lBRUQsdUdBQXVHO0lBQ3ZHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBVWxEO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ephemeral_array_service.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/ephemeral_array_service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,mFAAmF;AACnF,qBAAa,qBAAqB;;IAOhC,6EAA6E;IAC7E,WAAW,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAE5B;IAMD,qEAAqE;IACrE,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAEpB;IAED,kEAAkE;IAClE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,MAAM,CAKrC;IAED,6DAA6D;IAC7D,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,CAQlB;IAED,uEAAuE;IACvE,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,CAQjC;IAED,0EAA0E;IAC1E,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAQ9C;IAED,8GAA8G;IAC9G,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQpC;IAED,2CAA2C;IAC3C,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAEpB;IAED,gEAAgE;IAChE,YAAY,IAAI,EAAE,CAMjB;IAED,gGAAgG;IAChG,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAI7B;IAED,uGAAuG;IACvG,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAUlD;CACF"}
@@ -0,0 +1,78 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ /** In-memory store for ephemeral arrays scoped to a single contract call frame. */ export class EphemeralArrayService {
3
+ /**
4
+ * Maps a slot to the elements of the array stored at that slot. Each element is a serialized representation of
5
+ * the original type.
6
+ */ #arrays = new Map();
7
+ /** Returns all elements in the array, or an empty array if uninitialized. */ readArrayAt(slot) {
8
+ return this.#arrays.get(slot.toString()) ?? [];
9
+ }
10
+ #setArray(slot, array) {
11
+ this.#arrays.set(slot.toString(), array);
12
+ }
13
+ /** Returns the number of elements in the array at the given slot. */ len(slot) {
14
+ return this.readArrayAt(slot).length;
15
+ }
16
+ /** Appends an element to the array and returns the new length. */ push(slot, elements) {
17
+ const array = this.readArrayAt(slot);
18
+ array.push(elements);
19
+ this.#setArray(slot, array);
20
+ return array.length;
21
+ }
22
+ /** Removes and returns the last element. Throws if empty. */ pop(slot) {
23
+ const array = this.readArrayAt(slot);
24
+ if (array.length === 0) {
25
+ throw new Error(`Ephemeral array at slot ${slot} is empty`);
26
+ }
27
+ const element = array.pop();
28
+ this.#setArray(slot, array);
29
+ return element;
30
+ }
31
+ /** Returns the element at the given index. Throws if out of bounds. */ get(slot, index) {
32
+ const array = this.readArrayAt(slot);
33
+ if (index < 0 || index >= array.length) {
34
+ throw new Error(`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`);
35
+ }
36
+ return array[index];
37
+ }
38
+ /** Overwrites the element at the given index. Throws if out of bounds. */ set(slot, index, value) {
39
+ const array = this.readArrayAt(slot);
40
+ if (index < 0 || index >= array.length) {
41
+ throw new Error(`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`);
42
+ }
43
+ array[index] = value;
44
+ }
45
+ /** Removes the element at the given index, shifting subsequent elements backward. Throws if out of bounds. */ remove(slot, index) {
46
+ const array = this.readArrayAt(slot);
47
+ if (index < 0 || index >= array.length) {
48
+ throw new Error(`Ephemeral array index ${index} out of bounds for array of length ${array.length} at slot ${slot}`);
49
+ }
50
+ array.splice(index, 1);
51
+ }
52
+ /** Removes all elements from the array. */ clear(slot) {
53
+ this.#arrays.delete(slot.toString());
54
+ }
55
+ /** Allocates a fresh, unused slot for a new ephemeral array. */ allocateSlot() {
56
+ let slot;
57
+ do {
58
+ slot = Fr.random();
59
+ }while (this.#arrays.has(slot.toString()))
60
+ return slot;
61
+ }
62
+ /** Creates a new ephemeral array pre-populated with the given elements and returns its slot. */ newArray(elements) {
63
+ const slot = this.allocateSlot();
64
+ this.#setArray(slot, elements);
65
+ return slot;
66
+ }
67
+ /** Copies `count` elements from the source array to the destination array (overwrites destination). */ copy(srcSlot, dstSlot, count) {
68
+ const srcArray = this.readArrayAt(srcSlot);
69
+ if (count > srcArray.length) {
70
+ throw new Error(`Cannot copy ${count} elements from ephemeral array of length ${srcArray.length} at slot ${srcSlot}`);
71
+ }
72
+ // Deep copy the elements to avoid aliasing
73
+ const copied = srcArray.slice(0, count).map((el)=>[
74
+ ...el
75
+ ]);
76
+ this.#setArray(dstSlot, copied);
77
+ }
78
+ }
@@ -1,6 +1,6 @@
1
1
  import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
- import type { NoteData } from './oracle/interfaces.js';
3
+ import type { NoteData } from './noir-structs/note_data.js';
4
4
  interface PendingNote {
5
5
  note: NoteData;
6
6
  counter: number;
@@ -101,4 +101,4 @@ export declare class ExecutionNoteCache {
101
101
  getNonceGenerator(): Fr;
102
102
  }
103
103
  export {};
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX25vdGVfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX25vdGVfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR2hFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELFVBQVUsV0FBVztJQUNuQixJQUFJLEVBQUUsUUFBUSxDQUFDO0lBQ2YsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixzQkFBc0IsRUFBRSxFQUFFLENBQUM7Q0FDNUI7QUFFRDs7R0FFRztBQUNILHFCQUFhLGtCQUFrQjs7SUFvQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBbkM5Qzs7O09BR0c7SUFDSCxPQUFPLENBQUMsS0FBSyxDQUFxQjtJQUNsQzs7T0FFRztJQUNILE9BQU8sQ0FBQyxPQUFPLENBQXlDO0lBRXhEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsWUFBWSxDQUF1QztJQUUzRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxpQkFBaUIsQ0FBMEI7SUFFbkQ7O09BRUc7SUFDSCxPQUFPLENBQUMsOEJBQThCLENBQUs7SUFFM0MsT0FBTyxDQUFDLGlCQUFpQixDQUFTO0lBRWxDOzs7T0FHRztJQUNILE9BQU8sQ0FBQyw4QkFBOEIsQ0FBc0I7SUFFNUQsWUFBNkIsaUJBQWlCLEVBQUUsRUFBRSxFQUFJO0lBRXREOzs7T0FHRztJQUNVLGlDQUFpQyxDQUFDLDhCQUE4QixFQUFFLE1BQU0saUJBc0NwRjtJQUVNLDZCQUE2QixDQUFDLGlCQUFpQixFQUFFLE1BQU0sR0FBRyxPQUFPLENBS3ZFO0lBRU0sTUFBTSxTQU1aO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFTaEQ7SUFFRDs7Ozs7O09BTUc7SUFDVSxXQUFXLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLCtCQXlCdkY7SUFFRDs7OztPQUlHO0lBQ1UsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsRUFBRSxpQkFHOUU7SUFFRDs7Ozs7O1FBTUk7SUFDRyxRQUFRLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxHQUFHLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxjQU05RjtJQUVEOzs7OztRQUtJO0lBQ0csZUFBZSxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUUsV0FHakU7SUFFRDs7O09BR0c7SUFDSSxhQUFhLENBQUMsZUFBZSxFQUFFLFlBQVksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBRS9EO0lBVUQsV0FBVyxJQUFJLFdBQVcsRUFBRSxDQUUzQjtJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLElBQUksRUFBRSxFQUFFLENBRTNCO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLElBQUksRUFBRSxFQUFFLENBTXZCO0lBRUQsaUJBQWlCLElBQUksRUFBRSxDQUV0QjtDQWFGIn0=
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX25vdGVfY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmFjdF9mdW5jdGlvbl9zaW11bGF0b3IvZXhlY3V0aW9uX25vdGVfY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR2hFLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTVELFVBQVUsV0FBVztJQUNuQixJQUFJLEVBQUUsUUFBUSxDQUFDO0lBQ2YsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixzQkFBc0IsRUFBRSxFQUFFLENBQUM7Q0FDNUI7QUFFRDs7R0FFRztBQUNILHFCQUFhLGtCQUFrQjs7SUFvQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsaUJBQWlCO0lBbkM5Qzs7O09BR0c7SUFDSCxPQUFPLENBQUMsS0FBSyxDQUFxQjtJQUNsQzs7T0FFRztJQUNILE9BQU8sQ0FBQyxPQUFPLENBQXlDO0lBRXhEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsWUFBWSxDQUF1QztJQUUzRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxpQkFBaUIsQ0FBMEI7SUFFbkQ7O09BRUc7SUFDSCxPQUFPLENBQUMsOEJBQThCLENBQUs7SUFFM0MsT0FBTyxDQUFDLGlCQUFpQixDQUFTO0lBRWxDOzs7T0FHRztJQUNILE9BQU8sQ0FBQyw4QkFBOEIsQ0FBc0I7SUFFNUQsWUFBNkIsaUJBQWlCLEVBQUUsRUFBRSxFQUFJO0lBRXREOzs7T0FHRztJQUNVLGlDQUFpQyxDQUFDLDhCQUE4QixFQUFFLE1BQU0saUJBc0NwRjtJQUVNLDZCQUE2QixDQUFDLGlCQUFpQixFQUFFLE1BQU0sR0FBRyxPQUFPLENBS3ZFO0lBRU0sTUFBTSxTQU1aO0lBRUQ7OztPQUdHO0lBQ0ksVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFTaEQ7SUFFRDs7Ozs7O09BTUc7SUFDVSxXQUFXLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLCtCQXlCdkY7SUFFRDs7OztPQUlHO0lBQ1UsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsRUFBRSxpQkFHOUU7SUFFRDs7Ozs7O1FBTUk7SUFDRyxRQUFRLENBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxHQUFHLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxjQU05RjtJQUVEOzs7OztRQUtJO0lBQ0csZUFBZSxDQUFDLGVBQWUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEVBQUUsV0FHakU7SUFFRDs7O09BR0c7SUFDSSxhQUFhLENBQUMsZUFBZSxFQUFFLFlBQVksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBRS9EO0lBVUQsV0FBVyxJQUFJLFdBQVcsRUFBRSxDQUUzQjtJQUVEOztPQUVHO0lBQ0gsb0JBQW9CLElBQUksRUFBRSxFQUFFLENBRTNCO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLElBQUksRUFBRSxFQUFFLENBTXZCO0lBRUQsaUJBQWlCLElBQUksRUFBRSxDQUV0QjtDQWFGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"execution_note_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_note_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,UAAU,WAAW;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB,EAAE,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,kBAAkB;;IAoCjB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAnC9C;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAqB;IAClC;;OAEG;IACH,OAAO,CAAC,OAAO,CAAyC;IAExD;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAuC;IAE3D;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAA0B;IAEnD;;OAEG;IACH,OAAO,CAAC,8BAA8B,CAAK;IAE3C,OAAO,CAAC,iBAAiB,CAAS;IAElC;;;OAGG;IACH,OAAO,CAAC,8BAA8B,CAAsB;IAE5D,YAA6B,iBAAiB,EAAE,EAAE,EAAI;IAEtD;;;OAGG;IACU,iCAAiC,CAAC,8BAA8B,EAAE,MAAM,iBAsCpF;IAEM,6BAA6B,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAKvE;IAEM,MAAM,SAMZ;IAED;;;OAGG;IACI,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,QAShD;IAED;;;;;;OAMG;IACU,WAAW,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,+BAyBvF;IAED;;;;OAIG;IACU,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,iBAG9E;IAED;;;;;;QAMI;IACG,QAAQ,CAAC,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,WAAW,EAAE,EAAE,cAM9F;IAED;;;;;QAKI;IACG,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,WAGjE;IAED;;;OAGG;IACI,aAAa,CAAC,eAAe,EAAE,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,CAE/D;IAUD,WAAW,IAAI,WAAW,EAAE,CAE3B;IAED;;OAEG;IACH,oBAAoB,IAAI,EAAE,EAAE,CAE3B;IAED;;;OAGG;IACH,gBAAgB,IAAI,EAAE,EAAE,CAMvB;IAED,iBAAiB,IAAI,EAAE,CAEtB;CAaF"}
1
+ {"version":3,"file":"execution_note_cache.d.ts","sourceRoot":"","sources":["../../src/contract_function_simulator/execution_note_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,UAAU,WAAW;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB,EAAE,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,kBAAkB;;IAoCjB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAnC9C;;;OAGG;IACH,OAAO,CAAC,KAAK,CAAqB;IAClC;;OAEG;IACH,OAAO,CAAC,OAAO,CAAyC;IAExD;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAuC;IAE3D;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAA0B;IAEnD;;OAEG;IACH,OAAO,CAAC,8BAA8B,CAAK;IAE3C,OAAO,CAAC,iBAAiB,CAAS;IAElC;;;OAGG;IACH,OAAO,CAAC,8BAA8B,CAAsB;IAE5D,YAA6B,iBAAiB,EAAE,EAAE,EAAI;IAEtD;;;OAGG;IACU,iCAAiC,CAAC,8BAA8B,EAAE,MAAM,iBAsCpF;IAEM,6BAA6B,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAKvE;IAEM,MAAM,SAMZ;IAED;;;OAGG;IACI,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,QAShD;IAED;;;;;;OAMG;IACU,WAAW,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,+BAyBvF;IAED;;;;OAIG;IACU,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,iBAG9E;IAED;;;;;;QAMI;IACG,QAAQ,CAAC,eAAe,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,WAAW,EAAE,EAAE,cAM9F;IAED;;;;;QAKI;IACG,eAAe,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,WAGjE;IAED;;;OAGG;IACI,aAAa,CAAC,eAAe,EAAE,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,CAE/D;IAUD,WAAW,IAAI,WAAW,EAAE,CAE3B;IAED;;OAEG;IACH,oBAAoB,IAAI,EAAE,EAAE,CAE3B;IAED;;;OAGG;IACH,gBAAgB,IAAI,EAAE,EAAE,CAMvB;IAED,iBAAiB,IAAI,EAAE,CAEtB;CAaF"}