@aztec/simulator 0.76.4 → 0.77.0-testnet-ignition.21

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 (517) hide show
  1. package/README.md +3 -3
  2. package/dest/client.d.ts +5 -0
  3. package/dest/client.d.ts.map +1 -0
  4. package/dest/client.js +3 -0
  5. package/dest/{public → common}/db_interfaces.d.ts +8 -33
  6. package/dest/common/db_interfaces.d.ts.map +1 -0
  7. package/dest/common/db_interfaces.js +1 -0
  8. package/dest/common/debug_fn_name.d.ts +3 -2
  9. package/dest/common/debug_fn_name.d.ts.map +1 -1
  10. package/dest/common/debug_fn_name.js +2 -5
  11. package/dest/common/errors.d.ts +4 -4
  12. package/dest/common/errors.d.ts.map +1 -1
  13. package/dest/common/errors.js +30 -39
  14. package/dest/common/index.d.ts +2 -1
  15. package/dest/common/index.d.ts.map +1 -1
  16. package/dest/common/index.js +2 -2
  17. package/dest/common/message_load_oracle_inputs.d.ts +2 -2
  18. package/dest/common/message_load_oracle_inputs.d.ts.map +1 -1
  19. package/dest/common/message_load_oracle_inputs.js +8 -8
  20. package/dest/common/stats/index.d.ts.map +1 -0
  21. package/dest/{stats → common/stats}/stats.d.ts +2 -2
  22. package/dest/common/stats/stats.d.ts.map +1 -0
  23. package/dest/common/stats/stats.js +10 -0
  24. package/dest/{acvm → private/acvm}/acvm.d.ts +4 -4
  25. package/dest/private/acvm/acvm.d.ts.map +1 -0
  26. package/dest/private/acvm/acvm.js +70 -0
  27. package/dest/{acvm → private/acvm}/acvm_types.d.ts +1 -1
  28. package/dest/private/acvm/acvm_types.d.ts.map +1 -0
  29. package/dest/private/acvm/acvm_types.js +3 -0
  30. package/dest/{acvm → private/acvm}/deserialize.d.ts +2 -2
  31. package/dest/private/acvm/deserialize.d.ts.map +1 -0
  32. package/dest/private/acvm/deserialize.js +42 -0
  33. package/dest/private/acvm/index.d.ts.map +1 -0
  34. package/dest/private/acvm/index.js +5 -0
  35. package/dest/{acvm → private/acvm}/oracle/index.d.ts +1 -1
  36. package/dest/private/acvm/oracle/index.d.ts.map +1 -0
  37. package/dest/private/acvm/oracle/index.js +2 -0
  38. package/dest/{acvm → private/acvm}/oracle/oracle.d.ts +4 -3
  39. package/dest/private/acvm/oracle/oracle.d.ts.map +1 -0
  40. package/dest/private/acvm/oracle/oracle.js +263 -0
  41. package/dest/{acvm → private/acvm}/oracle/typed_oracle.d.ts +12 -6
  42. package/dest/private/acvm/oracle/typed_oracle.d.ts.map +1 -0
  43. package/dest/private/acvm/oracle/typed_oracle.js +132 -0
  44. package/dest/{acvm → private/acvm}/serialize.d.ts +7 -3
  45. package/dest/private/acvm/serialize.d.ts.map +1 -0
  46. package/dest/private/acvm/serialize.js +46 -0
  47. package/dest/{client → private}/client_execution_context.d.ts +20 -17
  48. package/dest/private/client_execution_context.d.ts.map +1 -0
  49. package/dest/private/client_execution_context.js +378 -0
  50. package/dest/{client → private}/db_oracle.d.ts +19 -7
  51. package/dest/private/db_oracle.d.ts.map +1 -0
  52. package/dest/private/db_oracle.js +14 -0
  53. package/dest/{client → private}/execution_note_cache.d.ts +2 -2
  54. package/dest/private/execution_note_cache.d.ts.map +1 -0
  55. package/dest/private/execution_note_cache.js +180 -0
  56. package/dest/{common → private}/hashed_values_cache.d.ts +2 -2
  57. package/dest/private/hashed_values_cache.d.ts.map +1 -0
  58. package/dest/private/hashed_values_cache.js +46 -0
  59. package/dest/private/index.d.ts +13 -0
  60. package/dest/private/index.d.ts.map +1 -0
  61. package/dest/private/index.js +12 -0
  62. package/dest/{client → private}/pick_notes.d.ts +1 -1
  63. package/dest/private/pick_notes.d.ts.map +1 -0
  64. package/dest/private/pick_notes.js +51 -0
  65. package/dest/private/private_execution.d.ts +24 -0
  66. package/dest/private/private_execution.d.ts.map +1 -0
  67. package/dest/private/private_execution.js +90 -0
  68. package/dest/{providers → private/providers}/acvm_native.d.ts +5 -5
  69. package/dest/private/providers/acvm_native.d.ts.map +1 -0
  70. package/dest/private/providers/acvm_native.js +139 -0
  71. package/dest/{providers → private/providers}/acvm_wasm.d.ts +4 -4
  72. package/dest/private/providers/acvm_wasm.d.ts.map +1 -0
  73. package/dest/private/providers/acvm_wasm.js +62 -0
  74. package/dest/{providers → private/providers}/acvm_wasm_with_blobs.d.ts +5 -5
  75. package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +1 -0
  76. package/dest/{providers → private/providers}/acvm_wasm_with_blobs.js +3 -6
  77. package/dest/{providers → private/providers}/factory.d.ts +1 -1
  78. package/dest/private/providers/factory.d.ts.map +1 -0
  79. package/dest/private/providers/factory.js +27 -0
  80. package/dest/{common → private/providers}/simulation_provider.d.ts +5 -5
  81. package/dest/private/providers/simulation_provider.d.ts.map +1 -0
  82. package/dest/private/providers/simulation_provider.js +24 -0
  83. package/dest/private/simulator.d.ts +36 -0
  84. package/dest/private/simulator.d.ts.map +1 -0
  85. package/dest/private/simulator.js +78 -0
  86. package/dest/{client → private}/unconstrained_execution.d.ts +5 -5
  87. package/dest/private/unconstrained_execution.d.ts.map +1 -0
  88. package/dest/private/unconstrained_execution.js +27 -0
  89. package/dest/{client → private}/view_data_oracle.d.ts +15 -7
  90. package/dest/private/view_data_oracle.d.ts.map +1 -0
  91. package/dest/private/view_data_oracle.js +260 -0
  92. package/dest/{avm → public/avm}/avm_context.d.ts +7 -5
  93. package/dest/public/avm/avm_context.d.ts.map +1 -0
  94. package/dest/public/avm/avm_context.js +44 -0
  95. package/dest/{avm → public/avm}/avm_contract_call_result.d.ts +5 -5
  96. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -0
  97. package/dest/public/avm/avm_contract_call_result.js +50 -0
  98. package/dest/{avm → public/avm}/avm_execution_environment.d.ts +2 -2
  99. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -0
  100. package/dest/public/avm/avm_execution_environment.js +31 -0
  101. package/dest/public/avm/avm_gas.d.ts.map +1 -0
  102. package/dest/public/avm/avm_gas.js +202 -0
  103. package/dest/{avm → public/avm}/avm_machine_state.d.ts +2 -2
  104. package/dest/public/avm/avm_machine_state.d.ts.map +1 -0
  105. package/dest/public/avm/avm_machine_state.js +106 -0
  106. package/dest/{avm → public/avm}/avm_memory_types.d.ts +2 -2
  107. package/dest/public/avm/avm_memory_types.d.ts.map +1 -0
  108. package/dest/public/avm/avm_memory_types.js +340 -0
  109. package/dest/{avm → public/avm}/avm_simulator.d.ts +5 -3
  110. package/dest/public/avm/avm_simulator.d.ts.map +1 -0
  111. package/dest/public/avm/avm_simulator.js +202 -0
  112. package/dest/public/avm/bytecode_utils.d.ts.map +1 -0
  113. package/dest/public/avm/bytecode_utils.js +17 -0
  114. package/dest/{avm → public/avm}/errors.d.ts +5 -4
  115. package/dest/public/avm/errors.d.ts.map +1 -0
  116. package/dest/public/avm/errors.js +179 -0
  117. package/dest/{avm → public/avm}/fixtures/avm_simulation_tester.d.ts +6 -6
  118. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -0
  119. package/dest/public/avm/fixtures/avm_simulation_tester.js +76 -0
  120. package/dest/{avm → public/avm}/fixtures/base_avm_simulation_tester.d.ts +13 -12
  121. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -0
  122. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +83 -0
  123. package/dest/{avm → public/avm}/fixtures/index.d.ts +24 -7
  124. package/dest/public/avm/fixtures/index.d.ts.map +1 -0
  125. package/dest/public/avm/fixtures/index.js +175 -0
  126. package/dest/{avm → public/avm}/fixtures/simple_contract_data_source.d.ts +10 -6
  127. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +1 -0
  128. package/dest/public/avm/fixtures/simple_contract_data_source.js +74 -0
  129. package/dest/public/avm/index.d.ts +4 -0
  130. package/dest/public/avm/index.d.ts.map +1 -0
  131. package/dest/{avm/index.d.ts → public/avm/index.js} +1 -2
  132. package/dest/public/avm/journal/index.d.ts.map +1 -0
  133. package/dest/{avm → public/avm}/journal/journal.d.ts +51 -18
  134. package/dest/public/avm/journal/journal.d.ts.map +1 -0
  135. package/dest/public/avm/journal/journal.js +486 -0
  136. package/dest/{avm → public/avm}/journal/nullifiers.d.ts +8 -6
  137. package/dest/public/avm/journal/nullifiers.d.ts.map +1 -0
  138. package/dest/public/avm/journal/nullifiers.js +97 -0
  139. package/dest/{avm → public/avm}/journal/public_storage.d.ts +2 -2
  140. package/dest/public/avm/journal/public_storage.d.ts.map +1 -0
  141. package/dest/public/avm/journal/public_storage.js +145 -0
  142. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -0
  143. package/dest/public/avm/opcodes/accrued_substate.js +252 -0
  144. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -0
  145. package/dest/public/avm/opcodes/addressing_mode.js +74 -0
  146. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -0
  147. package/dest/public/avm/opcodes/arithmetic.js +73 -0
  148. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -0
  149. package/dest/public/avm/opcodes/bitwise.js +106 -0
  150. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -0
  151. package/dest/public/avm/opcodes/comparators.js +43 -0
  152. package/dest/public/avm/opcodes/contract.d.ts.map +1 -0
  153. package/dest/public/avm/opcodes/contract.js +66 -0
  154. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -0
  155. package/dest/public/avm/opcodes/control_flow.js +105 -0
  156. package/dest/{avm → public/avm}/opcodes/conversion.d.ts +1 -1
  157. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -0
  158. package/dest/public/avm/opcodes/conversion.js +69 -0
  159. package/dest/{avm → public/avm}/opcodes/ec_add.d.ts +1 -1
  160. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -0
  161. package/dest/public/avm/opcodes/ec_add.js +84 -0
  162. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -0
  163. package/dest/public/avm/opcodes/environment_getters.js +79 -0
  164. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -0
  165. package/dest/public/avm/opcodes/external_calls.js +180 -0
  166. package/dest/{avm → public/avm}/opcodes/hashing.d.ts +1 -1
  167. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -0
  168. package/dest/public/avm/opcodes/hashing.js +114 -0
  169. package/dest/public/avm/opcodes/index.d.ts.map +1 -0
  170. package/dest/{avm → public/avm}/opcodes/instruction.d.ts +2 -2
  171. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -0
  172. package/dest/public/avm/opcodes/instruction.js +91 -0
  173. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -0
  174. package/dest/public/avm/opcodes/instruction_impl.js +30 -0
  175. package/dest/public/avm/opcodes/memory.d.ts.map +1 -0
  176. package/dest/public/avm/opcodes/memory.js +253 -0
  177. package/dest/{avm → public/avm}/opcodes/misc.d.ts +1 -1
  178. package/dest/public/avm/opcodes/misc.d.ts.map +1 -0
  179. package/dest/public/avm/opcodes/misc.js +48 -0
  180. package/dest/public/avm/opcodes/storage.d.ts.map +1 -0
  181. package/dest/public/avm/opcodes/storage.js +66 -0
  182. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -0
  183. package/dest/public/avm/serialization/buffer_cursor.js +99 -0
  184. package/dest/{avm → public/avm}/serialization/bytecode_serialization.d.ts +1 -1
  185. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -0
  186. package/dest/public/avm/serialization/bytecode_serialization.js +328 -0
  187. package/dest/{avm → public/avm}/serialization/instruction_serialization.d.ts +1 -2
  188. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -0
  189. package/dest/public/avm/serialization/instruction_serialization.js +225 -0
  190. package/dest/{avm → public/avm}/test_utils.d.ts +6 -4
  191. package/dest/public/avm/test_utils.d.ts.map +1 -0
  192. package/dest/public/avm/test_utils.js +52 -0
  193. package/dest/public/bytecode_errors.js +1 -2
  194. package/dest/public/execution.d.ts +8 -2
  195. package/dest/public/execution.d.ts.map +1 -1
  196. package/dest/public/execution.js +4 -5
  197. package/dest/public/executor_metrics.js +16 -12
  198. package/dest/public/fixtures/index.js +0 -1
  199. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +15 -9
  200. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  201. package/dest/public/fixtures/public_tx_simulation_tester.js +54 -53
  202. package/dest/public/fixtures/utils.d.ts +7 -11
  203. package/dest/public/fixtures/utils.d.ts.map +1 -1
  204. package/dest/public/fixtures/utils.js +92 -32
  205. package/dest/public/index.d.ts +5 -4
  206. package/dest/public/index.d.ts.map +1 -1
  207. package/dest/public/index.js +5 -5
  208. package/dest/public/public_db_sources.d.ts +82 -34
  209. package/dest/public/public_db_sources.d.ts.map +1 -1
  210. package/dest/public/public_db_sources.js +171 -196
  211. package/dest/public/{public_processor.d.ts → public_processor/public_processor.d.ts} +10 -8
  212. package/dest/public/public_processor/public_processor.d.ts.map +1 -0
  213. package/dest/public/public_processor/public_processor.js +379 -0
  214. package/dest/public/{public_processor_metrics.d.ts → public_processor/public_processor_metrics.d.ts} +3 -3
  215. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -0
  216. package/dest/public/public_processor/public_processor_metrics.js +125 -0
  217. package/dest/public/{public_tx_context.d.ts → public_tx_simulator/public_tx_context.d.ts} +14 -8
  218. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -0
  219. package/dest/public/public_tx_simulator/public_tx_context.js +320 -0
  220. package/dest/public/{public_tx_simulator.d.ts → public_tx_simulator/public_tx_simulator.d.ts} +10 -7
  221. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -0
  222. package/dest/public/public_tx_simulator/public_tx_simulator.js +325 -0
  223. package/dest/public/side_effect_errors.js +1 -2
  224. package/dest/public/side_effect_trace.d.ts +16 -10
  225. package/dest/public/side_effect_trace.d.ts.map +1 -1
  226. package/dest/public/side_effect_trace.js +82 -149
  227. package/dest/public/side_effect_trace_interface.d.ts +9 -7
  228. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  229. package/dest/public/side_effect_trace_interface.js +1 -2
  230. package/dest/public/tx_contract_cache.d.ts +41 -0
  231. package/dest/public/tx_contract_cache.d.ts.map +1 -0
  232. package/dest/public/tx_contract_cache.js +49 -0
  233. package/dest/public/unique_class_ids.js +23 -28
  234. package/dest/public/utils.d.ts +2 -2
  235. package/dest/public/utils.d.ts.map +1 -1
  236. package/dest/public/utils.js +17 -12
  237. package/dest/server.d.ts +4 -4
  238. package/dest/server.d.ts.map +1 -1
  239. package/dest/server.js +3 -5
  240. package/dest/test/utils.d.ts +3 -2
  241. package/dest/test/utils.d.ts.map +1 -1
  242. package/dest/test/utils.js +9 -7
  243. package/package.json +19 -21
  244. package/src/client.ts +4 -0
  245. package/src/{public → common}/db_interfaces.ts +8 -40
  246. package/src/common/debug_fn_name.ts +4 -2
  247. package/src/common/errors.ts +5 -5
  248. package/src/common/index.ts +2 -1
  249. package/src/common/message_load_oracle_inputs.ts +2 -2
  250. package/src/common/stats/index.ts +1 -0
  251. package/src/{stats → common/stats}/stats.ts +2 -2
  252. package/src/{acvm → private/acvm}/acvm.ts +5 -5
  253. package/src/{acvm → private/acvm}/acvm_types.ts +1 -1
  254. package/src/{acvm → private/acvm}/deserialize.ts +2 -2
  255. package/src/{acvm → private/acvm}/oracle/index.ts +1 -1
  256. package/src/{acvm → private/acvm}/oracle/oracle.ts +22 -12
  257. package/src/{acvm → private/acvm}/oracle/typed_oracle.ts +50 -55
  258. package/src/{acvm → private/acvm}/serialize.ts +10 -3
  259. package/src/{client → private}/client_execution_context.ts +54 -37
  260. package/src/{client → private}/db_oracle.ts +20 -20
  261. package/src/{client → private}/execution_note_cache.ts +3 -3
  262. package/src/{common → private}/hashed_values_cache.ts +2 -2
  263. package/src/private/index.ts +12 -0
  264. package/src/{client → private}/pick_notes.ts +1 -1
  265. package/src/{client → private}/private_execution.ts +46 -14
  266. package/src/{providers → private/providers}/acvm_native.ts +6 -6
  267. package/src/{providers → private/providers}/acvm_wasm.ts +4 -4
  268. package/src/{providers → private/providers}/acvm_wasm_with_blobs.ts +5 -5
  269. package/src/{providers → private/providers}/factory.ts +1 -1
  270. package/src/{common → private/providers}/simulation_provider.ts +5 -5
  271. package/src/{client → private}/simulator.ts +31 -123
  272. package/src/{client → private}/unconstrained_execution.ts +7 -7
  273. package/src/{client → private}/view_data_oracle.ts +25 -28
  274. package/src/{avm → public/avm}/avm_context.ts +12 -7
  275. package/src/{avm → public/avm}/avm_contract_call_result.ts +6 -6
  276. package/src/{avm → public/avm}/avm_execution_environment.ts +2 -2
  277. package/src/{avm → public/avm}/avm_gas.ts +1 -3
  278. package/src/{avm → public/avm}/avm_machine_state.ts +2 -2
  279. package/src/{avm → public/avm}/avm_memory_types.ts +4 -4
  280. package/src/{avm → public/avm}/avm_simulator.ts +12 -6
  281. package/src/{avm → public/avm}/errors.ts +5 -4
  282. package/src/{avm → public/avm}/fixtures/avm_simulation_tester.ts +16 -15
  283. package/src/{avm → public/avm}/fixtures/base_avm_simulation_tester.ts +45 -40
  284. package/src/{avm → public/avm}/fixtures/index.ts +77 -12
  285. package/src/{avm → public/avm}/fixtures/simple_contract_data_source.ts +26 -19
  286. package/src/{avm → public/avm}/index.ts +1 -1
  287. package/src/public/avm/journal/index.ts +1 -0
  288. package/src/{avm → public/avm}/journal/journal.ts +330 -305
  289. package/src/{avm → public/avm}/journal/nullifiers.ts +20 -19
  290. package/src/{avm → public/avm}/journal/public_storage.ts +2 -2
  291. package/src/{avm → public/avm}/opcodes/contract.ts +1 -1
  292. package/src/{avm → public/avm}/opcodes/control_flow.ts +1 -1
  293. package/src/{avm → public/avm}/opcodes/conversion.ts +1 -1
  294. package/src/{avm → public/avm}/opcodes/ec_add.ts +2 -2
  295. package/src/{avm → public/avm}/opcodes/external_calls.ts +5 -6
  296. package/src/{avm → public/avm}/opcodes/hashing.ts +1 -1
  297. package/src/public/avm/opcodes/index.ts +15 -0
  298. package/src/{avm → public/avm}/opcodes/instruction.ts +2 -2
  299. package/src/{avm → public/avm}/opcodes/misc.ts +1 -1
  300. package/src/public/avm/serialization/bytecode_serialization.ts +204 -0
  301. package/src/{avm → public/avm}/serialization/instruction_serialization.ts +0 -1
  302. package/src/{avm → public/avm}/test_utils.ts +10 -7
  303. package/src/public/execution.ts +9 -12
  304. package/src/public/fixtures/public_tx_simulation_tester.ts +66 -72
  305. package/src/public/fixtures/utils.ts +122 -33
  306. package/src/public/index.ts +5 -4
  307. package/src/public/public_db_sources.ts +216 -222
  308. package/src/public/{public_processor.ts → public_processor/public_processor.ts} +78 -53
  309. package/src/public/{public_processor_metrics.ts → public_processor/public_processor_metrics.ts} +3 -3
  310. package/src/public/{public_tx_context.ts → public_tx_simulator/public_tx_context.ts} +70 -75
  311. package/src/public/{public_tx_simulator.ts → public_tx_simulator/public_tx_simulator.ts} +104 -91
  312. package/src/public/side_effect_trace.ts +85 -160
  313. package/src/public/side_effect_trace_interface.ts +10 -23
  314. package/src/public/tx_contract_cache.ts +69 -0
  315. package/src/public/unique_class_ids.ts +1 -1
  316. package/src/public/utils.ts +2 -2
  317. package/src/server.ts +4 -4
  318. package/src/test/utils.ts +5 -3
  319. package/dest/acvm/acvm.d.ts.map +0 -1
  320. package/dest/acvm/acvm.js +0 -73
  321. package/dest/acvm/acvm_types.d.ts.map +0 -1
  322. package/dest/acvm/acvm_types.js +0 -2
  323. package/dest/acvm/deserialize.d.ts.map +0 -1
  324. package/dest/acvm/deserialize.js +0 -46
  325. package/dest/acvm/index.d.ts.map +0 -1
  326. package/dest/acvm/index.js +0 -6
  327. package/dest/acvm/oracle/index.d.ts.map +0 -1
  328. package/dest/acvm/oracle/index.js +0 -3
  329. package/dest/acvm/oracle/oracle.d.ts.map +0 -1
  330. package/dest/acvm/oracle/oracle.js +0 -230
  331. package/dest/acvm/oracle/typed_oracle.d.ts.map +0 -1
  332. package/dest/acvm/oracle/typed_oracle.js +0 -131
  333. package/dest/acvm/serialize.d.ts.map +0 -1
  334. package/dest/acvm/serialize.js +0 -48
  335. package/dest/avm/avm_context.d.ts.map +0 -1
  336. package/dest/avm/avm_context.js +0 -44
  337. package/dest/avm/avm_contract_call_result.d.ts.map +0 -1
  338. package/dest/avm/avm_contract_call_result.js +0 -45
  339. package/dest/avm/avm_execution_environment.d.ts.map +0 -1
  340. package/dest/avm/avm_execution_environment.js +0 -28
  341. package/dest/avm/avm_gas.d.ts.map +0 -1
  342. package/dest/avm/avm_gas.js +0 -170
  343. package/dest/avm/avm_machine_state.d.ts.map +0 -1
  344. package/dest/avm/avm_machine_state.js +0 -112
  345. package/dest/avm/avm_memory_types.d.ts.map +0 -1
  346. package/dest/avm/avm_memory_types.js +0 -327
  347. package/dest/avm/avm_simulator.d.ts.map +0 -1
  348. package/dest/avm/avm_simulator.js +0 -193
  349. package/dest/avm/avm_tree.d.ts +0 -282
  350. package/dest/avm/avm_tree.d.ts.map +0 -1
  351. package/dest/avm/avm_tree.js +0 -684
  352. package/dest/avm/bytecode_utils.d.ts.map +0 -1
  353. package/dest/avm/bytecode_utils.js +0 -15
  354. package/dest/avm/errors.d.ts.map +0 -1
  355. package/dest/avm/errors.js +0 -196
  356. package/dest/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  357. package/dest/avm/fixtures/avm_simulation_tester.js +0 -73
  358. package/dest/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  359. package/dest/avm/fixtures/base_avm_simulation_tester.js +0 -76
  360. package/dest/avm/fixtures/index.d.ts.map +0 -1
  361. package/dest/avm/fixtures/index.js +0 -134
  362. package/dest/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
  363. package/dest/avm/fixtures/simple_contract_data_source.js +0 -75
  364. package/dest/avm/index.d.ts.map +0 -1
  365. package/dest/avm/index.js +0 -4
  366. package/dest/avm/journal/index.d.ts.map +0 -1
  367. package/dest/avm/journal/index.js +0 -2
  368. package/dest/avm/journal/journal.d.ts.map +0 -1
  369. package/dest/avm/journal/journal.js +0 -499
  370. package/dest/avm/journal/nullifiers.d.ts.map +0 -1
  371. package/dest/avm/journal/nullifiers.js +0 -99
  372. package/dest/avm/journal/public_storage.d.ts.map +0 -1
  373. package/dest/avm/journal/public_storage.js +0 -159
  374. package/dest/avm/opcodes/accrued_substate.d.ts.map +0 -1
  375. package/dest/avm/opcodes/accrued_substate.js +0 -215
  376. package/dest/avm/opcodes/addressing_mode.d.ts.map +0 -1
  377. package/dest/avm/opcodes/addressing_mode.js +0 -81
  378. package/dest/avm/opcodes/arithmetic.d.ts.map +0 -1
  379. package/dest/avm/opcodes/arithmetic.js +0 -70
  380. package/dest/avm/opcodes/bitwise.d.ts.map +0 -1
  381. package/dest/avm/opcodes/bitwise.js +0 -90
  382. package/dest/avm/opcodes/comparators.d.ts.map +0 -1
  383. package/dest/avm/opcodes/comparators.js +0 -40
  384. package/dest/avm/opcodes/contract.d.ts.map +0 -1
  385. package/dest/avm/opcodes/contract.js +0 -63
  386. package/dest/avm/opcodes/control_flow.d.ts.map +0 -1
  387. package/dest/avm/opcodes/control_flow.js +0 -97
  388. package/dest/avm/opcodes/conversion.d.ts.map +0 -1
  389. package/dest/avm/opcodes/conversion.js +0 -64
  390. package/dest/avm/opcodes/ec_add.d.ts.map +0 -1
  391. package/dest/avm/opcodes/ec_add.js +0 -82
  392. package/dest/avm/opcodes/environment_getters.d.ts.map +0 -1
  393. package/dest/avm/opcodes/environment_getters.js +0 -78
  394. package/dest/avm/opcodes/external_calls.d.ts.map +0 -1
  395. package/dest/avm/opcodes/external_calls.js +0 -169
  396. package/dest/avm/opcodes/hashing.d.ts.map +0 -1
  397. package/dest/avm/opcodes/hashing.js +0 -103
  398. package/dest/avm/opcodes/index.d.ts.map +0 -1
  399. package/dest/avm/opcodes/index.js +0 -16
  400. package/dest/avm/opcodes/instruction.d.ts.map +0 -1
  401. package/dest/avm/opcodes/instruction.js +0 -100
  402. package/dest/avm/opcodes/instruction_impl.d.ts.map +0 -1
  403. package/dest/avm/opcodes/instruction_impl.js +0 -33
  404. package/dest/avm/opcodes/memory.d.ts.map +0 -1
  405. package/dest/avm/opcodes/memory.js +0 -226
  406. package/dest/avm/opcodes/misc.d.ts.map +0 -1
  407. package/dest/avm/opcodes/misc.js +0 -45
  408. package/dest/avm/opcodes/multi_scalar_mul.d.ts +0 -16
  409. package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +0 -1
  410. package/dest/avm/opcodes/multi_scalar_mul.js +0 -112
  411. package/dest/avm/opcodes/storage.d.ts.map +0 -1
  412. package/dest/avm/opcodes/storage.js +0 -61
  413. package/dest/avm/serialization/buffer_cursor.d.ts.map +0 -1
  414. package/dest/avm/serialization/buffer_cursor.js +0 -99
  415. package/dest/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  416. package/dest/avm/serialization/bytecode_serialization.js +0 -132
  417. package/dest/avm/serialization/instruction_serialization.d.ts.map +0 -1
  418. package/dest/avm/serialization/instruction_serialization.js +0 -187
  419. package/dest/avm/test_utils.d.ts.map +0 -1
  420. package/dest/avm/test_utils.js +0 -52
  421. package/dest/client/client_execution_context.d.ts.map +0 -1
  422. package/dest/client/client_execution_context.js +0 -392
  423. package/dest/client/db_oracle.d.ts.map +0 -1
  424. package/dest/client/db_oracle.js +0 -17
  425. package/dest/client/execution_note_cache.d.ts.map +0 -1
  426. package/dest/client/execution_note_cache.js +0 -181
  427. package/dest/client/index.d.ts +0 -16
  428. package/dest/client/index.d.ts.map +0 -1
  429. package/dest/client/index.js +0 -15
  430. package/dest/client/pick_notes.d.ts.map +0 -1
  431. package/dest/client/pick_notes.js +0 -54
  432. package/dest/client/private_execution.d.ts +0 -19
  433. package/dest/client/private_execution.d.ts.map +0 -1
  434. package/dest/client/private_execution.js +0 -72
  435. package/dest/client/simulator.d.ts +0 -60
  436. package/dest/client/simulator.d.ts.map +0 -1
  437. package/dest/client/simulator.js +0 -136
  438. package/dest/client/unconstrained_execution.d.ts.map +0 -1
  439. package/dest/client/unconstrained_execution.js +0 -30
  440. package/dest/client/view_data_oracle.d.ts.map +0 -1
  441. package/dest/client/view_data_oracle.js +0 -268
  442. package/dest/common/hashed_values_cache.d.ts.map +0 -1
  443. package/dest/common/hashed_values_cache.js +0 -50
  444. package/dest/common/simulation_provider.d.ts.map +0 -1
  445. package/dest/common/simulation_provider.js +0 -27
  446. package/dest/common.d.ts +0 -2
  447. package/dest/common.d.ts.map +0 -1
  448. package/dest/common.js +0 -2
  449. package/dest/providers/acvm_native.d.ts.map +0 -1
  450. package/dest/providers/acvm_native.js +0 -125
  451. package/dest/providers/acvm_wasm.d.ts.map +0 -1
  452. package/dest/providers/acvm_wasm.js +0 -54
  453. package/dest/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
  454. package/dest/providers/factory.d.ts.map +0 -1
  455. package/dest/providers/factory.js +0 -27
  456. package/dest/providers/index.d.ts +0 -5
  457. package/dest/providers/index.d.ts.map +0 -1
  458. package/dest/providers/index.js +0 -5
  459. package/dest/public/db_interfaces.d.ts.map +0 -1
  460. package/dest/public/db_interfaces.js +0 -2
  461. package/dest/public/fee_payment.d.ts +0 -11
  462. package/dest/public/fee_payment.d.ts.map +0 -1
  463. package/dest/public/fee_payment.js +0 -21
  464. package/dest/public/public_processor.d.ts.map +0 -1
  465. package/dest/public/public_processor.js +0 -352
  466. package/dest/public/public_processor_metrics.d.ts.map +0 -1
  467. package/dest/public/public_processor_metrics.js +0 -106
  468. package/dest/public/public_tx_context.d.ts.map +0 -1
  469. package/dest/public/public_tx_context.js +0 -341
  470. package/dest/public/public_tx_simulator.d.ts.map +0 -1
  471. package/dest/public/public_tx_simulator.js +0 -333
  472. package/dest/stats/index.d.ts.map +0 -1
  473. package/dest/stats/index.js +0 -2
  474. package/dest/stats/stats.d.ts.map +0 -1
  475. package/dest/stats/stats.js +0 -11
  476. package/src/avm/avm_tree.ts +0 -887
  477. package/src/avm/opcodes/multi_scalar_mul.ts +0 -121
  478. package/src/avm/serialization/bytecode_serialization.ts +0 -212
  479. package/src/client/index.ts +0 -15
  480. package/src/common.ts +0 -1
  481. package/src/providers/index.ts +0 -4
  482. package/src/public/fee_payment.ts +0 -23
  483. /package/dest/{stats → common/stats}/index.d.ts +0 -0
  484. /package/{src/stats/index.ts → dest/common/stats/index.js} +0 -0
  485. /package/dest/{acvm → private/acvm}/index.d.ts +0 -0
  486. /package/dest/{avm → public/avm}/avm_gas.d.ts +0 -0
  487. /package/dest/{avm → public/avm}/bytecode_utils.d.ts +0 -0
  488. /package/dest/{avm → public/avm}/journal/index.d.ts +0 -0
  489. /package/{src/avm/journal/index.ts → dest/public/avm/journal/index.js} +0 -0
  490. /package/dest/{avm → public/avm}/opcodes/accrued_substate.d.ts +0 -0
  491. /package/dest/{avm → public/avm}/opcodes/addressing_mode.d.ts +0 -0
  492. /package/dest/{avm → public/avm}/opcodes/arithmetic.d.ts +0 -0
  493. /package/dest/{avm → public/avm}/opcodes/bitwise.d.ts +0 -0
  494. /package/dest/{avm → public/avm}/opcodes/comparators.d.ts +0 -0
  495. /package/dest/{avm → public/avm}/opcodes/contract.d.ts +0 -0
  496. /package/dest/{avm → public/avm}/opcodes/control_flow.d.ts +0 -0
  497. /package/dest/{avm → public/avm}/opcodes/environment_getters.d.ts +0 -0
  498. /package/dest/{avm → public/avm}/opcodes/external_calls.d.ts +0 -0
  499. /package/dest/{avm → public/avm}/opcodes/index.d.ts +0 -0
  500. /package/{src/avm/opcodes/index.ts → dest/public/avm/opcodes/index.js} +0 -0
  501. /package/dest/{avm → public/avm}/opcodes/instruction_impl.d.ts +0 -0
  502. /package/dest/{avm → public/avm}/opcodes/memory.d.ts +0 -0
  503. /package/dest/{avm → public/avm}/opcodes/storage.d.ts +0 -0
  504. /package/dest/{avm → public/avm}/serialization/buffer_cursor.d.ts +0 -0
  505. /package/src/{acvm → private/acvm}/index.ts +0 -0
  506. /package/src/{avm → public/avm}/bytecode_utils.ts +0 -0
  507. /package/src/{avm → public/avm}/opcodes/.eslintrc.cjs +0 -0
  508. /package/src/{avm → public/avm}/opcodes/accrued_substate.ts +0 -0
  509. /package/src/{avm → public/avm}/opcodes/addressing_mode.ts +0 -0
  510. /package/src/{avm → public/avm}/opcodes/arithmetic.ts +0 -0
  511. /package/src/{avm → public/avm}/opcodes/bitwise.ts +0 -0
  512. /package/src/{avm → public/avm}/opcodes/comparators.ts +0 -0
  513. /package/src/{avm → public/avm}/opcodes/environment_getters.ts +0 -0
  514. /package/src/{avm → public/avm}/opcodes/instruction_impl.ts +0 -0
  515. /package/src/{avm → public/avm}/opcodes/memory.ts +0 -0
  516. /package/src/{avm → public/avm}/opcodes/storage.ts +0 -0
  517. /package/src/{avm → public/avm}/serialization/buffer_cursor.ts +0 -0
@@ -1,11 +1,13 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  /// <reference types="node" resolution-mode="require"/>
3
- import { type FailedTx, type MerkleTreeWriteOperations, NestedProcessReturnValues, type ProcessedTx, Tx, type TxValidator } from '@aztec/circuit-types';
4
- import { type ContractDataSource, Gas, type GlobalVariables } from '@aztec/circuits.js';
5
3
  import { type DateProvider } from '@aztec/foundation/timer';
4
+ import type { ContractDataSource } from '@aztec/stdlib/contract';
5
+ import { Gas } from '@aztec/stdlib/gas';
6
+ import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
7
+ import { type FailedTx, GlobalVariables, NestedProcessReturnValues, type ProcessedTx, Tx, type TxValidator } from '@aztec/stdlib/tx';
6
8
  import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
7
- import { WorldStateDB } from './public_db_sources.js';
8
- import { PublicTxSimulator } from './public_tx_simulator.js';
9
+ import { WorldStateDB } from '../public_db_sources.js';
10
+ import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
9
11
  /**
10
12
  * Creates new instances of PublicProcessor given the provided merkle tree db and contract data source.
11
13
  */
@@ -18,11 +20,11 @@ export declare class PublicProcessorFactory {
18
20
  * Creates a new instance of a PublicProcessor.
19
21
  * @param historicalHeader - The header of a block previous to the one in which the tx is included.
20
22
  * @param globalVariables - The global variables for the block being processed.
21
- * @param enforceFeePayment - Allows disabling balance checks for fee estimations.
23
+ * @param skipFeeEnforcement - Allows disabling balance checks for fee estimations.
22
24
  * @returns A new instance of a PublicProcessor.
23
25
  */
24
- create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables, enforceFeePayment: boolean): PublicProcessor;
25
- protected createPublicTxSimulator(db: MerkleTreeWriteOperations, worldStateDB: WorldStateDB, globalVariables: GlobalVariables, doMerkleOperations: boolean, enforceFeePayment: boolean, telemetryClient: TelemetryClient): PublicTxSimulator;
26
+ create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables, skipFeeEnforcement: boolean): PublicProcessor;
27
+ protected createPublicTxSimulator(db: MerkleTreeWriteOperations, worldStateDB: WorldStateDB, globalVariables: GlobalVariables, doMerkleOperations: boolean, skipFeeEnforcement: boolean, telemetryClient: TelemetryClient): PublicTxSimulator;
26
28
  }
27
29
  /**
28
30
  * Converts Txs lifted from the P2P module into ProcessedTx objects by executing
@@ -57,7 +59,7 @@ export declare class PublicProcessor implements Traceable {
57
59
  };
58
60
  }): Promise<[ProcessedTx[], FailedTx[], NestedProcessReturnValues[]]>;
59
61
  private processTx;
60
- private commitTxState;
62
+ private doTreeInsertionsForPrivateOnlyTx;
61
63
  /** Processes the given tx within deadline. Returns timeout if deadline is hit. */
62
64
  private processTxWithinDeadline;
63
65
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":";;AAIA,OAAO,EAAE,KAAK,YAAY,EAAkC,MAAM,yBAAyB,CAAC;AAM5F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,EACL,KAAK,QAAQ,EACb,eAAe,EACf,yBAAyB,EACzB,KAAK,WAAW,EAChB,EAAE,EAEF,KAAK,WAAW,EAGjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAGlF;;GAEG;AACH,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,eAAe;gBAFf,kBAAkB,EAAE,kBAAkB,EACtC,YAAY,EAAE,YAAY,EAC1B,eAAe,GAAE,eAAsC;IAGjE;;;;;;OAMG;IACI,MAAM,CACX,UAAU,EAAE,yBAAyB,EACrC,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,OAAO,GAC1B,eAAe;IAqBlB,SAAS,CAAC,uBAAuB,CAC/B,EAAE,EAAE,yBAAyB,EAC7B,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,OAAO,EAC3B,kBAAkB,EAAE,OAAO,EAC3B,eAAe,EAAE,eAAe;CAWnC;AASD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAG7C,SAAS,CAAC,EAAE,EAAE,yBAAyB;IACvC,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,iBAAiB,EAAE,iBAAiB;IAC9C,OAAO,CAAC,YAAY;IAEpB,OAAO,CAAC,GAAG;IARb,OAAO,CAAC,OAAO,CAAyB;gBAE5B,EAAE,EAAE,yBAAyB,EAC7B,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB,EACtC,YAAY,EAAE,YAAY,EAClC,eAAe,GAAE,eAAsC,EAC/C,GAAG,yCAA6C;IAK1D,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED;;;;;OAKG;IACU,OAAO,CAClB,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,EACrC,MAAM,GAAE;QACN,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,GAAG,CAAC;QAClB,QAAQ,CAAC,EAAE,IAAI,CAAC;KACZ,EACN,UAAU,GAAE;QACV,mBAAmB,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;QACtC,oBAAoB,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;QAChD,cAAc,CAAC,EAAE;YAAE,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;SAAE,CAAC;KAC/D,GACL,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAwKtD,SAAS;YA2BT,gCAAgC;IAyC9C,kFAAkF;YACpE,uBAAuB;IA+BrC;;;;OAIG;YACW,4BAA4B;YAwB5B,oBAAoB;YA6BpB,wBAAwB;CA8CvC"}
@@ -0,0 +1,379 @@
1
+ function _ts_decorate(decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ }
7
+ import { MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NULLIFIER_SUBTREE_HEIGHT } from '@aztec/constants';
8
+ import { padArrayEnd } from '@aztec/foundation/collection';
9
+ import { Fr } from '@aztec/foundation/fields';
10
+ import { createLogger } from '@aztec/foundation/log';
11
+ import { Timer, elapsed, executeTimeout } from '@aztec/foundation/timer';
12
+ import { ProtocolContractAddress } from '@aztec/protocol-contracts';
13
+ import { ContractClassRegisteredEvent } from '@aztec/protocol-contracts/class-registerer';
14
+ import { computeFeePayerBalanceLeafSlot, computeFeePayerBalanceStorageSlot } from '@aztec/protocol-contracts/fee-juice';
15
+ import { PublicDataWrite } from '@aztec/stdlib/avm';
16
+ import { Gas } from '@aztec/stdlib/gas';
17
+ import { MerkleTreeId } from '@aztec/stdlib/trees';
18
+ import { NestedProcessReturnValues, Tx, TxExecutionPhase, makeProcessedTxFromPrivateOnlyTx, makeProcessedTxFromTxWithPublicCalls } from '@aztec/stdlib/tx';
19
+ import { Attributes, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
20
+ import { ForkCheckpoint } from '@aztec/world-state/native';
21
+ import { WorldStateDB } from '../public_db_sources.js';
22
+ import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
23
+ import { PublicProcessorMetrics } from './public_processor_metrics.js';
24
+ /**
25
+ * Creates new instances of PublicProcessor given the provided merkle tree db and contract data source.
26
+ */ export class PublicProcessorFactory {
27
+ contractDataSource;
28
+ dateProvider;
29
+ telemetryClient;
30
+ constructor(contractDataSource, dateProvider, telemetryClient = getTelemetryClient()){
31
+ this.contractDataSource = contractDataSource;
32
+ this.dateProvider = dateProvider;
33
+ this.telemetryClient = telemetryClient;
34
+ }
35
+ /**
36
+ * Creates a new instance of a PublicProcessor.
37
+ * @param historicalHeader - The header of a block previous to the one in which the tx is included.
38
+ * @param globalVariables - The global variables for the block being processed.
39
+ * @param skipFeeEnforcement - Allows disabling balance checks for fee estimations.
40
+ * @returns A new instance of a PublicProcessor.
41
+ */ create(merkleTree, globalVariables, skipFeeEnforcement) {
42
+ const worldStateDB = new WorldStateDB(merkleTree, this.contractDataSource);
43
+ const publicTxSimulator = this.createPublicTxSimulator(merkleTree, worldStateDB, globalVariables, /*doMerkleOperations=*/ true, skipFeeEnforcement, this.telemetryClient);
44
+ return new PublicProcessor(merkleTree, globalVariables, worldStateDB, publicTxSimulator, this.dateProvider, this.telemetryClient);
45
+ }
46
+ createPublicTxSimulator(db, worldStateDB, globalVariables, doMerkleOperations, skipFeeEnforcement, telemetryClient) {
47
+ return new PublicTxSimulator(db, worldStateDB, globalVariables, doMerkleOperations, skipFeeEnforcement, telemetryClient);
48
+ }
49
+ }
50
+ class PublicProcessorTimeoutError extends Error {
51
+ constructor(message = 'Timed out while processing tx'){
52
+ super(message);
53
+ this.name = 'PublicProcessorTimeoutError';
54
+ }
55
+ }
56
+ /**
57
+ * Converts Txs lifted from the P2P module into ProcessedTx objects by executing
58
+ * any public function calls in them. Txs with private calls only are unaffected.
59
+ */ export class PublicProcessor {
60
+ db;
61
+ globalVariables;
62
+ worldStateDB;
63
+ publicTxSimulator;
64
+ dateProvider;
65
+ log;
66
+ metrics;
67
+ constructor(db, globalVariables, worldStateDB, publicTxSimulator, dateProvider, telemetryClient = getTelemetryClient(), log = createLogger('simulator:public-processor')){
68
+ this.db = db;
69
+ this.globalVariables = globalVariables;
70
+ this.worldStateDB = worldStateDB;
71
+ this.publicTxSimulator = publicTxSimulator;
72
+ this.dateProvider = dateProvider;
73
+ this.log = log;
74
+ this.metrics = new PublicProcessorMetrics(telemetryClient, 'PublicProcessor');
75
+ }
76
+ get tracer() {
77
+ return this.metrics.tracer;
78
+ }
79
+ /**
80
+ * Run each tx through the public circuit and the public kernel circuit if needed.
81
+ * @param txs - Txs to process.
82
+ * @param processedTxHandler - Handler for processed txs in the context of block building or proving.
83
+ * @returns The list of processed txs with their circuit simulation outputs.
84
+ */ async process(txs, limits = {}, validators = {}) {
85
+ const { maxTransactions, maxBlockSize, deadline, maxBlockGas } = limits;
86
+ const { preprocessValidator, postprocessValidator, nullifierCache } = validators;
87
+ const result = [];
88
+ const failed = [];
89
+ const timer = new Timer();
90
+ let totalSizeInBytes = 0;
91
+ let returns = [];
92
+ let totalPublicGas = new Gas(0, 0);
93
+ let totalBlockGas = new Gas(0, 0);
94
+ for await (const origTx of txs){
95
+ // Only process up to the max tx limit
96
+ if (maxTransactions !== undefined && result.length >= maxTransactions) {
97
+ this.log.debug(`Stopping tx processing due to reaching the max tx limit.`);
98
+ break;
99
+ }
100
+ // Bail if we've hit the deadline
101
+ if (deadline && this.dateProvider.now() > +deadline) {
102
+ this.log.warn(`Stopping tx processing due to timeout.`);
103
+ break;
104
+ }
105
+ // Skip this tx if it'd exceed max block size
106
+ const txHash = (await origTx.getTxHash()).toString();
107
+ const preTxSizeInBytes = origTx.getEstimatedPrivateTxEffectsSize();
108
+ if (maxBlockSize !== undefined && totalSizeInBytes + preTxSizeInBytes > maxBlockSize) {
109
+ this.log.warn(`Skipping processing of tx ${txHash} sized ${preTxSizeInBytes} bytes due to block size limit`, {
110
+ txHash,
111
+ sizeInBytes: preTxSizeInBytes,
112
+ totalSizeInBytes,
113
+ maxBlockSize
114
+ });
115
+ continue;
116
+ }
117
+ // Skip this tx if its gas limit would exceed the block gas limit
118
+ const txGasLimit = origTx.data.constants.txContext.gasSettings.gasLimits;
119
+ if (maxBlockGas !== undefined && totalBlockGas.add(txGasLimit).gtAny(maxBlockGas)) {
120
+ this.log.warn(`Skipping processing of tx ${txHash} due to block gas limit`, {
121
+ txHash,
122
+ txGasLimit,
123
+ totalBlockGas,
124
+ maxBlockGas
125
+ });
126
+ continue;
127
+ }
128
+ // The processor modifies the tx objects in place, so we need to clone them.
129
+ const tx = Tx.clone(origTx);
130
+ // We validate the tx before processing it, to avoid unnecessary work.
131
+ if (preprocessValidator) {
132
+ const result = await preprocessValidator.validateTx(tx);
133
+ const txHash = await tx.getTxHash();
134
+ if (result.result === 'invalid') {
135
+ const reason = result.reason.join(', ');
136
+ this.log.warn(`Rejecting tx ${txHash.toString()} due to pre-process validation fail: ${reason}`);
137
+ failed.push({
138
+ tx,
139
+ error: new Error(`Tx failed preprocess validation: ${reason}`)
140
+ });
141
+ returns.push(new NestedProcessReturnValues([]));
142
+ continue;
143
+ } else if (result.result === 'skipped') {
144
+ const reason = result.reason.join(', ');
145
+ this.log.warn(`Skipping tx ${txHash.toString()} due to pre-process validation: ${reason}`);
146
+ returns.push(new NestedProcessReturnValues([]));
147
+ continue;
148
+ } else {
149
+ this.log.trace(`Tx ${txHash.toString()} is valid before processing.`);
150
+ }
151
+ }
152
+ // We checkpoint the transaction here, then within the try/catch we
153
+ // 1. Revert the checkpoint if the tx fails or needs to be discarded for any reason
154
+ // 2. Commit the transaction in the finally block. Note that by using the ForkCheckpoint lifecycle only the first commit/revert takes effect
155
+ const checkpoint = await ForkCheckpoint.new(this.worldStateDB);
156
+ try {
157
+ const [processedTx, returnValues] = await this.processTx(tx, deadline);
158
+ // If the actual size of this tx would exceed block size, skip it
159
+ const txSize = processedTx.txEffect.getDASize();
160
+ if (maxBlockSize !== undefined && totalSizeInBytes + txSize > maxBlockSize) {
161
+ this.log.warn(`Skipping processed tx ${txHash} sized ${txSize} due to max block size.`, {
162
+ txHash,
163
+ sizeInBytes: txSize,
164
+ totalSizeInBytes,
165
+ maxBlockSize
166
+ });
167
+ // Need to revert the checkpoint here and don't go any further
168
+ await checkpoint.revert();
169
+ continue;
170
+ }
171
+ // Re-validate the transaction
172
+ if (postprocessValidator) {
173
+ // Only accept processed transactions that are not double-spends,
174
+ // public functions emitting nullifiers would pass earlier check but fail here.
175
+ // Note that we're checking all nullifiers generated in the private execution twice,
176
+ // we could store the ones already checked and skip them here as an optimization.
177
+ // TODO(palla/txs): Can we get into this case? AVM validates this. We should be able to remove it.
178
+ const result = await postprocessValidator.validateTx(processedTx);
179
+ if (result.result !== 'valid') {
180
+ const reason = result.reason.join(', ');
181
+ this.log.error(`Rejecting tx ${processedTx.hash} after processing: ${reason}.`);
182
+ failed.push({
183
+ tx,
184
+ error: new Error(`Tx failed post-process validation: ${reason}`)
185
+ });
186
+ // Need to revert the checkpoint here and don't go any further
187
+ await checkpoint.revert();
188
+ continue;
189
+ } else {
190
+ this.log.trace(`Tx ${txHash.toString()} is valid post processing.`);
191
+ }
192
+ }
193
+ if (!tx.hasPublicCalls()) {
194
+ // If there are no public calls, perform all tree insertions for side effects from private
195
+ // When there are public calls, the PublicTxSimulator & AVM handle tree insertions.
196
+ await this.doTreeInsertionsForPrivateOnlyTx(processedTx);
197
+ // Add any contracts registered/deployed in this private-only tx to the block-level cache
198
+ // (add to tx-level cache and then commit to block-level cache)
199
+ await this.worldStateDB.addNewContracts(tx);
200
+ this.worldStateDB.commitContractsForTx();
201
+ }
202
+ nullifierCache?.addNullifiers(processedTx.txEffect.nullifiers.map((n)=>n.toBuffer()));
203
+ result.push(processedTx);
204
+ returns = returns.concat(returnValues);
205
+ totalPublicGas = totalPublicGas.add(processedTx.gasUsed.publicGas);
206
+ totalBlockGas = totalBlockGas.add(processedTx.gasUsed.totalGas);
207
+ totalSizeInBytes += txSize;
208
+ } catch (err) {
209
+ // Roll back state to start of TX before proceeding to next TX
210
+ await checkpoint.revert();
211
+ if (err?.name === 'PublicProcessorTimeoutError') {
212
+ this.log.warn(`Stopping tx processing due to timeout.`);
213
+ break;
214
+ }
215
+ const errorMessage = err instanceof Error ? err.message : 'Unknown error';
216
+ this.log.warn(`Failed to process tx ${txHash.toString()}: ${errorMessage} ${err?.stack}`);
217
+ failed.push({
218
+ tx,
219
+ error: err instanceof Error ? err : new Error(errorMessage)
220
+ });
221
+ returns.push(new NestedProcessReturnValues([]));
222
+ } finally{
223
+ // Base case is we always commit the checkpoint. Using the ForkCheckpoint means this has no effect if the tx was reverted
224
+ await checkpoint.commit();
225
+ // The tx-level contracts cache should not live on to the next tx
226
+ this.worldStateDB.clearContractsForTx();
227
+ }
228
+ }
229
+ const duration = timer.s();
230
+ const rate = duration > 0 ? totalPublicGas.l2Gas / duration : 0;
231
+ this.metrics.recordAllTxs(totalPublicGas, rate);
232
+ this.log.info(`Processed ${result.length} successful txs and ${failed.length} failed txs in ${duration}s`, {
233
+ duration,
234
+ rate,
235
+ totalPublicGas,
236
+ totalBlockGas,
237
+ totalSizeInBytes
238
+ });
239
+ return [
240
+ result,
241
+ failed,
242
+ returns
243
+ ];
244
+ }
245
+ async processTx(tx, deadline) {
246
+ const [time, [processedTx, returnValues]] = await elapsed(()=>this.processTxWithinDeadline(tx, deadline));
247
+ this.log.verbose(!tx.hasPublicCalls() ? `Processed tx ${processedTx.hash} with no public calls in ${time}ms` : `Processed tx ${processedTx.hash} with ${tx.enqueuedPublicFunctionCalls.length} public calls in ${time}ms`, {
248
+ txHash: processedTx.hash,
249
+ txFee: processedTx.txEffect.transactionFee.toBigInt(),
250
+ revertCode: processedTx.txEffect.revertCode.getCode(),
251
+ revertReason: processedTx.revertReason,
252
+ gasUsed: processedTx.gasUsed,
253
+ publicDataWriteCount: processedTx.txEffect.publicDataWrites.length,
254
+ nullifierCount: processedTx.txEffect.nullifiers.length,
255
+ noteHashCount: processedTx.txEffect.noteHashes.length,
256
+ contractClassLogCount: processedTx.txEffect.contractClassLogs.length,
257
+ publicLogCount: processedTx.txEffect.publicLogs.length,
258
+ privateLogCount: processedTx.txEffect.privateLogs.length,
259
+ l2ToL1MessageCount: processedTx.txEffect.l2ToL1Msgs.length,
260
+ durationMs: time
261
+ });
262
+ return [
263
+ processedTx,
264
+ returnValues ?? []
265
+ ];
266
+ }
267
+ async doTreeInsertionsForPrivateOnlyTx(processedTx, txValidator) {
268
+ const treeInsertionStart = process.hrtime.bigint();
269
+ // Update the state so that the next tx in the loop has the correct .startState
270
+ // NB: before this change, all .startStates were actually incorrect, but the issue was never caught because we either:
271
+ // a) had only 1 tx with public calls per block, so this loop had len 1
272
+ // b) always had a txHandler with the same db passed to it as this.db, which updated the db in buildBaseRollupHints in this loop
273
+ // To see how this ^ happens, move back to one shared db in test_context and run orchestrator_multi_public_functions.test.ts
274
+ // The below is taken from buildBaseRollupHints:
275
+ await this.db.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, padArrayEnd(processedTx.txEffect.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX));
276
+ try {
277
+ await this.db.batchInsert(MerkleTreeId.NULLIFIER_TREE, padArrayEnd(processedTx.txEffect.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX).map((n)=>n.toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
278
+ } catch (error) {
279
+ if (txValidator) {
280
+ // Ideally the validator has already caught this above, but just in case:
281
+ throw new Error(`Transaction ${processedTx.hash} invalid after processing public functions`);
282
+ } else {
283
+ // We have no validator and assume this call should blindly process txs with duplicates being caught later
284
+ this.log.warn(`Detected duplicate nullifier after public processing for: ${processedTx.hash}.`);
285
+ }
286
+ }
287
+ // The only public data write should be for fee payment
288
+ await this.db.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, processedTx.txEffect.publicDataWrites.map((x)=>x.toBuffer()));
289
+ const treeInsertionEnd = process.hrtime.bigint();
290
+ this.metrics.recordTreeInsertions(Number(treeInsertionEnd - treeInsertionStart) / 1_000);
291
+ }
292
+ /** Processes the given tx within deadline. Returns timeout if deadline is hit. */ async processTxWithinDeadline(tx, deadline) {
293
+ const processFn = tx.hasPublicCalls() ? ()=>this.processTxWithPublicCalls(tx) : ()=>this.processPrivateOnlyTx(tx);
294
+ if (!deadline) {
295
+ return await processFn();
296
+ }
297
+ const txHash = await tx.getTxHash();
298
+ const timeout = +deadline - this.dateProvider.now();
299
+ if (timeout <= 0) {
300
+ throw new PublicProcessorTimeoutError();
301
+ }
302
+ this.log.debug(`Processing tx ${txHash.toString()} within ${timeout}ms`, {
303
+ deadline: deadline.toISOString(),
304
+ now: new Date(this.dateProvider.now()).toISOString(),
305
+ txHash
306
+ });
307
+ return await executeTimeout(()=>processFn(), timeout, ()=>new PublicProcessorTimeoutError());
308
+ }
309
+ /**
310
+ * Creates the public data write for paying the tx fee.
311
+ * This is used in private only txs, since for txs with public calls
312
+ * the avm handles the fee payment itself.
313
+ */ async getFeePaymentPublicDataWrite(txFee, feePayer) {
314
+ const feeJuiceAddress = ProtocolContractAddress.FeeJuice;
315
+ const balanceSlot = await computeFeePayerBalanceStorageSlot(feePayer);
316
+ const leafSlot = await computeFeePayerBalanceLeafSlot(feePayer);
317
+ this.log.debug(`Deducting ${txFee.toBigInt()} balance in Fee Juice for ${feePayer}`);
318
+ const balance = await this.worldStateDB.storageRead(feeJuiceAddress, balanceSlot);
319
+ if (balance.lt(txFee)) {
320
+ throw new Error(`Not enough balance for fee payer to pay for transaction (got ${balance.toBigInt()} needs ${txFee.toBigInt()})`);
321
+ }
322
+ const updatedBalance = balance.sub(txFee);
323
+ await this.worldStateDB.storageWrite(feeJuiceAddress, balanceSlot, updatedBalance);
324
+ return new PublicDataWrite(leafSlot, updatedBalance);
325
+ }
326
+ async processPrivateOnlyTx(tx) {
327
+ const gasFees = this.globalVariables.gasFees;
328
+ const transactionFee = tx.data.gasUsed.computeFee(gasFees);
329
+ const feePaymentPublicDataWrite = await this.getFeePaymentPublicDataWrite(transactionFee, tx.data.feePayer);
330
+ const processedTx = await makeProcessedTxFromPrivateOnlyTx(tx, transactionFee, feePaymentPublicDataWrite, this.globalVariables);
331
+ const siloedContractClassLogs = await tx.filterContractClassLogs(tx.data.getNonEmptyContractClassLogsHashes(), true);
332
+ this.metrics.recordClassRegistration(...siloedContractClassLogs.filter((log)=>ContractClassRegisteredEvent.isContractClassRegisteredEvent(log)).map((log)=>ContractClassRegisteredEvent.fromLog(log)));
333
+ return [
334
+ processedTx,
335
+ undefined
336
+ ];
337
+ }
338
+ async processTxWithPublicCalls(tx) {
339
+ const timer = new Timer();
340
+ const { avmProvingRequest, gasUsed, revertCode, revertReason, processedPhases } = await this.publicTxSimulator.simulate(tx);
341
+ if (!avmProvingRequest) {
342
+ this.metrics.recordFailedTx();
343
+ throw new Error('Avm proving result was not generated.');
344
+ }
345
+ processedPhases.forEach((phase)=>{
346
+ if (phase.reverted) {
347
+ this.metrics.recordRevertedPhase(phase.phase);
348
+ } else {
349
+ this.metrics.recordPhaseDuration(phase.phase, phase.durationMs);
350
+ }
351
+ });
352
+ const siloedContractClassLogs = await tx.filterContractClassLogs(tx.data.getNonEmptyContractClassLogsHashes(), true);
353
+ this.metrics.recordClassRegistration(...siloedContractClassLogs.filter((log)=>ContractClassRegisteredEvent.isContractClassRegisteredEvent(log)).map((log)=>ContractClassRegisteredEvent.fromLog(log)));
354
+ const phaseCount = processedPhases.length;
355
+ const durationMs = timer.ms();
356
+ this.metrics.recordTx(phaseCount, durationMs, gasUsed.publicGas);
357
+ const processedTx = await makeProcessedTxFromTxWithPublicCalls(tx, avmProvingRequest, gasUsed, revertCode, revertReason);
358
+ const returnValues = processedPhases.find(({ phase })=>phase === TxExecutionPhase.APP_LOGIC)?.returnValues ?? [];
359
+ return [
360
+ processedTx,
361
+ returnValues
362
+ ];
363
+ }
364
+ }
365
+ _ts_decorate([
366
+ trackSpan('PublicProcessor.processTx', async (tx)=>({
367
+ [Attributes.TX_HASH]: (await tx.getTxHash()).toString()
368
+ }))
369
+ ], PublicProcessor.prototype, "processTx", null);
370
+ _ts_decorate([
371
+ trackSpan('PublicProcessor.processPrivateOnlyTx', async (tx)=>({
372
+ [Attributes.TX_HASH]: (await tx.getTxHash()).toString()
373
+ }))
374
+ ], PublicProcessor.prototype, "processPrivateOnlyTx", null);
375
+ _ts_decorate([
376
+ trackSpan('PublicProcessor.processTxWithPublicCalls', async (tx)=>({
377
+ [Attributes.TX_HASH]: (await tx.getTxHash()).toString()
378
+ }))
379
+ ], PublicProcessor.prototype, "processTxWithPublicCalls", null);
@@ -1,6 +1,6 @@
1
- import { type TxExecutionPhase } from '@aztec/circuit-types';
2
- import { type Gas } from '@aztec/circuits.js';
3
- import { type ContractClassRegisteredEvent } from '@aztec/protocol-contracts/class-registerer';
1
+ import type { ContractClassRegisteredEvent } from '@aztec/protocol-contracts/class-registerer';
2
+ import type { Gas } from '@aztec/stdlib/gas';
3
+ import type { TxExecutionPhase } from '@aztec/stdlib/tx';
4
4
  import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
5
5
  export declare class PublicProcessorMetrics {
6
6
  readonly tracer: Tracer;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public_processor_metrics.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAC/F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,sBAAsB;IACjC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,KAAK,CAAY;IAEzB,OAAO,CAAC,qBAAqB,CAAY;gBAE7B,MAAM,EAAE,eAAe,EAAE,IAAI,SAAoB;IA4D7D,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM;IAKnE,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;IAc7D,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAkB3C,cAAc;IAMd,mBAAmB,CAAC,SAAS,EAAE,gBAAgB;IAI/C,uBAAuB,CAAC,GAAG,MAAM,EAAE,4BAA4B,EAAE;IAWjE,oBAAoB,CAAC,UAAU,EAAE,MAAM;CAGxC"}
@@ -0,0 +1,125 @@
1
+ import { Attributes, Metrics, ValueType } from '@aztec/telemetry-client';
2
+ export class PublicProcessorMetrics {
3
+ tracer;
4
+ txDuration;
5
+ txCount;
6
+ txPhaseCount;
7
+ phaseDuration;
8
+ phaseCount;
9
+ bytecodeDeployed;
10
+ totalGas;
11
+ totalGasHistogram;
12
+ gasRate;
13
+ txGas;
14
+ treeInsertionDuration;
15
+ constructor(client, name = 'PublicProcessor'){
16
+ this.tracer = client.getTracer(name);
17
+ const meter = client.getMeter(name);
18
+ this.txDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TX_DURATION, {
19
+ description: 'How long it takes to process a transaction',
20
+ unit: 'ms',
21
+ valueType: ValueType.INT
22
+ });
23
+ this.txCount = meter.createUpDownCounter(Metrics.PUBLIC_PROCESSOR_TX_COUNT, {
24
+ description: 'Number of transactions processed'
25
+ });
26
+ this.txPhaseCount = meter.createUpDownCounter(Metrics.PUBLIC_PROCESSOR_TX_PHASE_COUNT, {
27
+ description: 'Number of phases processed'
28
+ });
29
+ this.phaseDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_PHASE_DURATION, {
30
+ description: 'How long it takes to process a phase',
31
+ unit: 'ms',
32
+ valueType: ValueType.INT
33
+ });
34
+ this.phaseCount = meter.createUpDownCounter(Metrics.PUBLIC_PROCESSOR_PHASE_COUNT, {
35
+ description: 'Number of failed phases'
36
+ });
37
+ this.bytecodeDeployed = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_DEPLOY_BYTECODE_SIZE, {
38
+ description: 'Size of deployed bytecode',
39
+ unit: 'By'
40
+ });
41
+ this.totalGas = meter.createGauge(Metrics.PUBLIC_PROCESSOR_TOTAL_GAS, {
42
+ description: 'Total gas used in block',
43
+ unit: 'gas'
44
+ });
45
+ this.totalGasHistogram = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TOTAL_GAS_HISTOGRAM, {
46
+ description: 'Total gas used in block as histogram',
47
+ unit: 'gas/block'
48
+ });
49
+ this.txGas = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TX_GAS, {
50
+ description: 'Gas used in transaction',
51
+ unit: 'gas/tx'
52
+ });
53
+ this.gasRate = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_GAS_RATE, {
54
+ description: 'L2 gas per second for complete block',
55
+ unit: 'gas/s'
56
+ });
57
+ this.treeInsertionDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TREE_INSERTION, {
58
+ description: 'How long it takes for tree insertion',
59
+ unit: 'us',
60
+ valueType: ValueType.INT
61
+ });
62
+ }
63
+ recordPhaseDuration(phaseName, durationMs) {
64
+ this.phaseCount.add(1, {
65
+ [Attributes.TX_PHASE_NAME]: phaseName,
66
+ [Attributes.OK]: true
67
+ });
68
+ this.phaseDuration.record(Math.ceil(durationMs), {
69
+ [Attributes.TX_PHASE_NAME]: phaseName
70
+ });
71
+ }
72
+ recordTx(phaseCount, durationMs, gasUsed) {
73
+ this.txPhaseCount.add(phaseCount);
74
+ this.txDuration.record(Math.ceil(durationMs));
75
+ this.txCount.add(1, {
76
+ [Attributes.OK]: true
77
+ });
78
+ this.txGas.record(gasUsed.daGas, {
79
+ [Attributes.GAS_DIMENSION]: 'DA'
80
+ });
81
+ this.txGas.record(gasUsed.l2Gas, {
82
+ [Attributes.GAS_DIMENSION]: 'L2'
83
+ });
84
+ }
85
+ recordAllTxs(totalGas, gasRate) {
86
+ this.totalGas.record(totalGas.daGas, {
87
+ [Attributes.GAS_DIMENSION]: 'DA'
88
+ });
89
+ this.totalGas.record(totalGas.l2Gas, {
90
+ [Attributes.GAS_DIMENSION]: 'L2'
91
+ });
92
+ this.gasRate.record(gasRate, {
93
+ [Attributes.GAS_DIMENSION]: 'L2'
94
+ });
95
+ this.totalGasHistogram.record(totalGas.daGas, {
96
+ [Attributes.GAS_DIMENSION]: 'DA'
97
+ });
98
+ this.totalGasHistogram.record(totalGas.l2Gas, {
99
+ [Attributes.GAS_DIMENSION]: 'L2'
100
+ });
101
+ }
102
+ recordFailedTx() {
103
+ this.txCount.add(1, {
104
+ [Attributes.OK]: false
105
+ });
106
+ }
107
+ recordRevertedPhase(phaseName) {
108
+ this.phaseCount.add(1, {
109
+ [Attributes.TX_PHASE_NAME]: phaseName,
110
+ [Attributes.OK]: false
111
+ });
112
+ }
113
+ recordClassRegistration(...events) {
114
+ let totalBytecode = 0;
115
+ for (const event of events){
116
+ totalBytecode += event.packedPublicBytecode.length;
117
+ }
118
+ if (totalBytecode > 0) {
119
+ this.bytecodeDeployed.record(totalBytecode);
120
+ }
121
+ }
122
+ recordTreeInsertions(durationUs) {
123
+ this.treeInsertionDuration.record(Math.ceil(durationUs));
124
+ }
125
+ }
@@ -1,8 +1,14 @@
1
- import { type AvmProvingRequest, type MerkleTreeReadOperations, type PublicExecutionRequest, type SimulationError, type Tx, TxExecutionPhase, type TxHash } from '@aztec/circuit-types';
2
- import { type AztecAddress, Fr, Gas, type GasSettings, type GlobalVariables, type PrivateToPublicAccumulatedData, PublicCallRequest, RevertCode, type StateReference } from '@aztec/circuits.js';
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import { type AvmProvingRequest, RevertCode } from '@aztec/stdlib/avm';
3
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import type { SimulationError } from '@aztec/stdlib/errors';
5
+ import { Gas, GasSettings } from '@aztec/stdlib/gas';
6
+ import type { MerkleTreeReadOperations } from '@aztec/stdlib/interfaces/server';
7
+ import { type PrivateToPublicAccumulatedData, PublicCallRequest } from '@aztec/stdlib/kernel';
8
+ import { type GlobalVariables, type PublicExecutionRequest, type StateReference, type Tx, TxExecutionPhase, type TxHash } from '@aztec/stdlib/tx';
3
9
  import { AvmPersistableStateManager } from '../avm/index.js';
4
- import { type WorldStateDB } from './public_db_sources.js';
5
- import { SideEffectTrace } from './side_effect_trace.js';
10
+ import type { WorldStateDB } from '../public_db_sources.js';
11
+ import { SideEffectTrace } from '../side_effect_trace.js';
6
12
  /**
7
13
  * The transaction-level context for public execution.
8
14
  */
@@ -38,7 +44,7 @@ export declare class PublicTxContext {
38
44
  * All phases have been processed.
39
45
  * Actual transaction fee and actual total consumed gas can now be queried.
40
46
  */
41
- halt(): void;
47
+ halt(): Promise<void>;
42
48
  /**
43
49
  * Revert execution a phase. Populate revertReason & revertCode.
44
50
  * If in setup, throw an error (transaction will be thrown out).
@@ -121,11 +127,11 @@ declare class PhaseStateManager {
121
127
  private log;
122
128
  private currentlyActiveStateManager;
123
129
  constructor(txStateManager: AvmPersistableStateManager);
124
- fork(): void;
130
+ fork(): Promise<void>;
125
131
  getActiveStateManager(): AvmPersistableStateManager;
126
132
  isForked(): boolean;
127
- mergeForkedState(): void;
128
- discardForkedState(): void;
133
+ mergeForkedState(): Promise<void>;
134
+ discardForkedState(): Promise<void>;
129
135
  }
130
136
  export {};
131
137
  //# sourceMappingURL=public_tx_context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public_tx_context.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/public_tx_context.ts"],"names":[],"mappings":"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"}