@aztec/pxe 0.0.1-commit.03f7ef2 → 0.0.1-commit.0658669b3

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 (373) hide show
  1. package/dest/access_scopes.d.ts +9 -0
  2. package/dest/access_scopes.d.ts.map +1 -0
  3. package/dest/access_scopes.js +6 -0
  4. package/dest/bin/check_oracle_version.js +1 -1
  5. package/dest/block_synchronizer/block_synchronizer.d.ts +17 -11
  6. package/dest/block_synchronizer/block_synchronizer.d.ts.map +1 -1
  7. package/dest/block_synchronizer/block_synchronizer.js +80 -34
  8. package/dest/config/index.d.ts +3 -1
  9. package/dest/config/index.d.ts.map +1 -1
  10. package/dest/config/index.js +17 -0
  11. package/dest/config/package_info.js +1 -1
  12. package/dest/contract_function_simulator/benchmarked_node.d.ts +9 -0
  13. package/dest/contract_function_simulator/benchmarked_node.d.ts.map +1 -0
  14. package/dest/contract_function_simulator/benchmarked_node.js +77 -0
  15. package/dest/contract_function_simulator/contract_function_simulator.d.ts +65 -40
  16. package/dest/contract_function_simulator/contract_function_simulator.d.ts.map +1 -1
  17. package/dest/contract_function_simulator/contract_function_simulator.js +209 -89
  18. package/dest/contract_function_simulator/execution_note_cache.d.ts +18 -9
  19. package/dest/contract_function_simulator/execution_note_cache.d.ts.map +1 -1
  20. package/dest/contract_function_simulator/execution_note_cache.js +45 -28
  21. package/dest/contract_function_simulator/index.d.ts +2 -2
  22. package/dest/contract_function_simulator/index.d.ts.map +1 -1
  23. package/dest/contract_function_simulator/index.js +1 -1
  24. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts +4 -3
  25. package/dest/contract_function_simulator/noir-structs/event_validation_request.d.ts.map +1 -1
  26. package/dest/contract_function_simulator/noir-structs/event_validation_request.js +7 -4
  27. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts +3 -3
  28. package/dest/contract_function_simulator/noir-structs/note_validation_request.d.ts.map +1 -1
  29. package/dest/contract_function_simulator/noir-structs/note_validation_request.js +2 -2
  30. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts +4 -10
  31. package/dest/contract_function_simulator/noir-structs/utility_context.d.ts.map +1 -1
  32. package/dest/contract_function_simulator/noir-structs/utility_context.js +7 -18
  33. package/dest/contract_function_simulator/oracle/interfaces.d.ts +17 -13
  34. package/dest/contract_function_simulator/oracle/interfaces.d.ts.map +1 -1
  35. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts +3 -1
  36. package/dest/contract_function_simulator/oracle/message_load_oracle_inputs.d.ts.map +1 -1
  37. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts +6 -6
  38. package/dest/contract_function_simulator/oracle/note_packing_utils.d.ts.map +1 -1
  39. package/dest/contract_function_simulator/oracle/note_packing_utils.js +8 -8
  40. package/dest/contract_function_simulator/oracle/oracle.d.ts +12 -10
  41. package/dest/contract_function_simulator/oracle/oracle.d.ts.map +1 -1
  42. package/dest/contract_function_simulator/oracle/oracle.js +67 -44
  43. package/dest/contract_function_simulator/oracle/private_execution.d.ts +2 -26
  44. package/dest/contract_function_simulator/oracle/private_execution.d.ts.map +1 -1
  45. package/dest/contract_function_simulator/oracle/private_execution.js +1 -37
  46. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts +46 -46
  47. package/dest/contract_function_simulator/oracle/private_execution_oracle.d.ts.map +1 -1
  48. package/dest/contract_function_simulator/oracle/private_execution_oracle.js +88 -56
  49. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts +82 -48
  50. package/dest/contract_function_simulator/oracle/utility_execution_oracle.d.ts.map +1 -1
  51. package/dest/contract_function_simulator/oracle/utility_execution_oracle.js +141 -120
  52. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts +4 -4
  53. package/dest/contract_function_simulator/proxied_contract_data_source.d.ts.map +1 -1
  54. package/dest/contract_function_simulator/proxied_contract_data_source.js +5 -5
  55. package/dest/contract_logging.d.ts +22 -0
  56. package/dest/contract_logging.d.ts.map +1 -0
  57. package/dest/contract_logging.js +23 -0
  58. package/dest/contract_sync/contract_sync_service.d.ts +43 -0
  59. package/dest/contract_sync/contract_sync_service.d.ts.map +1 -0
  60. package/dest/contract_sync/contract_sync_service.js +97 -0
  61. package/dest/contract_sync/helpers.d.ts +29 -0
  62. package/dest/contract_sync/helpers.d.ts.map +1 -0
  63. package/dest/contract_sync/helpers.js +55 -0
  64. package/dest/debug/pxe_debug_utils.d.ts +26 -12
  65. package/dest/debug/pxe_debug_utils.d.ts.map +1 -1
  66. package/dest/debug/pxe_debug_utils.js +30 -19
  67. package/dest/entrypoints/client/bundle/index.d.ts +4 -1
  68. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -1
  69. package/dest/entrypoints/client/bundle/index.js +3 -0
  70. package/dest/entrypoints/client/bundle/utils.d.ts +1 -1
  71. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -1
  72. package/dest/entrypoints/client/bundle/utils.js +31 -8
  73. package/dest/entrypoints/client/lazy/index.d.ts +4 -1
  74. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -1
  75. package/dest/entrypoints/client/lazy/index.js +3 -0
  76. package/dest/entrypoints/client/lazy/utils.d.ts +2 -2
  77. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -1
  78. package/dest/entrypoints/client/lazy/utils.js +32 -9
  79. package/dest/entrypoints/pxe_creation_options.d.ts +5 -3
  80. package/dest/entrypoints/pxe_creation_options.d.ts.map +1 -1
  81. package/dest/entrypoints/server/index.d.ts +5 -1
  82. package/dest/entrypoints/server/index.d.ts.map +1 -1
  83. package/dest/entrypoints/server/index.js +4 -0
  84. package/dest/entrypoints/server/utils.d.ts +1 -1
  85. package/dest/entrypoints/server/utils.d.ts.map +1 -1
  86. package/dest/entrypoints/server/utils.js +39 -16
  87. package/dest/error_enriching.d.ts +4 -4
  88. package/dest/error_enriching.d.ts.map +1 -1
  89. package/dest/error_enriching.js +6 -6
  90. package/dest/events/event_service.d.ts +8 -8
  91. package/dest/events/event_service.d.ts.map +1 -1
  92. package/dest/events/event_service.js +21 -24
  93. package/dest/events/private_event_filter_validator.d.ts +6 -6
  94. package/dest/events/private_event_filter_validator.d.ts.map +1 -1
  95. package/dest/events/private_event_filter_validator.js +5 -6
  96. package/dest/job_coordinator/job_coordinator.d.ts +75 -0
  97. package/dest/job_coordinator/job_coordinator.d.ts.map +1 -0
  98. package/dest/job_coordinator/job_coordinator.js +94 -0
  99. package/dest/logs/log_service.d.ts +18 -32
  100. package/dest/logs/log_service.d.ts.map +1 -1
  101. package/dest/logs/log_service.js +76 -197
  102. package/dest/notes/note_service.d.ts +13 -12
  103. package/dest/notes/note_service.d.ts.map +1 -1
  104. package/dest/notes/note_service.js +42 -46
  105. package/dest/notes_filter.d.ts +25 -0
  106. package/dest/notes_filter.d.ts.map +1 -0
  107. package/dest/notes_filter.js +4 -0
  108. package/dest/oracle_version.d.ts +3 -3
  109. package/dest/oracle_version.d.ts.map +1 -1
  110. package/dest/oracle_version.js +4 -3
  111. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts +4 -0
  112. package/dest/private_kernel/hints/compute_tx_expiration_timestamp.d.ts.map +1 -0
  113. package/dest/private_kernel/hints/{compute_tx_include_by_timestamp.js → compute_tx_expiration_timestamp.js} +12 -12
  114. package/dest/private_kernel/hints/index.d.ts +3 -3
  115. package/dest/private_kernel/hints/index.d.ts.map +1 -1
  116. package/dest/private_kernel/hints/index.js +2 -2
  117. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts +29 -0
  118. package/dest/private_kernel/hints/private_kernel_reset_private_inputs_builder.d.ts.map +1 -0
  119. package/dest/private_kernel/hints/{build_private_kernel_reset_private_inputs.js → private_kernel_reset_private_inputs_builder.js} +141 -74
  120. package/dest/private_kernel/hints/test_utils.d.ts +122 -0
  121. package/dest/private_kernel/hints/test_utils.d.ts.map +1 -0
  122. package/dest/private_kernel/hints/test_utils.js +203 -0
  123. package/dest/private_kernel/private_kernel_execution_prover.d.ts +3 -2
  124. package/dest/private_kernel/private_kernel_execution_prover.d.ts.map +1 -1
  125. package/dest/private_kernel/private_kernel_execution_prover.js +24 -17
  126. package/dest/private_kernel/private_kernel_oracle.d.ts +24 -24
  127. package/dest/private_kernel/private_kernel_oracle.d.ts.map +1 -1
  128. package/dest/private_kernel/private_kernel_oracle.js +94 -2
  129. package/dest/pxe.d.ts +85 -66
  130. package/dest/pxe.d.ts.map +1 -1
  131. package/dest/pxe.js +203 -185
  132. package/dest/storage/address_store/address_store.d.ts +11 -0
  133. package/dest/storage/address_store/address_store.d.ts.map +1 -0
  134. package/dest/storage/{address_data_provider/address_data_provider.js → address_store/address_store.js} +13 -12
  135. package/dest/storage/address_store/index.d.ts +2 -0
  136. package/dest/storage/address_store/index.d.ts.map +1 -0
  137. package/dest/storage/address_store/index.js +1 -0
  138. package/dest/storage/anchor_block_store/anchor_block_store.d.ts +17 -0
  139. package/dest/storage/anchor_block_store/anchor_block_store.d.ts.map +1 -0
  140. package/dest/storage/{anchor_block_data_provider/anchor_block_data_provider.js → anchor_block_store/anchor_block_store.js} +9 -2
  141. package/dest/storage/anchor_block_store/index.d.ts +2 -0
  142. package/dest/storage/anchor_block_store/index.d.ts.map +1 -0
  143. package/dest/storage/anchor_block_store/index.js +1 -0
  144. package/dest/storage/capsule_store/capsule_store.d.ts +72 -0
  145. package/dest/storage/capsule_store/capsule_store.d.ts.map +1 -0
  146. package/dest/storage/capsule_store/capsule_store.js +253 -0
  147. package/dest/storage/capsule_store/index.d.ts +2 -0
  148. package/dest/storage/capsule_store/index.d.ts.map +1 -0
  149. package/dest/storage/capsule_store/index.js +1 -0
  150. package/dest/storage/contract_store/contract_store.d.ts +93 -0
  151. package/dest/storage/contract_store/contract_store.d.ts.map +1 -0
  152. package/dest/storage/contract_store/contract_store.js +309 -0
  153. package/dest/storage/contract_store/index.d.ts +2 -0
  154. package/dest/storage/contract_store/index.d.ts.map +1 -0
  155. package/dest/storage/contract_store/index.js +1 -0
  156. package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.d.ts +1 -1
  157. package/dest/storage/contract_store/private_functions_tree.d.ts.map +1 -0
  158. package/dest/storage/index.d.ts +8 -8
  159. package/dest/storage/index.d.ts.map +1 -1
  160. package/dest/storage/index.js +7 -7
  161. package/dest/storage/metadata.d.ts +1 -1
  162. package/dest/storage/metadata.js +1 -1
  163. package/dest/storage/note_store/index.d.ts +3 -0
  164. package/dest/storage/note_store/index.d.ts.map +1 -0
  165. package/dest/storage/note_store/index.js +2 -0
  166. package/dest/storage/note_store/note_store.d.ts +83 -0
  167. package/dest/storage/note_store/note_store.d.ts.map +1 -0
  168. package/dest/storage/note_store/note_store.js +343 -0
  169. package/dest/storage/note_store/stored_note.d.ts +16 -0
  170. package/dest/storage/note_store/stored_note.d.ts.map +1 -0
  171. package/dest/storage/note_store/stored_note.js +43 -0
  172. package/dest/storage/private_event_store/private_event_store.d.ts +91 -0
  173. package/dest/storage/private_event_store/private_event_store.d.ts.map +1 -0
  174. package/dest/storage/private_event_store/private_event_store.js +273 -0
  175. package/dest/storage/private_event_store/stored_private_event.d.ts +23 -0
  176. package/dest/storage/private_event_store/stored_private_event.d.ts.map +1 -0
  177. package/dest/storage/private_event_store/stored_private_event.js +56 -0
  178. package/dest/storage/tagging_store/index.d.ts +4 -0
  179. package/dest/storage/tagging_store/index.d.ts.map +1 -0
  180. package/dest/storage/tagging_store/index.js +3 -0
  181. package/dest/storage/tagging_store/recipient_tagging_store.d.ts +28 -0
  182. package/dest/storage/tagging_store/recipient_tagging_store.d.ts.map +1 -0
  183. package/dest/storage/tagging_store/recipient_tagging_store.js +111 -0
  184. package/dest/storage/tagging_store/sender_address_book_store.d.ts +14 -0
  185. package/dest/storage/tagging_store/sender_address_book_store.d.ts.map +1 -0
  186. package/dest/storage/tagging_store/sender_address_book_store.js +36 -0
  187. package/dest/storage/{tagging_data_provider/sender_tagging_data_provider.d.ts → tagging_store/sender_tagging_store.d.ts} +19 -9
  188. package/dest/storage/tagging_store/sender_tagging_store.d.ts.map +1 -0
  189. package/dest/storage/tagging_store/sender_tagging_store.js +348 -0
  190. package/dest/tagging/constants.d.ts +2 -2
  191. package/dest/tagging/constants.d.ts.map +1 -1
  192. package/dest/tagging/constants.js +10 -3
  193. package/dest/tagging/get_all_logs_by_tags.d.ts +24 -0
  194. package/dest/tagging/get_all_logs_by_tags.d.ts.map +1 -0
  195. package/dest/tagging/get_all_logs_by_tags.js +60 -0
  196. package/dest/tagging/index.d.ts +15 -3
  197. package/dest/tagging/index.d.ts.map +1 -1
  198. package/dest/tagging/index.js +14 -2
  199. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts +4 -3
  200. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.d.ts.map +1 -1
  201. package/dest/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.js +12 -12
  202. package/dest/tagging/recipient_sync/utils/find_highest_indexes.js +2 -2
  203. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts +3 -2
  204. package/dest/tagging/recipient_sync/utils/load_logs_for_range.d.ts.map +1 -1
  205. package/dest/tagging/recipient_sync/utils/load_logs_for_range.js +5 -2
  206. package/dest/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.d.ts +4 -4
  207. package/dest/tagging/sender_sync/sync_sender_tagging_indexes.d.ts.map +1 -0
  208. package/dest/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.js +8 -23
  209. package/dest/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.d.ts +1 -1
  210. package/dest/tagging/sender_sync/utils/get_status_change_of_pending.d.ts.map +1 -0
  211. package/dest/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.js +5 -8
  212. package/dest/tagging/{sync → sender_sync}/utils/load_and_store_new_tagging_indexes.d.ts +7 -4
  213. package/dest/tagging/sender_sync/utils/load_and_store_new_tagging_indexes.d.ts.map +1 -0
  214. package/dest/tagging/{sync → sender_sync}/utils/load_and_store_new_tagging_indexes.js +12 -7
  215. package/package.json +27 -18
  216. package/src/access_scopes.ts +9 -0
  217. package/src/bin/check_oracle_version.ts +1 -0
  218. package/src/block_synchronizer/block_synchronizer.ts +99 -46
  219. package/src/config/index.ts +14 -0
  220. package/src/config/package_info.ts +1 -1
  221. package/src/contract_function_simulator/benchmarked_node.ts +103 -0
  222. package/src/contract_function_simulator/contract_function_simulator.ts +363 -153
  223. package/src/contract_function_simulator/execution_note_cache.ts +44 -25
  224. package/src/contract_function_simulator/index.ts +1 -1
  225. package/src/contract_function_simulator/noir-structs/event_validation_request.ts +6 -2
  226. package/src/contract_function_simulator/noir-structs/note_validation_request.ts +2 -2
  227. package/src/contract_function_simulator/noir-structs/utility_context.ts +6 -25
  228. package/src/contract_function_simulator/oracle/interfaces.ts +22 -12
  229. package/src/contract_function_simulator/oracle/note_packing_utils.ts +10 -10
  230. package/src/contract_function_simulator/oracle/oracle.ts +79 -47
  231. package/src/contract_function_simulator/oracle/private_execution.ts +1 -69
  232. package/src/contract_function_simulator/oracle/private_execution_oracle.ts +121 -135
  233. package/src/contract_function_simulator/oracle/utility_execution_oracle.ts +217 -132
  234. package/src/contract_function_simulator/proxied_contract_data_source.ts +7 -7
  235. package/src/contract_logging.ts +39 -0
  236. package/src/contract_sync/contract_sync_service.ts +152 -0
  237. package/src/contract_sync/helpers.ts +98 -0
  238. package/src/debug/pxe_debug_utils.ts +65 -20
  239. package/src/entrypoints/client/bundle/index.ts +3 -0
  240. package/src/entrypoints/client/bundle/utils.ts +23 -16
  241. package/src/entrypoints/client/lazy/index.ts +3 -0
  242. package/src/entrypoints/client/lazy/utils.ts +24 -17
  243. package/src/entrypoints/pxe_creation_options.ts +4 -2
  244. package/src/entrypoints/server/index.ts +4 -0
  245. package/src/entrypoints/server/utils.ts +33 -41
  246. package/src/error_enriching.ts +7 -15
  247. package/src/events/event_service.ts +22 -28
  248. package/src/events/private_event_filter_validator.ts +4 -6
  249. package/src/job_coordinator/job_coordinator.ts +150 -0
  250. package/src/logs/log_service.ts +118 -274
  251. package/src/notes/note_service.ts +45 -49
  252. package/src/notes_filter.ts +26 -0
  253. package/src/oracle_version.ts +4 -3
  254. package/src/private_kernel/hints/{compute_tx_include_by_timestamp.ts → compute_tx_expiration_timestamp.ts} +13 -13
  255. package/src/private_kernel/hints/index.ts +2 -2
  256. package/src/private_kernel/hints/{build_private_kernel_reset_private_inputs.ts → private_kernel_reset_private_inputs_builder.ts} +196 -138
  257. package/src/private_kernel/hints/test_utils.ts +325 -0
  258. package/src/private_kernel/private_kernel_execution_prover.ts +27 -19
  259. package/src/private_kernel/private_kernel_oracle.ts +116 -36
  260. package/src/pxe.ts +331 -257
  261. package/src/storage/{address_data_provider/address_data_provider.ts → address_store/address_store.ts} +16 -16
  262. package/src/storage/address_store/index.ts +1 -0
  263. package/src/storage/{anchor_block_data_provider/anchor_block_data_provider.ts → anchor_block_store/anchor_block_store.ts} +9 -1
  264. package/src/storage/anchor_block_store/index.ts +1 -0
  265. package/src/storage/capsule_store/capsule_store.ts +315 -0
  266. package/src/storage/capsule_store/index.ts +1 -0
  267. package/src/storage/contract_store/contract_store.ts +429 -0
  268. package/src/storage/contract_store/index.ts +1 -0
  269. package/src/storage/index.ts +7 -7
  270. package/src/storage/metadata.ts +1 -1
  271. package/src/storage/note_store/index.ts +2 -0
  272. package/src/storage/note_store/note_store.ts +418 -0
  273. package/src/storage/note_store/stored_note.ts +48 -0
  274. package/src/storage/private_event_store/private_event_store.ts +384 -0
  275. package/src/storage/private_event_store/stored_private_event.ts +73 -0
  276. package/src/storage/tagging_store/index.ts +3 -0
  277. package/src/storage/tagging_store/recipient_tagging_store.ts +139 -0
  278. package/src/storage/tagging_store/sender_address_book_store.ts +48 -0
  279. package/src/storage/tagging_store/sender_tagging_store.ts +429 -0
  280. package/src/tagging/constants.ts +10 -3
  281. package/src/tagging/get_all_logs_by_tags.ts +92 -0
  282. package/src/tagging/index.ts +17 -2
  283. package/src/tagging/recipient_sync/load_private_logs_for_sender_recipient_pair.ts +27 -13
  284. package/src/tagging/recipient_sync/utils/find_highest_indexes.ts +2 -2
  285. package/src/tagging/recipient_sync/utils/load_logs_for_range.ts +7 -1
  286. package/src/tagging/{sync → sender_sync}/sync_sender_tagging_indexes.ts +12 -25
  287. package/src/tagging/{sync → sender_sync}/utils/get_status_change_of_pending.ts +5 -13
  288. package/src/tagging/{sync → sender_sync}/utils/load_and_store_new_tagging_indexes.ts +19 -7
  289. package/dest/contract_function_simulator/proxied_node.d.ts +0 -9
  290. package/dest/contract_function_simulator/proxied_node.d.ts.map +0 -1
  291. package/dest/contract_function_simulator/proxied_node.js +0 -27
  292. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts +0 -28
  293. package/dest/private_kernel/hints/build_private_kernel_reset_private_inputs.d.ts.map +0 -1
  294. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts +0 -4
  295. package/dest/private_kernel/hints/compute_tx_include_by_timestamp.d.ts.map +0 -1
  296. package/dest/private_kernel/private_kernel_oracle_impl.d.ts +0 -46
  297. package/dest/private_kernel/private_kernel_oracle_impl.d.ts.map +0 -1
  298. package/dest/private_kernel/private_kernel_oracle_impl.js +0 -86
  299. package/dest/public_storage/public_storage_service.d.ts +0 -24
  300. package/dest/public_storage/public_storage_service.d.ts.map +0 -1
  301. package/dest/public_storage/public_storage_service.js +0 -26
  302. package/dest/storage/address_data_provider/address_data_provider.d.ts +0 -11
  303. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +0 -1
  304. package/dest/storage/address_data_provider/index.d.ts +0 -2
  305. package/dest/storage/address_data_provider/index.d.ts.map +0 -1
  306. package/dest/storage/address_data_provider/index.js +0 -1
  307. package/dest/storage/anchor_block_data_provider/anchor_block_data_provider.d.ts +0 -9
  308. package/dest/storage/anchor_block_data_provider/anchor_block_data_provider.d.ts.map +0 -1
  309. package/dest/storage/anchor_block_data_provider/index.d.ts +0 -2
  310. package/dest/storage/anchor_block_data_provider/index.d.ts.map +0 -1
  311. package/dest/storage/anchor_block_data_provider/index.js +0 -1
  312. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +0 -57
  313. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +0 -1
  314. package/dest/storage/capsule_data_provider/capsule_data_provider.js +0 -146
  315. package/dest/storage/capsule_data_provider/index.d.ts +0 -2
  316. package/dest/storage/capsule_data_provider/index.d.ts.map +0 -1
  317. package/dest/storage/capsule_data_provider/index.js +0 -1
  318. package/dest/storage/contract_data_provider/contract_data_provider.d.ts +0 -66
  319. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  320. package/dest/storage/contract_data_provider/contract_data_provider.js +0 -224
  321. package/dest/storage/contract_data_provider/index.d.ts +0 -2
  322. package/dest/storage/contract_data_provider/index.d.ts.map +0 -1
  323. package/dest/storage/contract_data_provider/index.js +0 -1
  324. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  325. package/dest/storage/note_data_provider/index.d.ts +0 -3
  326. package/dest/storage/note_data_provider/index.d.ts.map +0 -1
  327. package/dest/storage/note_data_provider/index.js +0 -2
  328. package/dest/storage/note_data_provider/note_data_provider.d.ts +0 -84
  329. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +0 -1
  330. package/dest/storage/note_data_provider/note_data_provider.js +0 -322
  331. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts +0 -51
  332. package/dest/storage/private_event_data_provider/private_event_data_provider.d.ts.map +0 -1
  333. package/dest/storage/private_event_data_provider/private_event_data_provider.js +0 -115
  334. package/dest/storage/tagging_data_provider/index.d.ts +0 -3
  335. package/dest/storage/tagging_data_provider/index.d.ts.map +0 -1
  336. package/dest/storage/tagging_data_provider/index.js +0 -2
  337. package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.d.ts +0 -31
  338. package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.d.ts.map +0 -1
  339. package/dest/storage/tagging_data_provider/recipient_tagging_data_provider.js +0 -65
  340. package/dest/storage/tagging_data_provider/sender_tagging_data_provider.d.ts.map +0 -1
  341. package/dest/storage/tagging_data_provider/sender_tagging_data_provider.js +0 -196
  342. package/dest/tagging/recipient_sync/new_recipient_tagging_data_provider.d.ts +0 -21
  343. package/dest/tagging/recipient_sync/new_recipient_tagging_data_provider.d.ts.map +0 -1
  344. package/dest/tagging/recipient_sync/new_recipient_tagging_data_provider.js +0 -42
  345. package/dest/tagging/sync/sync_sender_tagging_indexes.d.ts.map +0 -1
  346. package/dest/tagging/sync/utils/get_status_change_of_pending.d.ts.map +0 -1
  347. package/dest/tagging/sync/utils/load_and_store_new_tagging_indexes.d.ts.map +0 -1
  348. package/dest/tagging/utils.d.ts +0 -18
  349. package/dest/tagging/utils.d.ts.map +0 -1
  350. package/dest/tagging/utils.js +0 -25
  351. package/dest/tree_membership/tree_membership_service.d.ts +0 -52
  352. package/dest/tree_membership/tree_membership_service.d.ts.map +0 -1
  353. package/dest/tree_membership/tree_membership_service.js +0 -84
  354. package/src/contract_function_simulator/proxied_node.ts +0 -33
  355. package/src/private_kernel/private_kernel_oracle_impl.ts +0 -133
  356. package/src/public_storage/public_storage_service.ts +0 -33
  357. package/src/storage/address_data_provider/index.ts +0 -1
  358. package/src/storage/anchor_block_data_provider/index.ts +0 -1
  359. package/src/storage/capsule_data_provider/capsule_data_provider.ts +0 -179
  360. package/src/storage/capsule_data_provider/index.ts +0 -1
  361. package/src/storage/contract_data_provider/contract_data_provider.ts +0 -319
  362. package/src/storage/contract_data_provider/index.ts +0 -1
  363. package/src/storage/note_data_provider/index.ts +0 -2
  364. package/src/storage/note_data_provider/note_data_provider.ts +0 -412
  365. package/src/storage/private_event_data_provider/private_event_data_provider.ts +0 -162
  366. package/src/storage/tagging_data_provider/index.ts +0 -2
  367. package/src/storage/tagging_data_provider/recipient_tagging_data_provider.ts +0 -86
  368. package/src/storage/tagging_data_provider/sender_tagging_data_provider.ts +0 -244
  369. package/src/tagging/recipient_sync/new_recipient_tagging_data_provider.ts +0 -53
  370. package/src/tagging/utils.ts +0 -32
  371. package/src/tree_membership/tree_membership_service.ts +0 -112
  372. /package/dest/storage/{contract_data_provider → contract_store}/private_functions_tree.js +0 -0
  373. /package/src/storage/{contract_data_provider → contract_store}/private_functions_tree.ts +0 -0
@@ -2,22 +2,26 @@ import {
2
2
  AVM_EMITNOTEHASH_BASE_L2_GAS,
3
3
  AVM_EMITNULLIFIER_BASE_L2_GAS,
4
4
  AVM_SENDL2TOL1MSG_BASE_L2_GAS,
5
- DA_BYTES_PER_FIELD,
6
- DA_GAS_PER_BYTE,
5
+ DA_GAS_PER_FIELD,
7
6
  FIXED_AVM_STARTUP_L2_GAS,
8
- FIXED_DA_GAS,
9
- FIXED_L2_GAS,
10
7
  L2_GAS_PER_CONTRACT_CLASS_LOG,
8
+ L2_GAS_PER_L2_TO_L1_MSG,
9
+ L2_GAS_PER_NOTE_HASH,
10
+ L2_GAS_PER_NULLIFIER,
11
11
  L2_GAS_PER_PRIVATE_LOG,
12
12
  MAX_CONTRACT_CLASS_LOGS_PER_TX,
13
13
  MAX_ENQUEUED_CALLS_PER_TX,
14
14
  MAX_L2_TO_L1_MSGS_PER_TX,
15
15
  MAX_NOTE_HASHES_PER_TX,
16
+ MAX_NOTE_HASH_READ_REQUESTS_PER_TX,
16
17
  MAX_NULLIFIERS_PER_TX,
18
+ MAX_NULLIFIER_READ_REQUESTS_PER_TX,
17
19
  MAX_PRIVATE_LOGS_PER_TX,
20
+ PRIVATE_TX_L2_GAS_OVERHEAD,
21
+ PUBLIC_TX_L2_GAS_OVERHEAD,
22
+ TX_DA_GAS_OVERHEAD,
18
23
  } from '@aztec/constants';
19
24
  import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
20
- import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
21
25
  import { Fr } from '@aztec/foundation/curves/bn254';
22
26
  import { type Logger, createLogger } from '@aztec/foundation/log';
23
27
  import { Timer } from '@aztec/foundation/timer';
@@ -37,25 +41,36 @@ import type { FunctionCall } from '@aztec/stdlib/abi';
37
41
  import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
38
42
  import type { AuthWitness } from '@aztec/stdlib/auth-witness';
39
43
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
44
+ import type { BlockParameter } from '@aztec/stdlib/block';
40
45
  import { Gas } from '@aztec/stdlib/gas';
41
46
  import {
42
47
  computeNoteHashNonce,
43
48
  computeProtocolNullifier,
49
+ computeSiloedPrivateLogFirstField,
44
50
  computeUniqueNoteHash,
45
51
  siloNoteHash,
46
52
  siloNullifier,
47
53
  } from '@aztec/stdlib/hash';
48
54
  import type { AztecNode } from '@aztec/stdlib/interfaces/server';
49
55
  import {
56
+ ClaimedLengthArray,
50
57
  PartialPrivateTailPublicInputsForPublic,
51
58
  PartialPrivateTailPublicInputsForRollup,
52
59
  type PrivateExecutionStep,
53
60
  type PrivateKernelExecutionProofOutput,
54
61
  PrivateKernelTailCircuitPublicInputs,
62
+ PrivateLogData,
55
63
  PrivateToPublicAccumulatedData,
56
64
  PrivateToRollupAccumulatedData,
57
65
  PublicCallRequest,
66
+ ReadRequestActionEnum,
58
67
  ScopedLogHash,
68
+ ScopedNoteHash,
69
+ ScopedNullifier,
70
+ ScopedReadRequest,
71
+ buildTransientDataHints,
72
+ getNoteHashReadRequestResetActions,
73
+ getNullifierReadRequestResetActions,
59
74
  } from '@aztec/stdlib/kernel';
60
75
  import { PrivateLog } from '@aztec/stdlib/logs';
61
76
  import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
@@ -68,78 +83,116 @@ import {
68
83
  TxConstantData,
69
84
  TxExecutionRequest,
70
85
  collectNested,
86
+ collectNoteHashNullifierCounterMap,
71
87
  getFinalMinRevertibleSideEffectCounter,
72
88
  } from '@aztec/stdlib/tx';
73
89
 
74
- import type { AddressDataProvider } from '../storage/address_data_provider/address_data_provider.js';
75
- import type { AnchorBlockDataProvider } from '../storage/anchor_block_data_provider/anchor_block_data_provider.js';
76
- import type { CapsuleDataProvider } from '../storage/capsule_data_provider/capsule_data_provider.js';
77
- import type { ContractDataProvider } from '../storage/contract_data_provider/contract_data_provider.js';
78
- import type { NoteDataProvider } from '../storage/note_data_provider/note_data_provider.js';
79
- import type { PrivateEventDataProvider } from '../storage/private_event_data_provider/private_event_data_provider.js';
80
- import type { RecipientTaggingDataProvider } from '../storage/tagging_data_provider/recipient_tagging_data_provider.js';
81
- import type { SenderTaggingDataProvider } from '../storage/tagging_data_provider/sender_tagging_data_provider.js';
90
+ import type { AccessScopes } from '../access_scopes.js';
91
+ import type { ContractSyncService } from '../contract_sync/contract_sync_service.js';
92
+ import type { AddressStore } from '../storage/address_store/address_store.js';
93
+ import type { CapsuleStore } from '../storage/capsule_store/capsule_store.js';
94
+ import type { ContractStore } from '../storage/contract_store/contract_store.js';
95
+ import type { NoteStore } from '../storage/note_store/note_store.js';
96
+ import type { PrivateEventStore } from '../storage/private_event_store/private_event_store.js';
97
+ import type { RecipientTaggingStore } from '../storage/tagging_store/recipient_tagging_store.js';
98
+ import type { SenderAddressBookStore } from '../storage/tagging_store/sender_address_book_store.js';
99
+ import type { SenderTaggingStore } from '../storage/tagging_store/sender_tagging_store.js';
100
+ import type { BenchmarkedNode } from './benchmarked_node.js';
82
101
  import { ExecutionNoteCache } from './execution_note_cache.js';
83
102
  import { ExecutionTaggingIndexCache } from './execution_tagging_index_cache.js';
84
103
  import { HashedValuesCache } from './hashed_values_cache.js';
85
104
  import { Oracle } from './oracle/oracle.js';
86
- import { executePrivateFunction, verifyCurrentClassId } from './oracle/private_execution.js';
105
+ import { executePrivateFunction } from './oracle/private_execution.js';
87
106
  import { PrivateExecutionOracle } from './oracle/private_execution_oracle.js';
88
107
  import { UtilityExecutionOracle } from './oracle/utility_execution_oracle.js';
89
- import type { ProxiedNode } from './proxied_node.js';
108
+
109
+ /** Options for ContractFunctionSimulator.run. */
110
+ export type ContractSimulatorRunOpts = {
111
+ /** The address of the contract (should match request.origin). */
112
+ contractAddress: AztecAddress;
113
+ /** The function selector of the entry point. */
114
+ selector: FunctionSelector;
115
+ /** The address calling the function. Can be replaced to simulate a call from another contract or account. */
116
+ msgSender?: AztecAddress;
117
+ /** The block header to use as base state for this run. */
118
+ anchorBlockHeader: BlockHeader;
119
+ /** The address used as a tagging sender when emitting private logs. */
120
+ senderForTags?: AztecAddress;
121
+ /** The accounts whose notes we can access in this call. */
122
+ scopes: AccessScopes;
123
+ /** The job ID for staged writes. */
124
+ jobId: string;
125
+ };
126
+
127
+ /** Args for ContractFunctionSimulator constructor. */
128
+ export type ContractFunctionSimulatorArgs = {
129
+ contractStore: ContractStore;
130
+ noteStore: NoteStore;
131
+ keyStore: KeyStore;
132
+ addressStore: AddressStore;
133
+ aztecNode: AztecNode;
134
+ senderTaggingStore: SenderTaggingStore;
135
+ recipientTaggingStore: RecipientTaggingStore;
136
+ senderAddressBookStore: SenderAddressBookStore;
137
+ capsuleStore: CapsuleStore;
138
+ privateEventStore: PrivateEventStore;
139
+ simulator: CircuitSimulator;
140
+ contractSyncService: ContractSyncService;
141
+ };
90
142
 
91
143
  /**
92
144
  * The contract function simulator.
93
145
  */
94
146
  export class ContractFunctionSimulator {
95
- private log: Logger;
96
-
97
- constructor(
98
- private contractDataProvider: ContractDataProvider,
99
- private noteDataProvider: NoteDataProvider,
100
- private keyStore: KeyStore,
101
- private addressDataProvider: AddressDataProvider,
102
- private aztecNode: AztecNode,
103
- private anchorBlockDataProvider: AnchorBlockDataProvider,
104
- private senderTaggingDataProvider: SenderTaggingDataProvider,
105
- private recipientTaggingDataProvider: RecipientTaggingDataProvider,
106
- private capsuleDataProvider: CapsuleDataProvider,
107
- private privateEventDataProvider: PrivateEventDataProvider,
108
- private simulator: CircuitSimulator,
109
- ) {
147
+ private readonly log: Logger;
148
+ private readonly contractStore: ContractStore;
149
+ private readonly noteStore: NoteStore;
150
+ private readonly keyStore: KeyStore;
151
+ private readonly addressStore: AddressStore;
152
+ private readonly aztecNode: AztecNode;
153
+ private readonly senderTaggingStore: SenderTaggingStore;
154
+ private readonly recipientTaggingStore: RecipientTaggingStore;
155
+ private readonly senderAddressBookStore: SenderAddressBookStore;
156
+ private readonly capsuleStore: CapsuleStore;
157
+ private readonly privateEventStore: PrivateEventStore;
158
+ private readonly simulator: CircuitSimulator;
159
+ private readonly contractSyncService: ContractSyncService;
160
+
161
+ constructor(args: ContractFunctionSimulatorArgs) {
162
+ this.contractStore = args.contractStore;
163
+ this.noteStore = args.noteStore;
164
+ this.keyStore = args.keyStore;
165
+ this.addressStore = args.addressStore;
166
+ this.aztecNode = args.aztecNode;
167
+ this.senderTaggingStore = args.senderTaggingStore;
168
+ this.recipientTaggingStore = args.recipientTaggingStore;
169
+ this.senderAddressBookStore = args.senderAddressBookStore;
170
+ this.capsuleStore = args.capsuleStore;
171
+ this.privateEventStore = args.privateEventStore;
172
+ this.simulator = args.simulator;
173
+ this.contractSyncService = args.contractSyncService;
110
174
  this.log = createLogger('simulator');
111
175
  }
112
176
 
113
177
  /**
114
178
  * Runs a private function.
115
179
  * @param request - The transaction request.
116
- * @param entryPointArtifact - The artifact of the entry point function.
117
- * @param contractAddress - The address of the contract (should match request.origin)
118
- * @param msgSender - The address calling the function. This can be replaced to simulate a call from another contract
119
- * or a specific account.
120
- * @param anchorBlockHeader - The block header to use as base state for this run.
121
- * @param senderForTags - The address that is used as a tagging sender when emitting private logs. Returned from
122
- * the `privateGetSenderForTags` oracle.
123
- * @param scopes - The accounts whose notes we can access in this call. Currently optional and will default to all.
124
- * @returns The result of the execution.
125
180
  */
126
181
  public async run(
127
182
  request: TxExecutionRequest,
128
- contractAddress: AztecAddress,
129
- selector: FunctionSelector,
130
- msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
131
- anchorBlockHeader: BlockHeader,
132
- senderForTags?: AztecAddress,
133
- scopes?: AztecAddress[],
183
+ {
184
+ contractAddress,
185
+ selector,
186
+ msgSender = AztecAddress.fromField(Fr.MAX_FIELD_VALUE),
187
+ anchorBlockHeader,
188
+ senderForTags,
189
+ scopes,
190
+ jobId,
191
+ }: ContractSimulatorRunOpts,
134
192
  ): Promise<PrivateExecutionResult> {
135
193
  const simulatorSetupTimer = new Timer();
136
194
 
137
- await verifyCurrentClassId(contractAddress, this.aztecNode, this.contractDataProvider, anchorBlockHeader);
138
-
139
- const entryPointArtifact = await this.contractDataProvider.getFunctionArtifactWithDebugMetadata(
140
- contractAddress,
141
- selector,
142
- );
195
+ const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(contractAddress, selector);
143
196
 
144
197
  if (entryPointArtifact.functionType !== FunctionType.PRIVATE) {
145
198
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as private`);
@@ -165,33 +218,37 @@ export class ContractFunctionSimulator {
165
218
  const noteCache = new ExecutionNoteCache(protocolNullifier);
166
219
  const taggingIndexCache = new ExecutionTaggingIndexCache();
167
220
 
168
- const privateExecutionOracle = new PrivateExecutionOracle(
169
- request.firstCallArgsHash,
170
- request.txContext,
221
+ const privateExecutionOracle = new PrivateExecutionOracle({
222
+ argsHash: request.firstCallArgsHash,
223
+ txContext: request.txContext,
171
224
  callContext,
172
225
  anchorBlockHeader,
173
- request.authWitnesses,
174
- request.capsules,
175
- HashedValuesCache.create(request.argsOfCalls),
226
+ utilityExecutor: async (call, execScopes) => {
227
+ await this.runUtility(call, [], anchorBlockHeader, execScopes, jobId);
228
+ },
229
+ authWitnesses: request.authWitnesses,
230
+ capsules: request.capsules,
231
+ executionCache: HashedValuesCache.create(request.argsOfCalls),
176
232
  noteCache,
177
233
  taggingIndexCache,
178
- this.contractDataProvider,
179
- this.noteDataProvider,
180
- this.keyStore,
181
- this.addressDataProvider,
182
- this.aztecNode,
183
- this.anchorBlockDataProvider,
184
- this.senderTaggingDataProvider,
185
- this.recipientTaggingDataProvider,
186
- this.capsuleDataProvider,
187
- this.privateEventDataProvider,
188
- 0, // totalPublicArgsCount
189
- startSideEffectCounter,
190
- undefined, // log
234
+ contractStore: this.contractStore,
235
+ noteStore: this.noteStore,
236
+ keyStore: this.keyStore,
237
+ addressStore: this.addressStore,
238
+ aztecNode: this.aztecNode,
239
+ senderTaggingStore: this.senderTaggingStore,
240
+ recipientTaggingStore: this.recipientTaggingStore,
241
+ senderAddressBookStore: this.senderAddressBookStore,
242
+ capsuleStore: this.capsuleStore,
243
+ privateEventStore: this.privateEventStore,
244
+ contractSyncService: this.contractSyncService,
245
+ jobId,
246
+ totalPublicCalldataCount: 0,
247
+ sideEffectCounter: startSideEffectCounter,
191
248
  scopes,
192
249
  senderForTags,
193
- this.simulator,
194
- );
250
+ simulator: this.simulator,
251
+ });
195
252
 
196
253
  const setupTime = simulatorSetupTimer.ms();
197
254
 
@@ -208,8 +265,9 @@ export class ContractFunctionSimulator {
208
265
  request.functionSelector,
209
266
  );
210
267
  const simulatorTeardownTimer = new Timer();
211
- const { usedProtocolNullifierForNonces } = noteCache.finish();
212
- const firstNullifierHint = usedProtocolNullifierForNonces ? Fr.ZERO : noteCache.getAllNullifiers()[0];
268
+
269
+ noteCache.finish();
270
+ const firstNullifierHint = noteCache.getNonceGenerator();
213
271
 
214
272
  const publicCallRequests = collectNested([executionResult], r =>
215
273
  r.publicInputs.publicCallRequests
@@ -254,37 +312,32 @@ export class ContractFunctionSimulator {
254
312
  call: FunctionCall,
255
313
  authwits: AuthWitness[],
256
314
  anchorBlockHeader: BlockHeader,
257
- scopes?: AztecAddress[],
315
+ scopes: AccessScopes,
316
+ jobId: string,
258
317
  ): Promise<Fr[]> {
259
- await verifyCurrentClassId(call.to, this.aztecNode, this.contractDataProvider, anchorBlockHeader);
260
-
261
- const entryPointArtifact = await this.contractDataProvider.getFunctionArtifactWithDebugMetadata(
262
- call.to,
263
- call.selector,
264
- );
318
+ const entryPointArtifact = await this.contractStore.getFunctionArtifactWithDebugMetadata(call.to, call.selector);
265
319
 
266
320
  if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
267
321
  throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
268
322
  }
269
323
 
270
- const oracle = new UtilityExecutionOracle(
271
- call.to,
272
- authwits,
273
- [],
324
+ const oracle = new UtilityExecutionOracle({
325
+ contractAddress: call.to,
326
+ authWitnesses: authwits,
327
+ capsules: [],
274
328
  anchorBlockHeader,
275
- this.contractDataProvider,
276
- this.noteDataProvider,
277
- this.keyStore,
278
- this.addressDataProvider,
279
- this.aztecNode,
280
- this.anchorBlockDataProvider,
281
- this.senderTaggingDataProvider,
282
- this.recipientTaggingDataProvider,
283
- this.capsuleDataProvider,
284
- this.privateEventDataProvider,
285
- undefined,
329
+ contractStore: this.contractStore,
330
+ noteStore: this.noteStore,
331
+ keyStore: this.keyStore,
332
+ addressStore: this.addressStore,
333
+ aztecNode: this.aztecNode,
334
+ recipientTaggingStore: this.recipientTaggingStore,
335
+ senderAddressBookStore: this.senderAddressBookStore,
336
+ capsuleStore: this.capsuleStore,
337
+ privateEventStore: this.privateEventStore,
338
+ jobId,
286
339
  scopes,
287
- );
340
+ });
288
341
 
289
342
  try {
290
343
  this.log.verbose(`Executing utility function ${entryPointArtifact.name}`, {
@@ -308,7 +361,7 @@ export class ContractFunctionSimulator {
308
361
  );
309
362
  });
310
363
 
311
- this.log.verbose(`Utility simulation for ${call.to}.${call.selector} completed`);
364
+ this.log.verbose(`Utility execution for ${call.to}.${call.selector} completed`);
312
365
  return witnessMapToFields(acirExecutionResult.returnWitness);
313
366
  } catch (err) {
314
367
  throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
@@ -322,7 +375,12 @@ export class ContractFunctionSimulator {
322
375
  */
323
376
  getStats() {
324
377
  const nodeRPCCalls =
325
- typeof (this.aztecNode as ProxiedNode).getStats === 'function' ? (this.aztecNode as ProxiedNode).getStats() : {};
378
+ typeof (this.aztecNode as BenchmarkedNode).getStats === 'function'
379
+ ? (this.aztecNode as BenchmarkedNode).getStats()
380
+ : {
381
+ perMethod: {},
382
+ roundTrips: { roundTrips: 0, totalBlockingTime: 0, roundTripDurations: [], roundTripMethods: [] },
383
+ };
326
384
 
327
385
  return { nodeRPCCalls };
328
386
  }
@@ -345,24 +403,33 @@ class OrderedSideEffect<T> {
345
403
  * (allowing state overrides) and is much faster, while still generating a valid
346
404
  * output that can be sent to the node for public simulation
347
405
  * @param privateExecutionResult - The result of the private execution.
348
- * @param nonceGenerator - A nonce generator for note hashes. According to the protocol rules,
349
- * it can either be the first nullifier in the tx or the hash of the initial tx request if there are none.
350
- * @param contractDataProvider - A provider for contract data in order to get function names and debug info.
406
+ * @param debugFunctionNameGetter - A provider for contract data in order to get function names and debug info.
407
+ * @param node - AztecNode for verifying settled read requests against the note hash and nullifier trees.
408
+ * @param minRevertibleSideEffectCounterOverride - Optional override for the min revertible side effect counter.
409
+ * Used by TXE to simulate account contract behavior (setting the counter before app execution).
351
410
  * @returns The simulated proving result.
352
411
  */
353
412
  export async function generateSimulatedProvingResult(
354
413
  privateExecutionResult: PrivateExecutionResult,
355
- nonceGenerator: Fr,
356
- contractDataProvider: ContractDataProvider,
414
+ debugFunctionNameGetter: (contractAddress: AztecAddress, functionSelector: FunctionSelector) => Promise<string>,
415
+ node: AztecNode,
416
+ minRevertibleSideEffectCounterOverride?: number,
357
417
  ): Promise<PrivateKernelExecutionProofOutput<PrivateKernelTailCircuitPublicInputs>> {
358
- const siloedNoteHashes: OrderedSideEffect<Fr>[] = [];
359
- const nullifiers: OrderedSideEffect<Fr>[] = [];
360
- const taggedPrivateLogs: OrderedSideEffect<PrivateLog>[] = [];
418
+ const taggedPrivateLogs: OrderedSideEffect<PrivateLogData>[] = [];
361
419
  const l2ToL1Messages: OrderedSideEffect<ScopedL2ToL1Message>[] = [];
362
420
  const contractClassLogsHashes: OrderedSideEffect<ScopedLogHash>[] = [];
363
421
  const publicCallRequests: OrderedSideEffect<PublicCallRequest>[] = [];
364
422
  const executionSteps: PrivateExecutionStep[] = [];
365
423
 
424
+ // Unsiloed scoped arrays — used for squashing, read request verification,
425
+ // and siloed at the end only for the surviving items
426
+ const scopedNoteHashes: ScopedNoteHash[] = [];
427
+ const scopedNullifiers: ScopedNullifier[] = [];
428
+
429
+ // Read requests for verification
430
+ const noteHashReadRequests: ScopedReadRequest[] = [];
431
+ const nullifierReadRequests: ScopedReadRequest[] = [];
432
+
366
433
  let publicTeardownCallRequest;
367
434
 
368
435
  const executions = [privateExecutionResult.entrypoint];
@@ -373,35 +440,25 @@ export async function generateSimulatedProvingResult(
373
440
 
374
441
  const { contractAddress } = execution.publicInputs.callContext;
375
442
 
376
- const noteHashesFromExecution = await Promise.all(
377
- execution.publicInputs.noteHashes
378
- .getActiveItems()
379
- .filter(noteHash => !noteHash.isEmpty())
380
- .map(
381
- async noteHash =>
382
- new OrderedSideEffect(await siloNoteHash(contractAddress, noteHash.value), noteHash.counter),
383
- ),
384
- );
385
-
386
- const nullifiersFromExecution = await Promise.all(
387
- execution.publicInputs.nullifiers
443
+ scopedNoteHashes.push(
444
+ ...execution.publicInputs.noteHashes
388
445
  .getActiveItems()
389
- .map(
390
- async nullifier =>
391
- new OrderedSideEffect(await siloNullifier(contractAddress, nullifier.value), nullifier.counter),
392
- ),
446
+ .filter(nh => !nh.isEmpty())
447
+ .map(nh => nh.scope(contractAddress)),
393
448
  );
449
+ scopedNullifiers.push(...execution.publicInputs.nullifiers.getActiveItems().map(n => n.scope(contractAddress)));
394
450
 
395
- const privateLogsFromExecution = await Promise.all(
396
- execution.publicInputs.privateLogs.getActiveItems().map(async metadata => {
397
- metadata.log.fields[0] = await poseidon2Hash([contractAddress, metadata.log.fields[0]]);
398
- return new OrderedSideEffect(metadata.log, metadata.counter);
399
- }),
451
+ taggedPrivateLogs.push(
452
+ ...(await Promise.all(
453
+ execution.publicInputs.privateLogs.getActiveItems().map(async metadata => {
454
+ metadata.log.fields[0] = await computeSiloedPrivateLogFirstField(contractAddress, metadata.log.fields[0]);
455
+ return new OrderedSideEffect(metadata, metadata.counter);
456
+ }),
457
+ )),
400
458
  );
401
459
 
402
- siloedNoteHashes.push(...noteHashesFromExecution);
403
- taggedPrivateLogs.push(...privateLogsFromExecution);
404
- nullifiers.push(...nullifiersFromExecution);
460
+ noteHashReadRequests.push(...execution.publicInputs.noteHashReadRequests.getActiveItems());
461
+ nullifierReadRequests.push(...execution.publicInputs.nullifierReadRequests.getActiveItems());
405
462
  l2ToL1Messages.push(
406
463
  ...execution.publicInputs.l2ToL1Msgs
407
464
  .getActiveItems()
@@ -430,7 +487,7 @@ export async function generateSimulatedProvingResult(
430
487
  : execution.publicInputs.publicTeardownCallRequest;
431
488
 
432
489
  executionSteps.push({
433
- functionName: await contractDataProvider.getDebugFunctionName(
490
+ functionName: await debugFunctionNameGetter(
434
491
  execution.publicInputs.callContext.contractAddress,
435
492
  execution.publicInputs.callContext.functionSelector,
436
493
  ),
@@ -441,6 +498,47 @@ export async function generateSimulatedProvingResult(
441
498
  });
442
499
  }
443
500
 
501
+ const noteHashNullifierCounterMap = collectNoteHashNullifierCounterMap(privateExecutionResult);
502
+ const minRevertibleSideEffectCounter =
503
+ minRevertibleSideEffectCounterOverride ?? getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
504
+
505
+ const scopedNoteHashesCLA = new ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>(
506
+ padArrayEnd(scopedNoteHashes, ScopedNoteHash.empty(), MAX_NOTE_HASHES_PER_TX),
507
+ scopedNoteHashes.length,
508
+ );
509
+ const scopedNullifiersCLA = new ClaimedLengthArray<ScopedNullifier, typeof MAX_NULLIFIERS_PER_TX>(
510
+ padArrayEnd(scopedNullifiers, ScopedNullifier.empty(), MAX_NULLIFIERS_PER_TX),
511
+ scopedNullifiers.length,
512
+ );
513
+
514
+ const { filteredNoteHashes, filteredNullifiers, filteredPrivateLogs } = squashTransientSideEffects(
515
+ taggedPrivateLogs,
516
+ scopedNoteHashesCLA,
517
+ scopedNullifiersCLA,
518
+ noteHashNullifierCounterMap,
519
+ minRevertibleSideEffectCounter,
520
+ );
521
+
522
+ await verifyReadRequests(
523
+ node,
524
+ await privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader.hash(),
525
+ noteHashReadRequests,
526
+ nullifierReadRequests,
527
+ scopedNoteHashesCLA,
528
+ scopedNullifiersCLA,
529
+ );
530
+
531
+ const siloedNoteHashes = await Promise.all(
532
+ filteredNoteHashes
533
+ .sort((a, b) => a.counter - b.counter)
534
+ .map(async nh => new OrderedSideEffect(await siloNoteHash(nh.contractAddress, nh.value), nh.counter)),
535
+ );
536
+ const siloedNullifiers = await Promise.all(
537
+ filteredNullifiers
538
+ .sort((a, b) => a.counter - b.counter)
539
+ .map(async n => new OrderedSideEffect(await siloNullifier(n.contractAddress, n.value), n.counter)),
540
+ );
541
+
444
542
  const constantData = new TxConstantData(
445
543
  privateExecutionResult.entrypoint.publicInputs.anchorBlockHeader,
446
544
  privateExecutionResult.entrypoint.publicInputs.txContext,
@@ -457,23 +555,23 @@ export async function generateSimulatedProvingResult(
457
555
  const getEffect = <T>(orderedSideEffect: OrderedSideEffect<T>) => orderedSideEffect.sideEffect;
458
556
 
459
557
  const isPrivateOnlyTx = privateExecutionResult.publicFunctionCalldata.length === 0;
460
- const minRevertibleSideEffectCounter = getFinalMinRevertibleSideEffectCounter(privateExecutionResult);
461
558
 
462
559
  const [nonRevertibleNullifiers, revertibleNullifiers] = splitOrderedSideEffects(
463
- nullifiers.sort(sortByCounter),
560
+ siloedNullifiers,
464
561
  minRevertibleSideEffectCounter,
465
562
  );
466
- if (nonRevertibleNullifiers.length > 0 && !nonRevertibleNullifiers[0].equals(nonceGenerator)) {
563
+ const nonceGenerator = privateExecutionResult.firstNullifier;
564
+ if (nonRevertibleNullifiers.length === 0) {
565
+ nonRevertibleNullifiers.push(nonceGenerator);
566
+ } else if (!nonRevertibleNullifiers[0].equals(nonceGenerator)) {
467
567
  throw new Error('The first non revertible nullifier should be equal to the nonce generator. This is a bug!');
468
- } else {
469
- nonRevertibleNullifiers.unshift(nonceGenerator);
470
568
  }
471
569
 
472
570
  if (isPrivateOnlyTx) {
473
571
  // We must make the note hashes unique by using the
474
572
  // nonce generator and their index in the tx.
475
573
  const uniqueNoteHashes = await Promise.all(
476
- siloedNoteHashes.sort(sortByCounter).map(async (orderedSideEffect, i) => {
574
+ siloedNoteHashes.map(async (orderedSideEffect, i) => {
477
575
  const siloedNoteHash = orderedSideEffect.sideEffect;
478
576
  const nonce = await computeNoteHashNonce(nonceGenerator, i);
479
577
  const uniqueNoteHash = await computeUniqueNoteHash(nonce, siloedNoteHash);
@@ -488,26 +586,32 @@ export async function generateSimulatedProvingResult(
488
586
  ScopedL2ToL1Message.empty(),
489
587
  MAX_L2_TO_L1_MSGS_PER_TX,
490
588
  ),
491
- padArrayEnd(taggedPrivateLogs.sort(sortByCounter).map(getEffect), PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
589
+ padArrayEnd(filteredPrivateLogs.sort(sortByCounter).map(getEffect), PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
492
590
  padArrayEnd(
493
591
  contractClassLogsHashes.sort(sortByCounter).map(getEffect),
494
592
  ScopedLogHash.empty(),
495
593
  MAX_CONTRACT_CLASS_LOGS_PER_TX,
496
594
  ),
497
595
  );
498
- gasUsed = meterGasUsed(accumulatedDataForRollup);
596
+ gasUsed = meterGasUsed(accumulatedDataForRollup, isPrivateOnlyTx);
499
597
  inputsForRollup = new PartialPrivateTailPublicInputsForRollup(accumulatedDataForRollup);
500
598
  } else {
501
599
  const [nonRevertibleNoteHashes, revertibleNoteHashes] = splitOrderedSideEffects(
502
- siloedNoteHashes.sort(sortByCounter),
600
+ siloedNoteHashes,
503
601
  minRevertibleSideEffectCounter,
504
602
  );
603
+ const nonRevertibleUniqueNoteHashes = await Promise.all(
604
+ nonRevertibleNoteHashes.map(async (noteHash, i) => {
605
+ const nonce = await computeNoteHashNonce(nonceGenerator, i);
606
+ return await computeUniqueNoteHash(nonce, noteHash);
607
+ }),
608
+ );
505
609
  const [nonRevertibleL2ToL1Messages, revertibleL2ToL1Messages] = splitOrderedSideEffects(
506
610
  l2ToL1Messages.sort(sortByCounter),
507
611
  minRevertibleSideEffectCounter,
508
612
  );
509
613
  const [nonRevertibleTaggedPrivateLogs, revertibleTaggedPrivateLogs] = splitOrderedSideEffects(
510
- taggedPrivateLogs,
614
+ filteredPrivateLogs,
511
615
  minRevertibleSideEffectCounter,
512
616
  );
513
617
  const [nonRevertibleContractClassLogHashes, revertibleContractClassLogHashes] = splitOrderedSideEffects(
@@ -520,7 +624,7 @@ export async function generateSimulatedProvingResult(
520
624
  );
521
625
 
522
626
  const nonRevertibleData = new PrivateToPublicAccumulatedData(
523
- padArrayEnd(nonRevertibleNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
627
+ padArrayEnd(nonRevertibleUniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
524
628
  padArrayEnd(nonRevertibleNullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
525
629
  padArrayEnd(nonRevertibleL2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
526
630
  padArrayEnd(nonRevertibleTaggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
@@ -536,9 +640,9 @@ export async function generateSimulatedProvingResult(
536
640
  padArrayEnd(revertibleContractClassLogHashes, ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX),
537
641
  padArrayEnd(revertiblePublicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX),
538
642
  );
539
- gasUsed = meterGasUsed(revertibleData).add(meterGasUsed(nonRevertibleData));
643
+ gasUsed = meterGasUsed(revertibleData, isPrivateOnlyTx).add(meterGasUsed(nonRevertibleData, isPrivateOnlyTx));
540
644
  if (publicTeardownCallRequest) {
541
- gasUsed.add(privateExecutionResult.entrypoint.publicInputs.txContext.gasSettings.teardownGasLimits);
645
+ gasUsed = gasUsed.add(privateExecutionResult.entrypoint.publicInputs.txContext.gasSettings.teardownGasLimits);
542
646
  }
543
647
 
544
648
  inputsForPublic = new PartialPrivateTailPublicInputsForPublic(
@@ -550,9 +654,14 @@ export async function generateSimulatedProvingResult(
550
654
 
551
655
  const publicInputs = new PrivateKernelTailCircuitPublicInputs(
552
656
  constantData,
553
- /*gasUsed=*/ gasUsed.add(Gas.from({ l2Gas: FIXED_L2_GAS, daGas: FIXED_DA_GAS })),
657
+ /*gasUsed=*/ gasUsed.add(
658
+ Gas.from({
659
+ l2Gas: isPrivateOnlyTx ? PRIVATE_TX_L2_GAS_OVERHEAD : PUBLIC_TX_L2_GAS_OVERHEAD,
660
+ daGas: TX_DA_GAS_OVERHEAD,
661
+ }),
662
+ ),
554
663
  /*feePayer=*/ AztecAddress.zero(),
555
- /*includeByTimestamp=*/ 0n,
664
+ /*expirationTimestamp=*/ 0n,
556
665
  hasPublicCalls ? inputsForPublic : undefined,
557
666
  !hasPublicCalls ? inputsForRollup : undefined,
558
667
  );
@@ -564,11 +673,109 @@ export async function generateSimulatedProvingResult(
564
673
  };
565
674
  }
566
675
 
676
+ /**
677
+ * Squashes transient note hashes and nullifiers, mimicking the behavior
678
+ * of the reset kernels. Returns the filtered (surviving) scoped items and private logs.
679
+ */
680
+ function squashTransientSideEffects(
681
+ taggedPrivateLogs: OrderedSideEffect<PrivateLogData>[],
682
+ scopedNoteHashesCLA: ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>,
683
+ scopedNullifiersCLA: ClaimedLengthArray<ScopedNullifier, typeof MAX_NULLIFIERS_PER_TX>,
684
+ noteHashNullifierCounterMap: Map<number, number>,
685
+ minRevertibleSideEffectCounter: number,
686
+ ) {
687
+ const { numTransientData, hints: transientDataHints } = buildTransientDataHints(
688
+ scopedNoteHashesCLA,
689
+ scopedNullifiersCLA,
690
+ /*futureNoteHashReads=*/ [],
691
+ /*futureNullifierReads=*/ [],
692
+ /*futureLogs=*/ [],
693
+ noteHashNullifierCounterMap,
694
+ minRevertibleSideEffectCounter,
695
+ );
696
+
697
+ const squashedNoteHashCounters = new Set<number>();
698
+ const squashedNullifierCounters = new Set<number>();
699
+ for (let i = 0; i < numTransientData; i++) {
700
+ const hint = transientDataHints[i];
701
+ squashedNoteHashCounters.add(scopedNoteHashesCLA.array[hint.noteHashIndex].counter);
702
+ squashedNullifierCounters.add(scopedNullifiersCLA.array[hint.nullifierIndex].counter);
703
+ }
704
+
705
+ return {
706
+ filteredNoteHashes: scopedNoteHashesCLA.getActiveItems().filter(nh => !squashedNoteHashCounters.has(nh.counter)),
707
+ filteredNullifiers: scopedNullifiersCLA.getActiveItems().filter(n => !squashedNullifierCounters.has(n.counter)),
708
+ filteredPrivateLogs: taggedPrivateLogs
709
+ .filter(item => !squashedNoteHashCounters.has(item.sideEffect.noteHashCounter))
710
+ .map(item => new OrderedSideEffect(item.sideEffect.log, item.counter)),
711
+ };
712
+ }
713
+
714
+ /**
715
+ * Verifies settled read requests by checking membership in the note hash and nullifier trees
716
+ * at the tx's anchor block, mimicking the behavior of the kernels
717
+ */
718
+ async function verifyReadRequests(
719
+ node: Pick<AztecNode, 'getNoteHashMembershipWitness' | 'getNullifierMembershipWitness'>,
720
+ anchorBlockHash: BlockParameter,
721
+ noteHashReadRequests: ScopedReadRequest[],
722
+ nullifierReadRequests: ScopedReadRequest[],
723
+ scopedNoteHashesCLA: ClaimedLengthArray<ScopedNoteHash, typeof MAX_NOTE_HASHES_PER_TX>,
724
+ scopedNullifiersCLA: ClaimedLengthArray<ScopedNullifier, typeof MAX_NULLIFIERS_PER_TX>,
725
+ ) {
726
+ const noteHashReadRequestsCLA = new ClaimedLengthArray<ScopedReadRequest, typeof MAX_NOTE_HASH_READ_REQUESTS_PER_TX>(
727
+ padArrayEnd(noteHashReadRequests, ScopedReadRequest.empty(), MAX_NOTE_HASH_READ_REQUESTS_PER_TX),
728
+ noteHashReadRequests.length,
729
+ );
730
+ const nullifierReadRequestsCLA = new ClaimedLengthArray<ScopedReadRequest, typeof MAX_NULLIFIER_READ_REQUESTS_PER_TX>(
731
+ padArrayEnd(nullifierReadRequests, ScopedReadRequest.empty(), MAX_NULLIFIER_READ_REQUESTS_PER_TX),
732
+ nullifierReadRequests.length,
733
+ );
734
+
735
+ const noteHashResetActions = getNoteHashReadRequestResetActions(noteHashReadRequestsCLA, scopedNoteHashesCLA);
736
+ const nullifierResetActions = getNullifierReadRequestResetActions(nullifierReadRequestsCLA, scopedNullifiersCLA);
737
+
738
+ const settledNoteHashReads: { index: number; value: Fr }[] = [];
739
+ for (let i = 0; i < noteHashResetActions.actions.length; i++) {
740
+ if (noteHashResetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
741
+ settledNoteHashReads.push({ index: i, value: noteHashReadRequests[i].value });
742
+ }
743
+ }
744
+
745
+ const settledNullifierReads: { index: number; value: Fr }[] = [];
746
+ for (let i = 0; i < nullifierResetActions.actions.length; i++) {
747
+ if (nullifierResetActions.actions[i] === ReadRequestActionEnum.READ_AS_SETTLED) {
748
+ settledNullifierReads.push({ index: i, value: nullifierReadRequests[i].value });
749
+ }
750
+ }
751
+
752
+ const [noteHashWitnesses, nullifierWitnesses] = await Promise.all([
753
+ Promise.all(settledNoteHashReads.map(({ value }) => node.getNoteHashMembershipWitness(anchorBlockHash, value))),
754
+ Promise.all(settledNullifierReads.map(({ value }) => node.getNullifierMembershipWitness(anchorBlockHash, value))),
755
+ ]);
756
+
757
+ for (let i = 0; i < settledNoteHashReads.length; i++) {
758
+ if (!noteHashWitnesses[i]) {
759
+ throw new Error(
760
+ `Note hash read request at index ${settledNoteHashReads[i].index} is reading an unknown note hash: ${settledNoteHashReads[i].value}`,
761
+ );
762
+ }
763
+ }
764
+
765
+ for (let i = 0; i < settledNullifierReads.length; i++) {
766
+ if (!nullifierWitnesses[i]) {
767
+ throw new Error(
768
+ `Nullifier read request at index ${settledNullifierReads[i].index} is reading an unknown nullifier: ${settledNullifierReads[i].value}`,
769
+ );
770
+ }
771
+ }
772
+ }
773
+
567
774
  function splitOrderedSideEffects<T>(effects: OrderedSideEffect<T>[], minRevertibleSideEffectCounter: number) {
568
775
  const revertibleSideEffects: T[] = [];
569
776
  const nonRevertibleSideEffects: T[] = [];
570
777
  effects.forEach(effect => {
571
- if (effect.counter < minRevertibleSideEffectCounter) {
778
+ if (minRevertibleSideEffectCounter === 0 || effect.counter < minRevertibleSideEffectCounter) {
572
779
  nonRevertibleSideEffects.push(effect.sideEffect);
573
780
  } else {
574
781
  revertibleSideEffects.push(effect.sideEffect);
@@ -577,21 +784,24 @@ function splitOrderedSideEffects<T>(effects: OrderedSideEffect<T>[], minRevertib
577
784
  return [nonRevertibleSideEffects, revertibleSideEffects];
578
785
  }
579
786
 
580
- function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccumulatedData) {
787
+ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccumulatedData, isPrivateOnlyTx: boolean) {
581
788
  let meteredDAFields = 0;
582
789
  let meteredL2Gas = 0;
583
790
 
584
791
  const numNoteHashes = arrayNonEmptyLength(data.noteHashes, hash => hash.isEmpty());
585
792
  meteredDAFields += numNoteHashes;
586
- meteredL2Gas += numNoteHashes * AVM_EMITNOTEHASH_BASE_L2_GAS;
793
+ const noteHashBaseGas = isPrivateOnlyTx ? L2_GAS_PER_NOTE_HASH : AVM_EMITNOTEHASH_BASE_L2_GAS;
794
+ meteredL2Gas += numNoteHashes * noteHashBaseGas;
587
795
 
588
796
  const numNullifiers = arrayNonEmptyLength(data.nullifiers, nullifier => nullifier.isEmpty());
589
797
  meteredDAFields += numNullifiers;
590
- meteredL2Gas += numNullifiers * AVM_EMITNULLIFIER_BASE_L2_GAS;
798
+ const nullifierBaseGas = isPrivateOnlyTx ? L2_GAS_PER_NULLIFIER : AVM_EMITNULLIFIER_BASE_L2_GAS;
799
+ meteredL2Gas += numNullifiers * nullifierBaseGas;
591
800
 
592
801
  const numL2toL1Messages = arrayNonEmptyLength(data.l2ToL1Msgs, msg => msg.isEmpty());
593
802
  meteredDAFields += numL2toL1Messages;
594
- meteredL2Gas += numL2toL1Messages * AVM_SENDL2TOL1MSG_BASE_L2_GAS;
803
+ const l2ToL1MessageBaseGas = isPrivateOnlyTx ? L2_GAS_PER_L2_TO_L1_MSG : AVM_SENDL2TOL1MSG_BASE_L2_GAS;
804
+ meteredL2Gas += numL2toL1Messages * l2ToL1MessageBaseGas;
595
805
 
596
806
  const numPrivatelogs = arrayNonEmptyLength(data.privateLogs, log => log.isEmpty());
597
807
  // Every private log emits its length as an additional field
@@ -606,7 +816,7 @@ function meterGasUsed(data: PrivateToRollupAccumulatedData | PrivateToPublicAccu
606
816
  );
607
817
  meteredL2Gas += numContractClassLogs * L2_GAS_PER_CONTRACT_CLASS_LOG;
608
818
 
609
- const meteredDAGas = meteredDAFields * DA_BYTES_PER_FIELD * DA_GAS_PER_BYTE;
819
+ const meteredDAGas = meteredDAFields * DA_GAS_PER_FIELD;
610
820
 
611
821
  if ((data as PrivateToPublicAccumulatedData).publicCallRequests) {
612
822
  const dataForPublic = data as PrivateToPublicAccumulatedData;