@aztec/pxe 0.0.1-commit.b655e406 → 0.0.1-commit.b8a057fa

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