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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/README.md +6 -4
  2. package/dest/client.d.ts +1 -3
  3. package/dest/client.d.ts.map +1 -1
  4. package/dest/client.js +0 -2
  5. package/dest/common/errors.d.ts +2 -2
  6. package/dest/common/errors.d.ts.map +1 -1
  7. package/dest/common/index.d.ts +1 -1
  8. package/dest/common/stats/index.d.ts +1 -1
  9. package/dest/common/stats/stats.d.ts +1 -1
  10. package/dest/private/acvm/acvm.d.ts +4 -2
  11. package/dest/private/acvm/acvm.d.ts.map +1 -1
  12. package/dest/private/acvm/acvm.js +4 -3
  13. package/dest/private/acvm/acvm_types.d.ts +1 -1
  14. package/dest/private/acvm/deserialize.d.ts +2 -2
  15. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  16. package/dest/private/acvm/deserialize.js +1 -1
  17. package/dest/private/acvm/index.d.ts +1 -1
  18. package/dest/private/acvm/serialize.d.ts +2 -2
  19. package/dest/private/acvm/serialize.d.ts.map +1 -1
  20. package/dest/private/acvm/serialize.js +1 -1
  21. package/dest/private/acvm_native.d.ts +5 -3
  22. package/dest/private/acvm_native.d.ts.map +1 -1
  23. package/dest/private/acvm_native.js +8 -6
  24. package/dest/private/acvm_wasm.d.ts +4 -3
  25. package/dest/private/acvm_wasm.d.ts.map +1 -1
  26. package/dest/private/acvm_wasm.js +7 -5
  27. package/dest/private/acvm_wasm_with_blobs.d.ts +1 -1
  28. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -1
  29. package/dest/private/circuit_recording/circuit_recorder.d.ts +39 -25
  30. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  31. package/dest/private/circuit_recording/circuit_recorder.js +71 -72
  32. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +9 -20
  33. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  34. package/dest/private/circuit_recording/file_circuit_recorder.js +39 -43
  35. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +7 -2
  36. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
  37. package/dest/private/circuit_recording/memory_circuit_recorder.js +4 -4
  38. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  39. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  40. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +11 -14
  41. package/dest/private/circuit_simulator.d.ts +1 -1
  42. package/dest/private/factory.d.ts +3 -3
  43. package/dest/private/factory.d.ts.map +1 -1
  44. package/dest/private/factory.js +7 -4
  45. package/dest/public/avm/testing/account_proof_fetcher.d.ts +2 -0
  46. package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
  47. package/dest/public/avm/testing/account_proof_fetcher.js +152 -0
  48. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +3 -2
  49. package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +1 -0
  50. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.js +19 -4
  51. package/dest/public/avm/{fixtures → testing}/utils.d.ts +4 -10
  52. package/dest/public/avm/testing/utils.d.ts.map +1 -0
  53. package/dest/public/avm/{fixtures → testing}/utils.js +7 -36
  54. package/dest/public/avm_simulator.d.ts +28 -0
  55. package/dest/public/avm_simulator.d.ts.map +1 -0
  56. package/dest/public/avm_simulator.js +4 -0
  57. package/dest/public/avm_simulator_pool.d.ts +45 -0
  58. package/dest/public/avm_simulator_pool.d.ts.map +1 -0
  59. package/dest/public/avm_simulator_pool.js +197 -0
  60. package/dest/public/cdb/generated/api_types.d.ts +171 -0
  61. package/dest/public/cdb/generated/api_types.d.ts.map +1 -0
  62. package/dest/public/cdb/generated/api_types.js +314 -0
  63. package/dest/public/cdb/generated/server.d.ts +26 -0
  64. package/dest/public/cdb/generated/server.d.ts.map +1 -0
  65. package/dest/public/cdb/generated/server.js +135 -0
  66. package/dest/public/cdb_ipc_server.d.ts +33 -0
  67. package/dest/public/cdb_ipc_server.d.ts.map +1 -0
  68. package/dest/public/cdb_ipc_server.js +153 -0
  69. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  70. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  71. package/dest/public/contracts_db_checkpoint.js +30 -0
  72. package/dest/public/db_interfaces.d.ts +14 -2
  73. package/dest/public/db_interfaces.d.ts.map +1 -1
  74. package/dest/public/executor_metrics.d.ts +3 -2
  75. package/dest/public/executor_metrics.d.ts.map +1 -1
  76. package/dest/public/executor_metrics.js +13 -34
  77. package/dest/public/executor_metrics_interface.d.ts +3 -2
  78. package/dest/public/executor_metrics_interface.d.ts.map +1 -1
  79. package/dest/public/fixtures/amm_test.d.ts +1 -1
  80. package/dest/public/fixtures/amm_test.js +6 -6
  81. package/dest/public/fixtures/bulk_test.d.ts +3 -3
  82. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  83. package/dest/public/fixtures/bulk_test.js +38 -75
  84. package/dest/public/fixtures/custom_bytecode_tester.d.ts +29 -7
  85. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  86. package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
  87. package/dest/public/fixtures/index.d.ts +3 -3
  88. package/dest/public/fixtures/index.d.ts.map +1 -1
  89. package/dest/public/fixtures/index.js +2 -2
  90. package/dest/public/fixtures/public_processor_test_env.d.ts +30 -0
  91. package/dest/public/fixtures/public_processor_test_env.d.ts.map +1 -0
  92. package/dest/public/fixtures/public_processor_test_env.js +73 -0
  93. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +32 -9
  94. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  95. package/dest/public/fixtures/public_tx_simulation_tester.js +84 -26
  96. package/dest/public/fixtures/simple_contract_data_source.d.ts +5 -4
  97. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
  98. package/dest/public/fixtures/simple_contract_data_source.js +5 -5
  99. package/dest/public/fixtures/token_test.d.ts +6 -2
  100. package/dest/public/fixtures/token_test.d.ts.map +1 -1
  101. package/dest/public/fixtures/token_test.js +16 -15
  102. package/dest/public/fixtures/utils.d.ts +3 -3
  103. package/dest/public/fixtures/utils.d.ts.map +1 -1
  104. package/dest/public/fixtures/utils.js +25 -23
  105. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +67 -0
  106. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  107. package/dest/public/fuzzing/avm_fuzzer_simulator.js +185 -0
  108. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  109. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  110. package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
  111. package/dest/public/index.d.ts +6 -2
  112. package/dest/public/index.d.ts.map +1 -1
  113. package/dest/public/index.js +2 -1
  114. package/dest/public/public_db_sources.d.ts +29 -66
  115. package/dest/public/public_db_sources.d.ts.map +1 -1
  116. package/dest/public/public_db_sources.js +83 -134
  117. package/dest/public/public_errors.d.ts +1 -1
  118. package/dest/public/public_errors.d.ts.map +1 -1
  119. package/dest/public/public_processor/guarded_merkle_tree.d.ts +8 -5
  120. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  121. package/dest/public/public_processor/guarded_merkle_tree.js +12 -4
  122. package/dest/public/public_processor/public_processor.d.ts +24 -22
  123. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  124. package/dest/public/public_processor/public_processor.js +559 -125
  125. package/dest/public/public_processor/public_processor_metrics.d.ts +5 -2
  126. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  127. package/dest/public/public_processor/public_processor_metrics.js +36 -45
  128. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +17 -0
  129. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
  130. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.js +39 -0
  131. package/dest/public/public_tx_simulator/factories.d.ts +14 -0
  132. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  133. package/dest/public/public_tx_simulator/factories.js +28 -0
  134. package/dest/public/public_tx_simulator/index.d.ts +6 -4
  135. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  136. package/dest/public/public_tx_simulator/index.js +3 -2
  137. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +43 -90
  138. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  139. package/dest/public/public_tx_simulator/public_tx_simulator.js +99 -331
  140. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +24 -0
  141. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
  142. package/dest/public/public_tx_simulator/public_tx_simulator_base.js +31 -0
  143. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +25 -2
  144. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
  145. package/dest/public/side_effect_errors.d.ts +1 -1
  146. package/dest/public/side_effect_errors.d.ts.map +1 -1
  147. package/dest/public/test_executor_metrics.d.ts +6 -4
  148. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  149. package/dest/public/test_executor_metrics.js +7 -6
  150. package/dest/public/unique_class_ids.d.ts +1 -1
  151. package/dest/public/unique_class_ids.d.ts.map +1 -1
  152. package/dest/public/utils.d.ts +1 -1
  153. package/dest/server.d.ts +1 -1
  154. package/dest/testing.d.ts +1 -1
  155. package/package.json +26 -22
  156. package/src/client.ts +0 -2
  157. package/src/common/errors.ts +1 -1
  158. package/src/private/acvm/acvm.ts +4 -3
  159. package/src/private/acvm/deserialize.ts +1 -1
  160. package/src/private/acvm/serialize.ts +1 -1
  161. package/src/private/acvm_native.ts +11 -5
  162. package/src/private/acvm_wasm.ts +11 -4
  163. package/src/private/circuit_recording/circuit_recorder.ts +90 -81
  164. package/src/private/circuit_recording/file_circuit_recorder.ts +45 -50
  165. package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
  166. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +9 -15
  167. package/src/private/factory.ts +7 -4
  168. package/src/public/avm/testing/account_proof.json +553 -0
  169. package/src/public/avm/testing/account_proof_fetcher.ts +166 -0
  170. package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +24 -4
  171. package/src/public/avm/{fixtures → testing}/utils.ts +7 -42
  172. package/src/public/avm_simulator.ts +29 -0
  173. package/src/public/avm_simulator_pool.ts +226 -0
  174. package/src/public/cdb/generated/api_types.ts +457 -0
  175. package/src/public/cdb/generated/server.ts +109 -0
  176. package/src/public/cdb_ipc_server.ts +197 -0
  177. package/src/public/contracts_db_checkpoint.ts +41 -0
  178. package/src/public/db_interfaces.ts +16 -1
  179. package/src/public/executor_metrics.ts +11 -34
  180. package/src/public/executor_metrics_interface.ts +2 -1
  181. package/src/public/fixtures/amm_test.ts +6 -6
  182. package/src/public/fixtures/bulk_test.ts +40 -15
  183. package/src/public/fixtures/custom_bytecode_tester.ts +54 -20
  184. package/src/public/fixtures/index.ts +6 -2
  185. package/src/public/fixtures/public_processor_test_env.ts +88 -0
  186. package/src/public/fixtures/public_tx_simulation_tester.ts +117 -26
  187. package/src/public/fixtures/simple_contract_data_source.ts +9 -10
  188. package/src/public/fixtures/token_test.ts +21 -13
  189. package/src/public/fixtures/utils.ts +25 -27
  190. package/src/public/fuzzing/avm_fuzzer_simulator.ts +303 -0
  191. package/src/public/fuzzing/avm_simulator_bin.ts +173 -0
  192. package/src/public/index.ts +8 -2
  193. package/src/public/public_db_sources.ts +112 -174
  194. package/src/public/public_processor/guarded_merkle_tree.ts +14 -6
  195. package/src/public/public_processor/public_processor.ts +234 -138
  196. package/src/public/public_processor/public_processor_metrics.ts +28 -44
  197. package/src/public/public_tx_simulator/dumping_public_tx_simulator.ts +67 -0
  198. package/src/public/public_tx_simulator/factories.ts +61 -0
  199. package/src/public/public_tx_simulator/index.ts +8 -3
  200. package/src/public/public_tx_simulator/public_tx_simulator.ts +142 -500
  201. package/src/public/public_tx_simulator/public_tx_simulator_base.ts +37 -0
  202. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +24 -2
  203. package/src/public/test_executor_metrics.ts +10 -8
  204. package/dest/public/avm/avm_context.d.ts +0 -41
  205. package/dest/public/avm/avm_context.d.ts.map +0 -1
  206. package/dest/public/avm/avm_context.js +0 -44
  207. package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
  208. package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
  209. package/dest/public/avm/avm_contract_call_result.js +0 -54
  210. package/dest/public/avm/avm_execution_environment.d.ts +0 -23
  211. package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
  212. package/dest/public/avm/avm_execution_environment.js +0 -36
  213. package/dest/public/avm/avm_gas.d.ts +0 -44
  214. package/dest/public/avm/avm_gas.d.ts.map +0 -1
  215. package/dest/public/avm/avm_gas.js +0 -195
  216. package/dest/public/avm/avm_machine_state.d.ts +0 -97
  217. package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
  218. package/dest/public/avm/avm_machine_state.js +0 -109
  219. package/dest/public/avm/avm_memory_types.d.ts +0 -275
  220. package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
  221. package/dest/public/avm/avm_memory_types.js +0 -351
  222. package/dest/public/avm/avm_simulator.d.ts +0 -39
  223. package/dest/public/avm/avm_simulator.d.ts.map +0 -1
  224. package/dest/public/avm/avm_simulator.js +0 -190
  225. package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
  226. package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
  227. package/dest/public/avm/avm_simulator_interface.js +0 -3
  228. package/dest/public/avm/errors.d.ts +0 -98
  229. package/dest/public/avm/errors.d.ts.map +0 -1
  230. package/dest/public/avm/errors.js +0 -129
  231. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +0 -22
  232. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  233. package/dest/public/avm/fixtures/avm_simulation_tester.js +0 -74
  234. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  235. package/dest/public/avm/fixtures/initializers.d.ts +0 -43
  236. package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
  237. package/dest/public/avm/fixtures/initializers.js +0 -42
  238. package/dest/public/avm/fixtures/utils.d.ts.map +0 -1
  239. package/dest/public/avm/index.d.ts +0 -2
  240. package/dest/public/avm/index.d.ts.map +0 -1
  241. package/dest/public/avm/index.js +0 -1
  242. package/dest/public/avm/opcodes/accrued_substate.d.ts +0 -75
  243. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
  244. package/dest/public/avm/opcodes/accrued_substate.js +0 -255
  245. package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
  246. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
  247. package/dest/public/avm/opcodes/addressing_mode.js +0 -94
  248. package/dest/public/avm/opcodes/arithmetic.d.ts +0 -47
  249. package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
  250. package/dest/public/avm/opcodes/arithmetic.js +0 -87
  251. package/dest/public/avm/opcodes/bitwise.d.ts +0 -42
  252. package/dest/public/avm/opcodes/bitwise.d.ts.map +0 -1
  253. package/dest/public/avm/opcodes/bitwise.js +0 -99
  254. package/dest/public/avm/opcodes/comparators.d.ts +0 -25
  255. package/dest/public/avm/opcodes/comparators.d.ts.map +0 -1
  256. package/dest/public/avm/opcodes/comparators.js +0 -43
  257. package/dest/public/avm/opcodes/contract.d.ts +0 -20
  258. package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
  259. package/dest/public/avm/opcodes/contract.js +0 -65
  260. package/dest/public/avm/opcodes/control_flow.d.ts +0 -41
  261. package/dest/public/avm/opcodes/control_flow.d.ts.map +0 -1
  262. package/dest/public/avm/opcodes/control_flow.js +0 -107
  263. package/dest/public/avm/opcodes/conversion.d.ts +0 -18
  264. package/dest/public/avm/opcodes/conversion.d.ts.map +0 -1
  265. package/dest/public/avm/opcodes/conversion.js +0 -333
  266. package/dest/public/avm/opcodes/ec_add.d.ts +0 -19
  267. package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
  268. package/dest/public/avm/opcodes/ec_add.js +0 -84
  269. package/dest/public/avm/opcodes/environment_getters.d.ts +0 -28
  270. package/dest/public/avm/opcodes/environment_getters.d.ts.map +0 -1
  271. package/dest/public/avm/opcodes/environment_getters.js +0 -77
  272. package/dest/public/avm/opcodes/external_calls.d.ts +0 -59
  273. package/dest/public/avm/opcodes/external_calls.d.ts.map +0 -1
  274. package/dest/public/avm/opcodes/external_calls.js +0 -209
  275. package/dest/public/avm/opcodes/hashing.d.ts +0 -36
  276. package/dest/public/avm/opcodes/hashing.d.ts.map +0 -1
  277. package/dest/public/avm/opcodes/hashing.js +0 -114
  278. package/dest/public/avm/opcodes/index.d.ts +0 -16
  279. package/dest/public/avm/opcodes/index.d.ts.map +0 -1
  280. package/dest/public/avm/opcodes/index.js +0 -15
  281. package/dest/public/avm/opcodes/instruction.d.ts +0 -74
  282. package/dest/public/avm/opcodes/instruction.d.ts.map +0 -1
  283. package/dest/public/avm/opcodes/instruction.js +0 -95
  284. package/dest/public/avm/opcodes/instruction_impl.d.ts +0 -19
  285. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +0 -1
  286. package/dest/public/avm/opcodes/instruction_impl.js +0 -30
  287. package/dest/public/avm/opcodes/memory.d.ts +0 -74
  288. package/dest/public/avm/opcodes/memory.d.ts.map +0 -1
  289. package/dest/public/avm/opcodes/memory.js +0 -257
  290. package/dest/public/avm/opcodes/misc.d.ts +0 -18
  291. package/dest/public/avm/opcodes/misc.d.ts.map +0 -1
  292. package/dest/public/avm/opcodes/misc.js +0 -73
  293. package/dest/public/avm/opcodes/storage.d.ts +0 -24
  294. package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
  295. package/dest/public/avm/opcodes/storage.js +0 -68
  296. package/dest/public/avm/revert_reason.d.ts +0 -18
  297. package/dest/public/avm/revert_reason.d.ts.map +0 -1
  298. package/dest/public/avm/revert_reason.js +0 -38
  299. package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -26
  300. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +0 -1
  301. package/dest/public/avm/serialization/buffer_cursor.js +0 -99
  302. package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -17
  303. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  304. package/dest/public/avm/serialization/bytecode_serialization.js +0 -333
  305. package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -114
  306. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +0 -1
  307. package/dest/public/avm/serialization/instruction_serialization.js +0 -261
  308. package/dest/public/avm/test_utils.d.ts +0 -15
  309. package/dest/public/avm/test_utils.d.ts.map +0 -1
  310. package/dest/public/avm/test_utils.js +0 -44
  311. package/dest/public/debug_fn_name.d.ts +0 -5
  312. package/dest/public/debug_fn_name.d.ts.map +0 -1
  313. package/dest/public/debug_fn_name.js +0 -9
  314. package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -9
  315. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
  316. package/dest/public/fixtures/custom_bytecode_tests.js +0 -109
  317. package/dest/public/fixtures/minimal_public_tx.d.ts +0 -10
  318. package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
  319. package/dest/public/fixtures/minimal_public_tx.js +0 -29
  320. package/dest/public/hinting_db_sources.d.ts +0 -70
  321. package/dest/public/hinting_db_sources.d.ts.map +0 -1
  322. package/dest/public/hinting_db_sources.js +0 -297
  323. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -41
  324. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +0 -1
  325. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +0 -89
  326. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -24
  327. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +0 -1
  328. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +0 -51
  329. package/dest/public/public_tx_simulator/public_tx_context.d.ts +0 -127
  330. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +0 -1
  331. package/dest/public/public_tx_simulator/public_tx_context.js +0 -292
  332. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +0 -21
  333. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +0 -1
  334. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +0 -39
  335. package/dest/public/side_effect_trace.d.ts +0 -87
  336. package/dest/public/side_effect_trace.d.ts.map +0 -1
  337. package/dest/public/side_effect_trace.js +0 -199
  338. package/dest/public/side_effect_trace_interface.d.ts +0 -23
  339. package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
  340. package/dest/public/side_effect_trace_interface.js +0 -1
  341. package/dest/public/state_manager/index.d.ts +0 -2
  342. package/dest/public/state_manager/index.d.ts.map +0 -1
  343. package/dest/public/state_manager/index.js +0 -1
  344. package/dest/public/state_manager/nullifiers.d.ts +0 -61
  345. package/dest/public/state_manager/nullifiers.d.ts.map +0 -1
  346. package/dest/public/state_manager/nullifiers.js +0 -92
  347. package/dest/public/state_manager/public_storage.d.ts +0 -66
  348. package/dest/public/state_manager/public_storage.d.ts.map +0 -1
  349. package/dest/public/state_manager/public_storage.js +0 -145
  350. package/dest/public/state_manager/state_manager.d.ts +0 -166
  351. package/dest/public/state_manager/state_manager.d.ts.map +0 -1
  352. package/dest/public/state_manager/state_manager.js +0 -391
  353. package/dest/public/tx_contract_cache.d.ts +0 -41
  354. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  355. package/dest/public/tx_contract_cache.js +0 -49
  356. package/src/public/avm/avm_context.ts +0 -61
  357. package/src/public/avm/avm_contract_call_result.ts +0 -67
  358. package/src/public/avm/avm_execution_environment.ts +0 -48
  359. package/src/public/avm/avm_gas.ts +0 -183
  360. package/src/public/avm/avm_machine_state.ts +0 -169
  361. package/src/public/avm/avm_memory_types.ts +0 -436
  362. package/src/public/avm/avm_simulator.ts +0 -274
  363. package/src/public/avm/avm_simulator_interface.ts +0 -8
  364. package/src/public/avm/errors.ts +0 -163
  365. package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -108
  366. package/src/public/avm/fixtures/initializers.ts +0 -104
  367. package/src/public/avm/index.ts +0 -1
  368. package/src/public/avm/opcodes/accrued_substate.ts +0 -288
  369. package/src/public/avm/opcodes/addressing_mode.ts +0 -111
  370. package/src/public/avm/opcodes/arithmetic.ts +0 -117
  371. package/src/public/avm/opcodes/bitwise.ts +0 -113
  372. package/src/public/avm/opcodes/comparators.ts +0 -55
  373. package/src/public/avm/opcodes/contract.ts +0 -75
  374. package/src/public/avm/opcodes/control_flow.ts +0 -123
  375. package/src/public/avm/opcodes/conversion.ts +0 -104
  376. package/src/public/avm/opcodes/ec_add.ts +0 -96
  377. package/src/public/avm/opcodes/environment_getters.ts +0 -87
  378. package/src/public/avm/opcodes/external_calls.ts +0 -260
  379. package/src/public/avm/opcodes/hashing.ts +0 -145
  380. package/src/public/avm/opcodes/index.ts +0 -15
  381. package/src/public/avm/opcodes/instruction.ts +0 -136
  382. package/src/public/avm/opcodes/instruction_impl.ts +0 -36
  383. package/src/public/avm/opcodes/memory.ts +0 -293
  384. package/src/public/avm/opcodes/misc.ts +0 -102
  385. package/src/public/avm/opcodes/storage.ts +0 -87
  386. package/src/public/avm/revert_reason.ts +0 -55
  387. package/src/public/avm/serialization/buffer_cursor.ts +0 -118
  388. package/src/public/avm/serialization/bytecode_serialization.ts +0 -204
  389. package/src/public/avm/serialization/instruction_serialization.ts +0 -249
  390. package/src/public/avm/test_utils.ts +0 -64
  391. package/src/public/debug_fn_name.ts +0 -18
  392. package/src/public/fixtures/custom_bytecode_tests.ts +0 -135
  393. package/src/public/fixtures/minimal_public_tx.ts +0 -36
  394. package/src/public/hinting_db_sources.ts +0 -505
  395. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -128
  396. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -109
  397. package/src/public/public_tx_simulator/public_tx_context.ts +0 -471
  398. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
  399. package/src/public/side_effect_trace.ts +0 -290
  400. package/src/public/side_effect_trace_interface.ts +0 -28
  401. package/src/public/state_manager/index.ts +0 -1
  402. package/src/public/state_manager/nullifiers.ts +0 -103
  403. package/src/public/state_manager/public_storage.ts +0 -174
  404. package/src/public/state_manager/state_manager.ts +0 -560
  405. package/src/public/tx_contract_cache.ts +0 -69
@@ -1,471 +0,0 @@
1
- import {
2
- MAX_ENQUEUED_CALLS_PER_TX,
3
- MAX_L2_TO_L1_MSGS_PER_TX,
4
- MAX_NOTE_HASHES_PER_TX,
5
- MAX_NULLIFIERS_PER_TX,
6
- MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
7
- } from '@aztec/constants';
8
- import { padArrayEnd } from '@aztec/foundation/collection';
9
- import { Fr } from '@aztec/foundation/fields';
10
- import { type Logger, createLogger } from '@aztec/foundation/log';
11
- import {
12
- AvmAccumulatedData,
13
- AvmAccumulatedDataArrayLengths,
14
- AvmCircuitPublicInputs,
15
- PublicDataWrite,
16
- RevertCode,
17
- } from '@aztec/stdlib/avm';
18
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
19
- import type { SimulationError } from '@aztec/stdlib/errors';
20
- import { computeEffectiveGasFees, computeTransactionFee } from '@aztec/stdlib/fees';
21
- import { Gas, GasSettings } from '@aztec/stdlib/gas';
22
- import {
23
- PrivateToAvmAccumulatedData,
24
- PrivateToAvmAccumulatedDataArrayLengths,
25
- PrivateToPublicAccumulatedData,
26
- PublicCallRequest,
27
- PublicCallRequestArrayLengths,
28
- countAccumulatedItems,
29
- } from '@aztec/stdlib/kernel';
30
- import { FlatPublicLogs } from '@aztec/stdlib/logs';
31
- import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
32
- import { MerkleTreeId } from '@aztec/stdlib/trees';
33
- import {
34
- type GlobalVariables,
35
- ProtocolContracts,
36
- PublicCallRequestWithCalldata,
37
- TreeSnapshots,
38
- type Tx,
39
- TxExecutionPhase,
40
- type TxHash,
41
- } from '@aztec/stdlib/tx';
42
-
43
- import { strict as assert } from 'assert';
44
- import { inspect } from 'util';
45
-
46
- import type { PublicContractsDBInterface } from '../db_interfaces.js';
47
- import type { PublicTreesDB } from '../public_db_sources.js';
48
- import { SideEffectTrace } from '../side_effect_trace.js';
49
- import { PublicPersistableStateManager } from '../state_manager/state_manager.js';
50
- import { getCallRequestsWithCalldataByPhase } from '../utils.js';
51
-
52
- /**
53
- * The transaction-level context for public execution.
54
- */
55
- export class PublicTxContext {
56
- private log: Logger;
57
-
58
- /* Gas used including private, teardown gas _limit_, setup and app logic */
59
- private gasUsedByPublic: Gas = Gas.empty();
60
- /* Gas actually used during teardown (different from limit) */
61
- public teardownGasUsed: Gas = Gas.empty();
62
-
63
- /* Entire transaction execution is done. */
64
- private halted = false;
65
- /* Where did reverts happen (if at all)? */
66
- private revertCode: RevertCode = RevertCode.OK;
67
- /* What caused a revert (if one occurred)? */
68
- public revertReason: SimulationError | undefined;
69
- private constructor(
70
- public readonly txHash: TxHash,
71
- public readonly state: PhaseStateManager,
72
- private readonly startTreeSnapshots: TreeSnapshots,
73
- private readonly globalVariables: GlobalVariables,
74
- private readonly protocolContracts: ProtocolContracts,
75
- private readonly proverId: Fr,
76
- private readonly gasSettings: GasSettings,
77
- private readonly gasUsedByPrivate: Gas,
78
- private readonly gasAllocatedToPublic: Gas,
79
- private readonly gasAllocatedToPublicTeardown: Gas,
80
- private readonly setupCallRequests: PublicCallRequestWithCalldata[],
81
- private readonly appLogicCallRequests: PublicCallRequestWithCalldata[],
82
- private readonly teardownCallRequests: PublicCallRequestWithCalldata[],
83
- public readonly nonRevertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData,
84
- public readonly revertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData,
85
- public readonly feePayer: AztecAddress,
86
- private readonly trace: SideEffectTrace,
87
- ) {
88
- this.log = createLogger(`simulator:public_tx_context`);
89
- }
90
-
91
- public static async create(
92
- treesDB: PublicTreesDB,
93
- contractsDB: PublicContractsDBInterface,
94
- tx: Tx,
95
- globalVariables: GlobalVariables,
96
- protocolContracts: ProtocolContracts,
97
- doMerkleOperations: boolean,
98
- proverId: Fr,
99
- ) {
100
- const nonRevertibleAccumulatedDataFromPrivate = tx.data.forPublic!.nonRevertibleAccumulatedData;
101
-
102
- const trace = new SideEffectTrace();
103
-
104
- const firstNullifier = nonRevertibleAccumulatedDataFromPrivate.nullifiers[0];
105
-
106
- // Transaction level state manager that will be forked for revertible phases.
107
- const txStateManager = PublicPersistableStateManager.create(
108
- treesDB,
109
- contractsDB,
110
- trace,
111
- doMerkleOperations,
112
- firstNullifier,
113
- globalVariables.timestamp,
114
- );
115
-
116
- const gasSettings = tx.data.constants.txContext.gasSettings;
117
- const gasUsedByPrivate = tx.data.gasUsed;
118
- const gasAllocatedToPublic = gasSettings.gasLimits.sub(gasUsedByPrivate);
119
- const gasAllocatedToPublicTeardown = gasSettings.teardownGasLimits;
120
-
121
- return new PublicTxContext(
122
- tx.getTxHash(),
123
- new PhaseStateManager(txStateManager),
124
- await txStateManager.getTreeSnapshots(),
125
- globalVariables,
126
- protocolContracts,
127
- proverId,
128
- gasSettings,
129
- gasUsedByPrivate,
130
- gasAllocatedToPublic,
131
- gasAllocatedToPublicTeardown,
132
- getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.SETUP),
133
- getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.APP_LOGIC),
134
- getCallRequestsWithCalldataByPhase(tx, TxExecutionPhase.TEARDOWN),
135
- tx.data.forPublic!.nonRevertibleAccumulatedData,
136
- tx.data.forPublic!.revertibleAccumulatedData,
137
- tx.data.feePayer,
138
- trace,
139
- );
140
- }
141
-
142
- /**
143
- * Signal that the entire transaction execution is done.
144
- * All phases have been processed.
145
- * Actual transaction fee and actual total consumed gas can now be queried.
146
- */
147
- halt() {
148
- assert(!this.state.isForked(), 'Cannot halt when state is forked');
149
- this.halted = true;
150
- }
151
-
152
- /**
153
- * Revert execution a phase. Populate revertReason & revertCode.
154
- * If in setup, throw an error (transaction will be thrown out).
155
- * NOTE: this does not "halt" the entire transaction execution.
156
- */
157
- revert(phase: TxExecutionPhase, revertReason: SimulationError | undefined = undefined, culprit = '') {
158
- this.log.warn(`${TxExecutionPhase[phase]} phase reverted! ${culprit} failed with reason: ${revertReason?.message}`);
159
-
160
- if (revertReason && !this.revertReason) {
161
- // don't override revertReason
162
- // (if app logic and teardown both revert, we want app logic's reason)
163
- this.revertReason = revertReason;
164
- }
165
- if (phase === TxExecutionPhase.SETUP) {
166
- this.log.warn(`Setup phase reverted! The transaction will be thrown out.`);
167
- } else if (phase === TxExecutionPhase.APP_LOGIC) {
168
- this.revertCode = RevertCode.APP_LOGIC_REVERTED;
169
- } else if (phase === TxExecutionPhase.TEARDOWN) {
170
- if (this.revertCode.equals(RevertCode.APP_LOGIC_REVERTED)) {
171
- this.revertCode = RevertCode.BOTH_REVERTED;
172
- } else {
173
- this.revertCode = RevertCode.TEARDOWN_REVERTED;
174
- }
175
- }
176
- }
177
-
178
- /**
179
- * Get the revert code.
180
- * @returns The revert code.
181
- */
182
- getFinalRevertCode(): RevertCode {
183
- assert(this.halted, 'Cannot know the final revert code until tx execution ends');
184
- return this.revertCode;
185
- }
186
-
187
- /**
188
- * Are there any call requests for the speciiied phase?
189
- */
190
- hasPhase(phase: TxExecutionPhase): boolean {
191
- if (phase === TxExecutionPhase.SETUP) {
192
- return this.setupCallRequests.length > 0;
193
- } else if (phase === TxExecutionPhase.APP_LOGIC) {
194
- return this.appLogicCallRequests.length > 0;
195
- } else {
196
- // phase === TxExecutionPhase.TEARDOWN
197
- return this.teardownCallRequests.length > 0;
198
- }
199
- }
200
-
201
- /**
202
- * Get the call requests for the specified phase (including args hashes).
203
- */
204
- getCallRequestsForPhase(phase: TxExecutionPhase): PublicCallRequestWithCalldata[] {
205
- switch (phase) {
206
- case TxExecutionPhase.SETUP:
207
- return this.setupCallRequests;
208
- case TxExecutionPhase.APP_LOGIC:
209
- return this.appLogicCallRequests;
210
- case TxExecutionPhase.TEARDOWN:
211
- return this.teardownCallRequests;
212
- }
213
- }
214
-
215
- /**
216
- * How much gas is left as of the specified phase?
217
- */
218
- getGasLeftAtPhase(phase: TxExecutionPhase): Gas {
219
- if (phase === TxExecutionPhase.TEARDOWN) {
220
- const gasLeftForPublicTeardown = this.gasAllocatedToPublicTeardown.sub(this.teardownGasUsed);
221
- return gasLeftForPublicTeardown;
222
- } else {
223
- const gasLeftForPublic = this.gasAllocatedToPublic.sub(this.gasUsedByPublic);
224
- return gasLeftForPublic;
225
- }
226
- }
227
-
228
- /**
229
- * Consume gas. Track gas for teardown phase separately.
230
- */
231
- consumeGas(phase: TxExecutionPhase, gas: Gas) {
232
- if (phase === TxExecutionPhase.TEARDOWN) {
233
- this.teardownGasUsed = this.teardownGasUsed.add(gas);
234
- } else {
235
- this.gasUsedByPublic = this.gasUsedByPublic.add(gas);
236
- }
237
- }
238
-
239
- /**
240
- * The gasUsed by public and private,
241
- * as if the entire teardown gas limit was consumed.
242
- */
243
- getTotalGasUsed(): Gas {
244
- return this.gasUsedByPrivate.add(this.gasUsedByPublic);
245
- }
246
-
247
- /**
248
- * Compute the gas used using the actual gas used during teardown instead
249
- * of the teardown gas limit.
250
- * Note that this.gasUsed is initialized from private's gasUsed which includes
251
- * teardown gas limit.
252
- */
253
- getActualGasUsed(): Gas {
254
- assert(this.halted, 'Can only compute actual gas used after tx execution ends');
255
- const requireTeardown = this.teardownCallRequests.length > 0;
256
- const teardownGasLimits = requireTeardown ? this.gasSettings.teardownGasLimits : Gas.empty();
257
- return this.getTotalGasUsed().sub(teardownGasLimits).add(this.teardownGasUsed);
258
- }
259
-
260
- /**
261
- * Compute the public gas used using the actual gas used during teardown instead
262
- * of the teardown gas limit.
263
- */
264
- getActualPublicGasUsed(): Gas {
265
- assert(this.halted, 'Can only compute actual gas used after tx execution ends');
266
- return this.gasUsedByPublic.add(this.teardownGasUsed);
267
- }
268
-
269
- /**
270
- * Get the transaction fee as is available to the specified phase.
271
- * Only teardown should have access to the actual transaction fee.
272
- */
273
- getTransactionFee(phase: TxExecutionPhase): Fr {
274
- if (phase === TxExecutionPhase.TEARDOWN) {
275
- return this.getTransactionFeeUnsafe();
276
- } else {
277
- return Fr.zero();
278
- }
279
- }
280
-
281
- /**
282
- * Compute the transaction fee.
283
- * Should only be called during or after teardown.
284
- */
285
- private getTransactionFeeUnsafe(): Fr {
286
- const gasUsed = this.getTotalGasUsed();
287
- const txFee = computeTransactionFee(this.globalVariables.gasFees, this.gasSettings, gasUsed);
288
-
289
- this.log.debug(`Computed tx fee`, {
290
- txFee,
291
- gasUsed: inspect(gasUsed),
292
- gasFees: inspect(this.globalVariables.gasFees),
293
- });
294
-
295
- return txFee;
296
- }
297
-
298
- /**
299
- * Generate the public inputs for the AVM circuit.
300
- */
301
- public async generateAvmCircuitPublicInputs(): Promise<AvmCircuitPublicInputs> {
302
- assert(this.halted, 'Can only get AvmCircuitPublicInputs after tx execution ends');
303
- const stateManager = this.state.getActiveStateManager();
304
-
305
- // We get the side effects from the AVM.
306
- // The AVM will already have handled the conditional insertion of most private side-effects.
307
- // (depending on the revert code of each stage). Only l2ToL1Msgs and publicLogs still need to be "merged".
308
- const {
309
- publicDataWrites: avmPublicDataWrites,
310
- noteHashes: avmNoteHashes,
311
- nullifiers: avmNullifiers,
312
- l2ToL1Msgs: avmL2ToL1Msgs,
313
- publicLogs: avmPublicLogs,
314
- } = this.trace.getSideEffects();
315
-
316
- // Private generates PrivateLogs, and public execution generates PublicLogs.
317
- // Since these are two different categories, they should not be merged.
318
- const finalPublicLogs = avmPublicLogs;
319
-
320
- // We squash public data writes.
321
- // Maps slot to value. Maps in TS are iterable in insertion order, which is exactly what we want for
322
- // squashing "to the left", where the first occurrence of a slot uses the value of the last write to it,
323
- // and the rest occurrences are omitted.
324
- // Note: you can't write public state from private, so we only squash what we got from the AVM.
325
- const finalPublicDataWrites = (() => {
326
- const squashedPublicDataWrites: Map<bigint, Fr> = new Map();
327
- for (const publicDataWrite of avmPublicDataWrites) {
328
- squashedPublicDataWrites.set(publicDataWrite.leafSlot.toBigInt(), publicDataWrite.newValue);
329
- }
330
- return Array.from(squashedPublicDataWrites.entries()).map(
331
- ([slot, value]) => new PublicDataWrite(new Fr(slot), value),
332
- );
333
- })();
334
-
335
- // Count before padding.
336
- const accumulatedDataArrayLengths = new AvmAccumulatedDataArrayLengths(
337
- avmNoteHashes.length,
338
- avmNullifiers.length,
339
- avmL2ToL1Msgs.length,
340
- finalPublicDataWrites.length,
341
- );
342
-
343
- const accumulatedData = new AvmAccumulatedData(
344
- /*noteHashes=*/ padArrayEnd(
345
- avmNoteHashes.map(n => n.value),
346
- Fr.zero(),
347
- MAX_NOTE_HASHES_PER_TX,
348
- ),
349
- /*nullifiers=*/ padArrayEnd(
350
- avmNullifiers.map(n => n.value),
351
- Fr.zero(),
352
- MAX_NULLIFIERS_PER_TX,
353
- ),
354
- /*l2ToL1Msgs=*/ padArrayEnd(avmL2ToL1Msgs, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
355
- /*publicLogs=*/ FlatPublicLogs.fromLogs(finalPublicLogs),
356
- /*publicDataWrites=*/ padArrayEnd(
357
- finalPublicDataWrites,
358
- PublicDataWrite.empty(),
359
- MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
360
- ),
361
- );
362
-
363
- // Now we finally have enough information to pad the trees.
364
- // NOTE(fcarreiro): a bit weird that a method that generates the PIs does this,
365
- // but we do need the end tree snapshots. We can consider moving things to the caller.
366
- const numNoteHashesToPad = MAX_NOTE_HASHES_PER_TX - avmNoteHashes.length;
367
- const numNullifiersToPad = MAX_NULLIFIERS_PER_TX - avmNullifiers.length;
368
- await stateManager.padTree(MerkleTreeId.NOTE_HASH_TREE, numNoteHashesToPad);
369
- await stateManager.padTree(MerkleTreeId.NULLIFIER_TREE, numNullifiersToPad);
370
- const endTreeSnapshots = await stateManager.getTreeSnapshots();
371
-
372
- // This converts the private accumulated data to the avm accumulated data format.
373
- const convertAccumulatedData = (from: PrivateToPublicAccumulatedData) =>
374
- new PrivateToAvmAccumulatedData(from.noteHashes, from.nullifiers, from.l2ToL1Msgs);
375
- const getPreviousAccumulatedDataArrayLengths = (from: PrivateToPublicAccumulatedData) =>
376
- new PrivateToAvmAccumulatedDataArrayLengths(
377
- countAccumulatedItems(from.noteHashes),
378
- countAccumulatedItems(from.nullifiers),
379
- countAccumulatedItems(from.l2ToL1Msgs),
380
- );
381
-
382
- return new AvmCircuitPublicInputs(
383
- this.globalVariables,
384
- this.protocolContracts,
385
- this.startTreeSnapshots,
386
- /*startGasUsed=*/ this.gasUsedByPrivate,
387
- this.gasSettings,
388
- computeEffectiveGasFees(this.globalVariables.gasFees, this.gasSettings),
389
- this.feePayer,
390
- this.proverId,
391
- /*publicCallRequestArrayLengths=*/ new PublicCallRequestArrayLengths(
392
- this.setupCallRequests.length,
393
- this.appLogicCallRequests.length,
394
- this.teardownCallRequests.length > 0,
395
- ),
396
- /*publicSetupCallRequests=*/ padArrayEnd(
397
- this.setupCallRequests.map(r => r.request),
398
- PublicCallRequest.empty(),
399
- MAX_ENQUEUED_CALLS_PER_TX,
400
- ),
401
- /*publicAppLogicCallRequests=*/ padArrayEnd(
402
- this.appLogicCallRequests.map(r => r.request),
403
- PublicCallRequest.empty(),
404
- MAX_ENQUEUED_CALLS_PER_TX,
405
- ),
406
- /*publicTeardownCallRequests=*/ this.teardownCallRequests.length > 0
407
- ? this.teardownCallRequests[0].request
408
- : PublicCallRequest.empty(),
409
- getPreviousAccumulatedDataArrayLengths(this.nonRevertibleAccumulatedDataFromPrivate),
410
- getPreviousAccumulatedDataArrayLengths(this.revertibleAccumulatedDataFromPrivate),
411
- convertAccumulatedData(this.nonRevertibleAccumulatedDataFromPrivate),
412
- convertAccumulatedData(this.revertibleAccumulatedDataFromPrivate),
413
- endTreeSnapshots,
414
- this.getTotalGasUsed(),
415
- accumulatedDataArrayLengths,
416
- accumulatedData,
417
- /*transactionFee=*/ this.getTransactionFeeUnsafe(),
418
- /*isReverted=*/ !this.revertCode.isOK(),
419
- );
420
- }
421
- }
422
-
423
- /**
424
- * Thin wrapper around the state manager to handle forking and merging for phases.
425
- *
426
- * This lets us keep track of whether the state has already been forked
427
- * so that we can conditionally fork at the start of a phase.
428
- *
429
- * There is a state manager that lives at the level of the entire transaction,
430
- * but for app logic and teardown the active state manager will be a fork of the
431
- * transaction level one.
432
- */
433
- class PhaseStateManager {
434
- private log: Logger;
435
-
436
- private currentlyActiveStateManager: PublicPersistableStateManager | undefined;
437
-
438
- constructor(private readonly txStateManager: PublicPersistableStateManager) {
439
- this.log = createLogger(`simulator:public_phase_state_manager`);
440
- }
441
-
442
- async fork() {
443
- assert(!this.currentlyActiveStateManager, 'Cannot fork when already forked');
444
- this.log.debug(`Forking phase state manager`);
445
- this.currentlyActiveStateManager = await this.txStateManager.fork();
446
- }
447
-
448
- getActiveStateManager() {
449
- return this.currentlyActiveStateManager || this.txStateManager;
450
- }
451
-
452
- isForked() {
453
- return !!this.currentlyActiveStateManager;
454
- }
455
-
456
- async mergeForkedState() {
457
- assert(this.currentlyActiveStateManager, 'No forked state to merge');
458
- this.log.debug(`Merging in forked state`);
459
- await this.txStateManager.merge(this.currentlyActiveStateManager!);
460
- // Drop the forked state manager now that it is merged
461
- this.currentlyActiveStateManager = undefined;
462
- }
463
-
464
- async discardForkedState() {
465
- this.log.debug(`Discarding forked state`);
466
- assert(this.currentlyActiveStateManager, 'No forked state to discard');
467
- await this.txStateManager.reject(this.currentlyActiveStateManager!);
468
- // Drop the forked state manager. We don't want it!
469
- this.currentlyActiveStateManager = undefined;
470
- }
471
- }
@@ -1,63 +0,0 @@
1
- import type { Fr } from '@aztec/foundation/fields';
2
- import type { Gas } from '@aztec/stdlib/gas';
3
- import type { MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
4
- import { type GlobalVariables, PublicCallRequestWithCalldata, TxExecutionPhase } from '@aztec/stdlib/tx';
5
- import { Attributes, type TelemetryClient, type Tracer, getTelemetryClient, trackSpan } from '@aztec/telemetry-client';
6
-
7
- import type { AvmFinalizedCallResult } from '../avm/avm_contract_call_result.js';
8
- import { ExecutorMetrics } from '../executor_metrics.js';
9
- import type { PublicContractsDB } from '../public_db_sources.js';
10
- import type { PublicPersistableStateManager } from '../state_manager/state_manager.js';
11
- import { MeasuredPublicTxSimulator } from './measured_public_tx_simulator.js';
12
- import { PublicTxContext } from './public_tx_context.js';
13
- import type { PublicTxSimulatorConfig } from './public_tx_simulator.js';
14
-
15
- /**
16
- * A public tx simulator that tracks runtime/production metrics with telemetry.
17
- */
18
- export class TelemetryPublicTxSimulator extends MeasuredPublicTxSimulator {
19
- /* tracer needed by trackSpans */
20
- public readonly tracer: Tracer;
21
-
22
- constructor(
23
- merkleTree: MerkleTreeWriteOperations,
24
- contractsDB: PublicContractsDB,
25
- globalVariables: GlobalVariables,
26
- telemetryClient: TelemetryClient = getTelemetryClient(),
27
- config?: Partial<PublicTxSimulatorConfig>,
28
- ) {
29
- const metrics = new ExecutorMetrics(telemetryClient, 'PublicTxSimulator');
30
- super(merkleTree, contractsDB, globalVariables, metrics, config);
31
- this.tracer = metrics.tracer;
32
- }
33
-
34
- @trackSpan('PublicTxSimulator.simulateEnqueuedCall', (phase, context, callRequest) => ({
35
- [Attributes.TX_HASH]: context.txHash.toString(),
36
- [Attributes.TARGET_ADDRESS]: callRequest.request.contractAddress.toString(),
37
- [Attributes.SENDER_ADDRESS]: callRequest.request.msgSender.toString(),
38
- [Attributes.SIMULATOR_PHASE]: TxExecutionPhase[phase].toString(),
39
- }))
40
- protected override async simulateEnqueuedCall(
41
- phase: TxExecutionPhase,
42
- context: PublicTxContext,
43
- callRequest: PublicCallRequestWithCalldata,
44
- ): Promise<AvmFinalizedCallResult> {
45
- return await super.simulateEnqueuedCall(phase, context, callRequest);
46
- }
47
-
48
- @trackSpan(
49
- 'PublicTxSimulator.simulateEnqueuedCallInternal',
50
- (_stateManager, _callRequest, _allocatedGas, _transactionFee, fnName) => ({
51
- [Attributes.APP_CIRCUIT_NAME]: fnName,
52
- }),
53
- )
54
- protected override async simulateEnqueuedCallInternal(
55
- stateManager: PublicPersistableStateManager,
56
- callRequest: PublicCallRequestWithCalldata,
57
- allocatedGas: Gas,
58
- transactionFee: Fr,
59
- fnName: string,
60
- ): Promise<AvmFinalizedCallResult> {
61
- return await super.simulateEnqueuedCallInternal(stateManager, callRequest, allocatedGas, transactionFee, fnName);
62
- }
63
- }