@aztec/simulator 0.0.1-commit.b6e433891 → 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 (363) hide show
  1. package/dest/client.d.ts +1 -3
  2. package/dest/client.d.ts.map +1 -1
  3. package/dest/client.js +0 -2
  4. package/dest/private/acvm_wasm.d.ts +1 -1
  5. package/dest/private/acvm_wasm.d.ts.map +1 -1
  6. package/dest/private/acvm_wasm.js +3 -1
  7. package/dest/private/circuit_recording/circuit_recorder.d.ts +36 -23
  8. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  9. package/dest/private/circuit_recording/circuit_recorder.js +65 -69
  10. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +7 -19
  11. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  12. package/dest/private/circuit_recording/file_circuit_recorder.js +38 -42
  13. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  14. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  15. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +11 -14
  16. package/dest/public/avm/testing/account_proof_fetcher.d.ts +2 -0
  17. package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
  18. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +2 -1
  19. package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +1 -0
  20. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.js +18 -3
  21. package/dest/public/avm/testing/utils.d.ts +32 -0
  22. package/dest/public/avm/testing/utils.d.ts.map +1 -0
  23. package/dest/public/avm/{fixtures → testing}/utils.js +4 -34
  24. package/dest/public/avm_simulator.d.ts +28 -0
  25. package/dest/public/avm_simulator.d.ts.map +1 -0
  26. package/dest/public/avm_simulator.js +4 -0
  27. package/dest/public/avm_simulator_pool.d.ts +45 -0
  28. package/dest/public/avm_simulator_pool.d.ts.map +1 -0
  29. package/dest/public/avm_simulator_pool.js +197 -0
  30. package/dest/public/cdb/generated/api_types.d.ts +171 -0
  31. package/dest/public/cdb/generated/api_types.d.ts.map +1 -0
  32. package/dest/public/cdb/generated/api_types.js +314 -0
  33. package/dest/public/cdb/generated/server.d.ts +26 -0
  34. package/dest/public/cdb/generated/server.d.ts.map +1 -0
  35. package/dest/public/cdb/generated/server.js +135 -0
  36. package/dest/public/cdb_ipc_server.d.ts +33 -0
  37. package/dest/public/cdb_ipc_server.d.ts.map +1 -0
  38. package/dest/public/cdb_ipc_server.js +153 -0
  39. package/dest/public/contracts_db_checkpoint.d.ts +2 -2
  40. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -1
  41. package/dest/public/contracts_db_checkpoint.js +1 -1
  42. package/dest/public/fixtures/amm_test.js +2 -2
  43. package/dest/public/fixtures/bulk_test.d.ts +1 -1
  44. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  45. package/dest/public/fixtures/bulk_test.js +33 -6
  46. package/dest/public/fixtures/custom_bytecode_tester.d.ts +1 -1
  47. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  48. package/dest/public/fixtures/custom_bytecode_tester.js +2 -2
  49. package/dest/public/fixtures/index.d.ts +2 -4
  50. package/dest/public/fixtures/index.d.ts.map +1 -1
  51. package/dest/public/fixtures/index.js +1 -3
  52. package/dest/public/fixtures/public_processor_test_env.d.ts +30 -0
  53. package/dest/public/fixtures/public_processor_test_env.d.ts.map +1 -0
  54. package/dest/public/fixtures/public_processor_test_env.js +73 -0
  55. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +11 -7
  56. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  57. package/dest/public/fixtures/public_tx_simulation_tester.js +33 -43
  58. package/dest/public/fixtures/simple_contract_data_source.js +1 -1
  59. package/dest/public/fixtures/token_test.js +3 -3
  60. package/dest/public/fixtures/utils.d.ts +1 -1
  61. package/dest/public/fixtures/utils.d.ts.map +1 -1
  62. package/dest/public/fixtures/utils.js +16 -15
  63. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +11 -4
  64. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
  65. package/dest/public/fuzzing/avm_fuzzer_simulator.js +24 -10
  66. package/dest/public/fuzzing/avm_simulator_bin.js +4 -4
  67. package/dest/public/index.d.ts +5 -2
  68. package/dest/public/index.d.ts.map +1 -1
  69. package/dest/public/index.js +2 -1
  70. package/dest/public/public_db_sources.d.ts +6 -3
  71. package/dest/public/public_db_sources.d.ts.map +1 -1
  72. package/dest/public/public_db_sources.js +16 -10
  73. package/dest/public/public_processor/guarded_merkle_tree.d.ts +4 -3
  74. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  75. package/dest/public/public_processor/guarded_merkle_tree.js +3 -0
  76. package/dest/public/public_processor/public_processor.d.ts +11 -6
  77. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  78. package/dest/public/public_processor/public_processor.js +68 -39
  79. package/dest/public/public_processor/public_processor_metrics.d.ts +4 -1
  80. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  81. package/dest/public/public_processor/public_processor_metrics.js +8 -0
  82. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +17 -0
  83. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
  84. package/dest/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.js → dumping_public_tx_simulator.js} +10 -23
  85. package/dest/public/public_tx_simulator/factories.d.ts +8 -8
  86. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
  87. package/dest/public/public_tx_simulator/factories.js +8 -8
  88. package/dest/public/public_tx_simulator/index.d.ts +4 -6
  89. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  90. package/dest/public/public_tx_simulator/index.js +2 -4
  91. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +42 -71
  92. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  93. package/dest/public/public_tx_simulator/public_tx_simulator.js +98 -318
  94. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +24 -0
  95. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
  96. package/dest/public/public_tx_simulator/public_tx_simulator_base.js +31 -0
  97. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +5 -5
  98. package/dest/public/test_executor_metrics.d.ts +1 -6
  99. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  100. package/dest/public/test_executor_metrics.js +0 -22
  101. package/package.json +22 -18
  102. package/src/client.ts +0 -2
  103. package/src/private/acvm_wasm.ts +4 -1
  104. package/src/private/circuit_recording/circuit_recorder.ts +84 -78
  105. package/src/private/circuit_recording/file_circuit_recorder.ts +38 -48
  106. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +9 -15
  107. package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +23 -3
  108. package/src/public/avm/{fixtures → testing}/utils.ts +4 -40
  109. package/src/public/avm_simulator.ts +29 -0
  110. package/src/public/avm_simulator_pool.ts +226 -0
  111. package/src/public/cdb/generated/api_types.ts +457 -0
  112. package/src/public/cdb/generated/server.ts +109 -0
  113. package/src/public/cdb_ipc_server.ts +197 -0
  114. package/src/public/contracts_db_checkpoint.ts +1 -1
  115. package/src/public/fixtures/amm_test.ts +2 -2
  116. package/src/public/fixtures/bulk_test.ts +31 -6
  117. package/src/public/fixtures/custom_bytecode_tester.ts +2 -2
  118. package/src/public/fixtures/index.ts +1 -3
  119. package/src/public/fixtures/public_processor_test_env.ts +88 -0
  120. package/src/public/fixtures/public_tx_simulation_tester.ts +41 -60
  121. package/src/public/fixtures/simple_contract_data_source.ts +1 -1
  122. package/src/public/fixtures/token_test.ts +3 -3
  123. package/src/public/fixtures/utils.ts +18 -20
  124. package/src/public/fuzzing/avm_fuzzer_simulator.ts +25 -10
  125. package/src/public/fuzzing/avm_simulator_bin.ts +3 -5
  126. package/src/public/index.ts +7 -3
  127. package/src/public/public_db_sources.ts +21 -14
  128. package/src/public/public_processor/guarded_merkle_tree.ts +5 -2
  129. package/src/public/public_processor/public_processor.ts +90 -47
  130. package/src/public/public_processor/public_processor_metrics.ts +12 -0
  131. package/src/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.ts → dumping_public_tx_simulator.ts} +15 -31
  132. package/src/public/public_tx_simulator/factories.ts +27 -10
  133. package/src/public/public_tx_simulator/index.ts +6 -5
  134. package/src/public/public_tx_simulator/public_tx_simulator.ts +139 -476
  135. package/src/public/public_tx_simulator/public_tx_simulator_base.ts +37 -0
  136. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +5 -5
  137. package/src/public/test_executor_metrics.ts +0 -24
  138. package/dest/public/avm/avm_context.d.ts +0 -41
  139. package/dest/public/avm/avm_context.d.ts.map +0 -1
  140. package/dest/public/avm/avm_context.js +0 -44
  141. package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
  142. package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
  143. package/dest/public/avm/avm_contract_call_result.js +0 -54
  144. package/dest/public/avm/avm_execution_environment.d.ts +0 -24
  145. package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
  146. package/dest/public/avm/avm_execution_environment.js +0 -33
  147. package/dest/public/avm/avm_gas.d.ts +0 -44
  148. package/dest/public/avm/avm_gas.d.ts.map +0 -1
  149. package/dest/public/avm/avm_gas.js +0 -195
  150. package/dest/public/avm/avm_machine_state.d.ts +0 -98
  151. package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
  152. package/dest/public/avm/avm_machine_state.js +0 -110
  153. package/dest/public/avm/avm_memory_types.d.ts +0 -275
  154. package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
  155. package/dest/public/avm/avm_memory_types.js +0 -354
  156. package/dest/public/avm/avm_simulator.d.ts +0 -41
  157. package/dest/public/avm/avm_simulator.d.ts.map +0 -1
  158. package/dest/public/avm/avm_simulator.js +0 -192
  159. package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
  160. package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
  161. package/dest/public/avm/avm_simulator_interface.js +0 -3
  162. package/dest/public/avm/calldata.d.ts +0 -51
  163. package/dest/public/avm/calldata.d.ts.map +0 -1
  164. package/dest/public/avm/calldata.js +0 -63
  165. package/dest/public/avm/errors.d.ts +0 -104
  166. package/dest/public/avm/errors.d.ts.map +0 -1
  167. package/dest/public/avm/errors.js +0 -141
  168. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +0 -2
  169. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +0 -1
  170. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +0 -22
  171. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  172. package/dest/public/avm/fixtures/avm_simulation_tester.js +0 -84
  173. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  174. package/dest/public/avm/fixtures/initializers.d.ts +0 -42
  175. package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
  176. package/dest/public/avm/fixtures/initializers.js +0 -45
  177. package/dest/public/avm/fixtures/utils.d.ts +0 -39
  178. package/dest/public/avm/fixtures/utils.d.ts.map +0 -1
  179. package/dest/public/avm/index.d.ts +0 -2
  180. package/dest/public/avm/index.d.ts.map +0 -1
  181. package/dest/public/avm/index.js +0 -1
  182. package/dest/public/avm/opcodes/accrued_substate.d.ts +0 -74
  183. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
  184. package/dest/public/avm/opcodes/accrued_substate.js +0 -254
  185. package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
  186. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
  187. package/dest/public/avm/opcodes/addressing_mode.js +0 -94
  188. package/dest/public/avm/opcodes/arithmetic.d.ts +0 -49
  189. package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
  190. package/dest/public/avm/opcodes/arithmetic.js +0 -97
  191. package/dest/public/avm/opcodes/bitwise.d.ts +0 -42
  192. package/dest/public/avm/opcodes/bitwise.d.ts.map +0 -1
  193. package/dest/public/avm/opcodes/bitwise.js +0 -99
  194. package/dest/public/avm/opcodes/comparators.d.ts +0 -25
  195. package/dest/public/avm/opcodes/comparators.d.ts.map +0 -1
  196. package/dest/public/avm/opcodes/comparators.js +0 -43
  197. package/dest/public/avm/opcodes/contract.d.ts +0 -20
  198. package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
  199. package/dest/public/avm/opcodes/contract.js +0 -65
  200. package/dest/public/avm/opcodes/control_flow.d.ts +0 -41
  201. package/dest/public/avm/opcodes/control_flow.d.ts.map +0 -1
  202. package/dest/public/avm/opcodes/control_flow.js +0 -107
  203. package/dest/public/avm/opcodes/conversion.d.ts +0 -18
  204. package/dest/public/avm/opcodes/conversion.d.ts.map +0 -1
  205. package/dest/public/avm/opcodes/conversion.js +0 -333
  206. package/dest/public/avm/opcodes/ec_add.d.ts +0 -19
  207. package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
  208. package/dest/public/avm/opcodes/ec_add.js +0 -93
  209. package/dest/public/avm/opcodes/environment_getters.d.ts +0 -28
  210. package/dest/public/avm/opcodes/environment_getters.d.ts.map +0 -1
  211. package/dest/public/avm/opcodes/environment_getters.js +0 -77
  212. package/dest/public/avm/opcodes/external_calls.d.ts +0 -59
  213. package/dest/public/avm/opcodes/external_calls.d.ts.map +0 -1
  214. package/dest/public/avm/opcodes/external_calls.js +0 -210
  215. package/dest/public/avm/opcodes/hashing.d.ts +0 -36
  216. package/dest/public/avm/opcodes/hashing.d.ts.map +0 -1
  217. package/dest/public/avm/opcodes/hashing.js +0 -119
  218. package/dest/public/avm/opcodes/index.d.ts +0 -16
  219. package/dest/public/avm/opcodes/index.d.ts.map +0 -1
  220. package/dest/public/avm/opcodes/index.js +0 -15
  221. package/dest/public/avm/opcodes/instruction.d.ts +0 -74
  222. package/dest/public/avm/opcodes/instruction.d.ts.map +0 -1
  223. package/dest/public/avm/opcodes/instruction.js +0 -95
  224. package/dest/public/avm/opcodes/instruction_impl.d.ts +0 -19
  225. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +0 -1
  226. package/dest/public/avm/opcodes/instruction_impl.js +0 -30
  227. package/dest/public/avm/opcodes/memory.d.ts +0 -74
  228. package/dest/public/avm/opcodes/memory.d.ts.map +0 -1
  229. package/dest/public/avm/opcodes/memory.js +0 -257
  230. package/dest/public/avm/opcodes/misc.d.ts +0 -18
  231. package/dest/public/avm/opcodes/misc.d.ts.map +0 -1
  232. package/dest/public/avm/opcodes/misc.js +0 -73
  233. package/dest/public/avm/opcodes/storage.d.ts +0 -25
  234. package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
  235. package/dest/public/avm/opcodes/storage.js +0 -78
  236. package/dest/public/avm/revert_reason.d.ts +0 -18
  237. package/dest/public/avm/revert_reason.d.ts.map +0 -1
  238. package/dest/public/avm/revert_reason.js +0 -39
  239. package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -26
  240. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +0 -1
  241. package/dest/public/avm/serialization/buffer_cursor.js +0 -99
  242. package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -17
  243. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  244. package/dest/public/avm/serialization/bytecode_serialization.js +0 -336
  245. package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -114
  246. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +0 -1
  247. package/dest/public/avm/serialization/instruction_serialization.js +0 -261
  248. package/dest/public/avm/test_utils.d.ts +0 -15
  249. package/dest/public/avm/test_utils.d.ts.map +0 -1
  250. package/dest/public/avm/test_utils.js +0 -44
  251. package/dest/public/debug_fn_name.d.ts +0 -18
  252. package/dest/public/debug_fn_name.d.ts.map +0 -1
  253. package/dest/public/debug_fn_name.js +0 -37
  254. package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -12
  255. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
  256. package/dest/public/fixtures/custom_bytecode_tests.js +0 -174
  257. package/dest/public/fixtures/minimal_public_tx.d.ts +0 -4
  258. package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
  259. package/dest/public/fixtures/minimal_public_tx.js +0 -19
  260. package/dest/public/fixtures/opcode_spammer.d.ts +0 -122
  261. package/dest/public/fixtures/opcode_spammer.d.ts.map +0 -1
  262. package/dest/public/fixtures/opcode_spammer.js +0 -1653
  263. package/dest/public/hinting_db_sources.d.ts +0 -80
  264. package/dest/public/hinting_db_sources.d.ts.map +0 -1
  265. package/dest/public/hinting_db_sources.js +0 -356
  266. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +0 -19
  267. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +0 -1
  268. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +0 -98
  269. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -53
  270. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +0 -1
  271. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +0 -131
  272. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +0 -42
  273. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +0 -1
  274. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +0 -86
  275. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +0 -30
  276. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +0 -1
  277. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +0 -171
  278. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +0 -23
  279. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +0 -1
  280. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -31
  281. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +0 -1
  282. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +0 -51
  283. package/dest/public/public_tx_simulator/public_tx_context.d.ts +0 -131
  284. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +0 -1
  285. package/dest/public/public_tx_simulator/public_tx_context.js +0 -300
  286. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +0 -21
  287. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +0 -1
  288. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +0 -415
  289. package/dest/public/side_effect_trace.d.ts +0 -87
  290. package/dest/public/side_effect_trace.d.ts.map +0 -1
  291. package/dest/public/side_effect_trace.js +0 -199
  292. package/dest/public/side_effect_trace_interface.d.ts +0 -22
  293. package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
  294. package/dest/public/side_effect_trace_interface.js +0 -1
  295. package/dest/public/state_manager/index.d.ts +0 -2
  296. package/dest/public/state_manager/index.d.ts.map +0 -1
  297. package/dest/public/state_manager/index.js +0 -1
  298. package/dest/public/state_manager/nullifiers.d.ts +0 -61
  299. package/dest/public/state_manager/nullifiers.d.ts.map +0 -1
  300. package/dest/public/state_manager/nullifiers.js +0 -92
  301. package/dest/public/state_manager/public_storage.d.ts +0 -66
  302. package/dest/public/state_manager/public_storage.d.ts.map +0 -1
  303. package/dest/public/state_manager/public_storage.js +0 -145
  304. package/dest/public/state_manager/state_manager.d.ts +0 -170
  305. package/dest/public/state_manager/state_manager.d.ts.map +0 -1
  306. package/dest/public/state_manager/state_manager.js +0 -402
  307. package/src/public/avm/avm_context.ts +0 -61
  308. package/src/public/avm/avm_contract_call_result.ts +0 -69
  309. package/src/public/avm/avm_execution_environment.ts +0 -51
  310. package/src/public/avm/avm_gas.ts +0 -183
  311. package/src/public/avm/avm_machine_state.ts +0 -170
  312. package/src/public/avm/avm_memory_types.ts +0 -440
  313. package/src/public/avm/avm_simulator.ts +0 -279
  314. package/src/public/avm/avm_simulator_interface.ts +0 -8
  315. package/src/public/avm/calldata.ts +0 -100
  316. package/src/public/avm/errors.ts +0 -177
  317. package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -122
  318. package/src/public/avm/fixtures/initializers.ts +0 -103
  319. package/src/public/avm/index.ts +0 -1
  320. package/src/public/avm/opcodes/accrued_substate.ts +0 -285
  321. package/src/public/avm/opcodes/addressing_mode.ts +0 -111
  322. package/src/public/avm/opcodes/arithmetic.ts +0 -129
  323. package/src/public/avm/opcodes/bitwise.ts +0 -113
  324. package/src/public/avm/opcodes/comparators.ts +0 -55
  325. package/src/public/avm/opcodes/contract.ts +0 -72
  326. package/src/public/avm/opcodes/control_flow.ts +0 -123
  327. package/src/public/avm/opcodes/conversion.ts +0 -104
  328. package/src/public/avm/opcodes/ec_add.ts +0 -105
  329. package/src/public/avm/opcodes/environment_getters.ts +0 -87
  330. package/src/public/avm/opcodes/external_calls.ts +0 -262
  331. package/src/public/avm/opcodes/hashing.ts +0 -151
  332. package/src/public/avm/opcodes/index.ts +0 -15
  333. package/src/public/avm/opcodes/instruction.ts +0 -136
  334. package/src/public/avm/opcodes/instruction_impl.ts +0 -36
  335. package/src/public/avm/opcodes/memory.ts +0 -293
  336. package/src/public/avm/opcodes/misc.ts +0 -102
  337. package/src/public/avm/opcodes/storage.ts +0 -95
  338. package/src/public/avm/revert_reason.ts +0 -58
  339. package/src/public/avm/serialization/buffer_cursor.ts +0 -118
  340. package/src/public/avm/serialization/bytecode_serialization.ts +0 -215
  341. package/src/public/avm/serialization/instruction_serialization.ts +0 -249
  342. package/src/public/avm/test_utils.ts +0 -64
  343. package/src/public/debug_fn_name.ts +0 -52
  344. package/src/public/fixtures/custom_bytecode_tests.ts +0 -228
  345. package/src/public/fixtures/minimal_public_tx.ts +0 -26
  346. package/src/public/fixtures/opcode_spammer.ts +0 -1717
  347. package/src/public/hinting_db_sources.ts +0 -609
  348. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +0 -124
  349. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -210
  350. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +0 -134
  351. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +0 -239
  352. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -105
  353. package/src/public/public_tx_simulator/public_tx_context.ts +0 -484
  354. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
  355. package/src/public/side_effect_trace.ts +0 -293
  356. package/src/public/side_effect_trace_interface.ts +0 -28
  357. package/src/public/state_manager/index.ts +0 -1
  358. package/src/public/state_manager/nullifiers.ts +0 -103
  359. package/src/public/state_manager/public_storage.ts +0 -174
  360. package/src/public/state_manager/state_manager.ts +0 -569
  361. /package/dest/public/avm/{fixtures → testing}/account_proof_fetcher.js +0 -0
  362. /package/src/public/avm/{fixtures → testing}/account_proof.json +0 -0
  363. /package/src/public/avm/{fixtures → testing}/account_proof_fetcher.ts +0 -0
@@ -1,609 +0,0 @@
1
- import type { BlockNumber } from '@aztec/foundation/branded-types';
2
- import { sha256Trunc } from '@aztec/foundation/crypto/sha256';
3
- import { Fr } from '@aztec/foundation/curves/bn254';
4
- import { type Logger, createLogger } from '@aztec/foundation/log';
5
- import type { IndexedTreeLeafPreimage, SiblingPath } from '@aztec/foundation/trees';
6
- import type { FunctionSelector } from '@aztec/stdlib/abi';
7
- import {
8
- AvmAppendLeavesHint,
9
- AvmBytecodeCommitmentHint,
10
- AvmCommitCheckpointHint,
11
- AvmContractClassHint,
12
- AvmContractDbCommitCheckpointHint,
13
- AvmContractDbCreateCheckpointHint,
14
- AvmContractDbRevertCheckpointHint,
15
- AvmContractInstanceHint,
16
- AvmCreateCheckpointHint,
17
- AvmDebugFunctionNameHint,
18
- type AvmExecutionHints,
19
- AvmGetLeafPreimageHintNullifierTree,
20
- AvmGetLeafPreimageHintPublicDataTree,
21
- AvmGetLeafValueHint,
22
- AvmGetPreviousValueIndexHint,
23
- AvmGetSiblingPathHint,
24
- AvmRevertCheckpointHint,
25
- AvmSequentialInsertHintNullifierTree,
26
- AvmSequentialInsertHintPublicDataTree,
27
- } from '@aztec/stdlib/avm';
28
- import type { AztecAddress } from '@aztec/stdlib/aztec-address';
29
- import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
30
- import {
31
- AppendOnlyTreeSnapshot,
32
- type BatchInsertionResult,
33
- type IndexedTreeId,
34
- MerkleTreeId,
35
- type MerkleTreeLeafType,
36
- type MerkleTreeWriteOperations,
37
- NullifierLeaf,
38
- NullifierLeafPreimage,
39
- PublicDataTreeLeaf,
40
- PublicDataTreeLeafPreimage,
41
- type SequentialInsertionResult,
42
- type TreeHeights,
43
- getTreeName,
44
- merkleTreeIds,
45
- } from '@aztec/stdlib/trees';
46
- import { TreeSnapshots } from '@aztec/stdlib/tx';
47
- import type { UInt64 } from '@aztec/stdlib/types';
48
- import type { WorldStateRevision } from '@aztec/stdlib/world-state';
49
-
50
- import { strict as assert } from 'assert';
51
-
52
- import type { PublicContractsDBInterface } from './db_interfaces.js';
53
-
54
- /**
55
- * A public contracts database that forwards requests and collects AVM hints.
56
- */
57
- export class HintingPublicContractsDB implements PublicContractsDBInterface {
58
- private static readonly log: Logger = createLogger('simulator:hinting-public-contracts-db');
59
-
60
- private checkpointActionCounter: number = 0;
61
- private nextCheckpointId: number = 1;
62
- private checkpointStack: number[] = [0];
63
-
64
- constructor(
65
- private readonly db: PublicContractsDBInterface,
66
- private hints: AvmExecutionHints,
67
- ) {}
68
-
69
- public async getContractInstance(
70
- address: AztecAddress,
71
- timestamp: UInt64,
72
- ): Promise<ContractInstanceWithAddress | undefined> {
73
- const instance = await this.db.getContractInstance(address, timestamp);
74
- if (instance) {
75
- const hintKey = this.getHintKey();
76
-
77
- this.hints.contractInstances.push(
78
- new AvmContractInstanceHint(
79
- hintKey,
80
- instance.address,
81
- instance.salt,
82
- instance.deployer,
83
- instance.currentContractClassId,
84
- instance.originalContractClassId,
85
- instance.initializationHash,
86
- instance.publicKeys,
87
- ),
88
- );
89
-
90
- HintingPublicContractsDB.log.trace(
91
- `[getContractInstance:${hintKey}] Added contract instance ${instance.address.toString()} to hints.`,
92
- );
93
- }
94
- return instance;
95
- }
96
-
97
- public async getContractClass(contractClassId: Fr): Promise<ContractClassPublic | undefined> {
98
- const contractClass = await this.db.getContractClass(contractClassId);
99
- if (contractClass) {
100
- const hintKey = this.getHintKey();
101
- this.hints.contractClasses.push(
102
- new AvmContractClassHint(
103
- hintKey,
104
- contractClass.id,
105
- contractClass.artifactHash,
106
- contractClass.privateFunctionsRoot,
107
- contractClass.packedBytecode,
108
- ),
109
- );
110
-
111
- HintingPublicContractsDB.log.trace(
112
- `[getContractClass:${hintKey}] Added contract class ${contractClassId.toString()} to hints.`,
113
- );
114
- }
115
- return contractClass;
116
- }
117
-
118
- public async getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined> {
119
- const commitment = await this.db.getBytecodeCommitment(contractClassId);
120
- if (commitment) {
121
- const hintKey = this.getHintKey();
122
- this.hints.bytecodeCommitments.push(new AvmBytecodeCommitmentHint(hintKey, contractClassId, commitment));
123
-
124
- HintingPublicContractsDB.log.trace(
125
- `[getBytecodeCommitment:${hintKey}] Added bytecode commitment ${commitment.toString()} to hints for contract class ${contractClassId.toString()}.`,
126
- );
127
- }
128
- return commitment;
129
- }
130
-
131
- public async getDebugFunctionName(
132
- contractAddress: AztecAddress,
133
- selector: FunctionSelector,
134
- ): Promise<string | undefined> {
135
- const name = await this.db.getDebugFunctionName(contractAddress, selector);
136
- if (name) {
137
- HintingPublicContractsDB.log.debug(
138
- `[getDebugFunctionName] Adding debug function name ${name} to hints for contract ${contractAddress.toString()} and selector ${selector.toString()}.`,
139
- );
140
- // We hint selector as a field to make things way simpler in C++.
141
- this.hints.debugFunctionNames.push(new AvmDebugFunctionNameHint(contractAddress, selector.toField(), name));
142
- }
143
- return name;
144
- }
145
-
146
- public createCheckpoint(): void {
147
- const hintKey = this.getHintKey();
148
- this.checkpointActionCounter++;
149
- const oldCheckpointId = this.getCurrentCheckpointId();
150
-
151
- this.db.createCheckpoint();
152
-
153
- const newCheckpointId = this.nextCheckpointId++;
154
- this.checkpointStack.push(newCheckpointId);
155
-
156
- this.hints.contractDbCreateCheckpointHints.push(
157
- new AvmContractDbCreateCheckpointHint(hintKey, oldCheckpointId, newCheckpointId),
158
- );
159
-
160
- HintingPublicContractsDB.log.trace(
161
- `[createCheckpoint:${hintKey}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId}.`,
162
- );
163
- }
164
-
165
- public commitCheckpoint(): void {
166
- const hintKey = this.getHintKey();
167
- this.checkpointActionCounter++;
168
- const oldCheckpointId = this.getCurrentCheckpointId();
169
-
170
- this.db.commitCheckpoint();
171
-
172
- this.checkpointStack.pop();
173
- const newCheckpointId = this.getCurrentCheckpointId();
174
-
175
- this.hints.contractDbCommitCheckpointHints.push(
176
- new AvmContractDbCommitCheckpointHint(hintKey, oldCheckpointId, newCheckpointId),
177
- );
178
-
179
- HintingPublicContractsDB.log.trace(
180
- `[commitCheckpoint:${hintKey}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId}.`,
181
- );
182
- }
183
-
184
- public revertCheckpoint(): void {
185
- const hintKey = this.getHintKey();
186
- this.checkpointActionCounter++;
187
- const oldCheckpointId = this.getCurrentCheckpointId();
188
-
189
- this.db.revertCheckpoint();
190
-
191
- this.checkpointStack.pop();
192
- const newCheckpointId = this.getCurrentCheckpointId();
193
-
194
- this.hints.contractDbRevertCheckpointHints.push(
195
- new AvmContractDbRevertCheckpointHint(hintKey, oldCheckpointId, newCheckpointId),
196
- );
197
-
198
- HintingPublicContractsDB.log.trace(
199
- `[revertCheckpoint:${hintKey}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId}.`,
200
- );
201
- }
202
-
203
- // Private methods.
204
- private getHintKey(): number {
205
- return this.checkpointActionCounter;
206
- }
207
-
208
- private getCurrentCheckpointId(): number {
209
- return this.checkpointStack[this.checkpointStack.length - 1];
210
- }
211
- }
212
-
213
- /**
214
- * A low-level merkle DB that collects hints.
215
- */
216
- export class HintingMerkleWriteOperations implements MerkleTreeWriteOperations {
217
- private static readonly log: Logger = createLogger('simulator:hinting-merkle-db');
218
- // This stack is only for debugging purposes.
219
- // The top of the stack is the current checkpoint id.
220
- // We need the stack to be non-empty and use 0 as an arbitrary initial checkpoint id.
221
- // This is not necessarily a checkpoint that happened, but whatever tree state we start with.
222
- private checkpointStack: number[] = [0];
223
- private nextCheckpointId: number = 1;
224
- private checkpointActionCounter: number = 0; // yes, a side-effect counter.
225
-
226
- public static async create(db: MerkleTreeWriteOperations, hints: AvmExecutionHints) {
227
- const hintingTreesDB = new HintingMerkleWriteOperations(db, hints);
228
- const startStateReference = await db.getStateReference();
229
- hints.startingTreeRoots = new TreeSnapshots(
230
- startStateReference.l1ToL2MessageTree,
231
- startStateReference.partial.noteHashTree,
232
- startStateReference.partial.nullifierTree,
233
- startStateReference.partial.publicDataTree,
234
- );
235
-
236
- return hintingTreesDB;
237
- }
238
-
239
- // Use create() to instantiate.
240
- private constructor(
241
- private db: MerkleTreeWriteOperations,
242
- private hints: AvmExecutionHints,
243
- ) {}
244
-
245
- // Getters.
246
- public async getSiblingPath<ID extends MerkleTreeId>(
247
- treeId: ID,
248
- index: bigint,
249
- ): Promise<SiblingPath<TreeHeights[ID]>> {
250
- const path = await this.db.getSiblingPath(treeId, index);
251
- const key = await this.getHintKey(treeId);
252
- this.hints.getSiblingPathHints.push(new AvmGetSiblingPathHint(key, treeId, index, path.toFields()));
253
- return Promise.resolve(path);
254
- }
255
-
256
- public async getPreviousValueIndex<ID extends IndexedTreeId>(
257
- treeId: ID,
258
- value: bigint,
259
- ): Promise<
260
- | {
261
- index: bigint;
262
- alreadyPresent: boolean;
263
- }
264
- | undefined
265
- > {
266
- const result = await this.db.getPreviousValueIndex(treeId, value);
267
- if (result === undefined) {
268
- throw new Error(
269
- `getPreviousValueIndex(${getTreeName(
270
- treeId,
271
- )}, ${value}}) returned undefined. Possible wrong tree setup or corrupted state.`,
272
- );
273
- }
274
- const key = await this.getHintKey(treeId);
275
- this.hints.getPreviousValueIndexHints.push(
276
- new AvmGetPreviousValueIndexHint(key, treeId, new Fr(value), result.index, result.alreadyPresent),
277
- );
278
- return result;
279
- }
280
-
281
- public async getLeafPreimage<ID extends IndexedTreeId>(
282
- treeId: ID,
283
- index: bigint,
284
- ): Promise<IndexedTreeLeafPreimage | undefined> {
285
- const preimage = await this.db.getLeafPreimage<ID>(treeId, index);
286
- if (preimage) {
287
- const key = await this.getHintKey(treeId);
288
-
289
- switch (treeId) {
290
- case MerkleTreeId.PUBLIC_DATA_TREE:
291
- this.hints.getLeafPreimageHintsPublicDataTree.push(
292
- new AvmGetLeafPreimageHintPublicDataTree(key, index, preimage as PublicDataTreeLeafPreimage),
293
- );
294
- break;
295
- case MerkleTreeId.NULLIFIER_TREE:
296
- this.hints.getLeafPreimageHintsNullifierTree.push(
297
- new AvmGetLeafPreimageHintNullifierTree(key, index, preimage as NullifierLeafPreimage),
298
- );
299
- break;
300
- default:
301
- // Use getLeafValue for the other trees.
302
- throw new Error('getLeafPreimage only supported for PublicDataTree and NullifierTree!');
303
- break;
304
- }
305
- }
306
-
307
- return preimage;
308
- }
309
-
310
- public async getLeafValue<ID extends MerkleTreeId>(
311
- treeId: ID,
312
- index: bigint,
313
- ): Promise<MerkleTreeLeafType<typeof treeId> | undefined> {
314
- // Use getLeafPreimage for PublicDataTree and NullifierTree.
315
- assert(treeId == MerkleTreeId.NOTE_HASH_TREE || treeId == MerkleTreeId.L1_TO_L2_MESSAGE_TREE);
316
-
317
- const value = await this.db.getLeafValue<ID>(treeId, index);
318
- if (value) {
319
- const key = await this.getHintKey(treeId);
320
- // We can cast to Fr because we know the type of the tree.
321
- this.hints.getLeafValueHints.push(new AvmGetLeafValueHint(key, treeId, index, value as Fr));
322
- }
323
-
324
- return value;
325
- }
326
-
327
- // State modification.
328
- // FIXME(fcarreiro): This is a horrible interface (in the merkle ops). It's receiving the leaves as buffers,
329
- // from a leaf class that is NOT the one that will be used to write. Make this type safe.
330
- public async sequentialInsert<TreeHeight extends number, ID extends IndexedTreeId>(
331
- treeId: ID,
332
- leaves: Buffer[],
333
- ): Promise<SequentialInsertionResult<TreeHeight>> {
334
- // Use appendLeaf for NoteHashTree and L1ToL2MessageTree.
335
- assert(treeId == MerkleTreeId.PUBLIC_DATA_TREE || treeId == MerkleTreeId.NULLIFIER_TREE);
336
- // We only support 1 leaf at a time for now. Can easily be extended.
337
- assert(leaves.length === 1, 'sequentialInsert supports only one leaf at a time!');
338
-
339
- const beforeState = await this.getHintKey(treeId);
340
-
341
- const result = await this.db.sequentialInsert<TreeHeight, ID>(treeId, leaves);
342
-
343
- const afterState = await this.getHintKey(treeId);
344
- HintingMerkleWriteOperations.logTreeChange('sequentialInsert', beforeState, afterState, treeId);
345
-
346
- switch (treeId) {
347
- case MerkleTreeId.PUBLIC_DATA_TREE:
348
- this.hints.sequentialInsertHintsPublicDataTree.push(
349
- new AvmSequentialInsertHintPublicDataTree(
350
- beforeState,
351
- afterState,
352
- treeId,
353
- PublicDataTreeLeaf.fromBuffer(leaves[0]),
354
- {
355
- leaf: result.lowLeavesWitnessData[0].leafPreimage as PublicDataTreeLeafPreimage,
356
- index: result.lowLeavesWitnessData[0].index,
357
- path: result.lowLeavesWitnessData[0].siblingPath.toFields(),
358
- },
359
- {
360
- leaf: result.insertionWitnessData[0].leafPreimage as PublicDataTreeLeafPreimage,
361
- index: result.insertionWitnessData[0].index,
362
- path: result.insertionWitnessData[0].siblingPath.toFields(),
363
- },
364
- ),
365
- );
366
- break;
367
- case MerkleTreeId.NULLIFIER_TREE:
368
- this.hints.sequentialInsertHintsNullifierTree.push(
369
- new AvmSequentialInsertHintNullifierTree(
370
- beforeState,
371
- afterState,
372
- treeId,
373
- NullifierLeaf.fromBuffer(leaves[0]),
374
- {
375
- leaf: result.lowLeavesWitnessData[0].leafPreimage as NullifierLeafPreimage,
376
- index: result.lowLeavesWitnessData[0].index,
377
- path: result.lowLeavesWitnessData[0].siblingPath.toFields(),
378
- },
379
- {
380
- leaf: result.insertionWitnessData[0].leafPreimage as NullifierLeafPreimage,
381
- index: result.insertionWitnessData[0].index,
382
- path: result.insertionWitnessData[0].siblingPath.toFields(),
383
- },
384
- ),
385
- );
386
- break;
387
- default:
388
- throw new Error('sequentialInsert only supported for PublicDataTree and NullifierTree!');
389
- break;
390
- }
391
-
392
- return result;
393
- }
394
-
395
- public async appendLeaves<ID extends MerkleTreeId>(treeId: ID, leaves: MerkleTreeLeafType<ID>[]): Promise<void> {
396
- // Use sequentialInsert for PublicDataTree and NullifierTree.
397
- assert(treeId == MerkleTreeId.NOTE_HASH_TREE || treeId == MerkleTreeId.L1_TO_L2_MESSAGE_TREE);
398
-
399
- // We need to process each leaf individually because we need the sibling path after insertion, to be able to constraint the insertion.
400
- // TODO(https://github.com/AztecProtocol/aztec-packages/issues/13380): This can be changed if the world state appendLeaves returns the sibling paths.
401
- if (leaves.length === 1) {
402
- await this.appendLeafInternal(treeId, leaves[0]);
403
- return;
404
- } else {
405
- // TODO(dbanks12): NON-HINTING! We skip hinting here for now because:
406
- // 1. We only ever append multiple leaves (for now) when padding (all empty leaves).
407
- // 2. We don't need hints per-item when padding.
408
- // 3. In order to get per-item hints today, you need to append one-at-a-time (mentioned above), which is VERY slow.
409
- await this.db.appendLeaves<ID>(treeId, leaves);
410
- }
411
- }
412
-
413
- public async createCheckpoint(): Promise<number> {
414
- const actionCounter = this.checkpointActionCounter++;
415
- const oldCheckpointId = this.getCurrentCheckpointId();
416
- const treesStateHash = await this.getTreesStateHash();
417
-
418
- const depth = await this.db.createCheckpoint();
419
- this.checkpointStack.push(this.nextCheckpointId++);
420
- const newCheckpointId = this.getCurrentCheckpointId();
421
-
422
- this.hints.createCheckpointHints.push(new AvmCreateCheckpointHint(actionCounter, oldCheckpointId, newCheckpointId));
423
-
424
- HintingMerkleWriteOperations.log.trace(
425
- `[createCheckpoint:${actionCounter}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId} at trees state ${treesStateHash}.`,
426
- );
427
-
428
- return depth;
429
- }
430
-
431
- public commitAllCheckpointsTo(_depth: number): Promise<void> {
432
- throw new Error('commitAllCheckpointsTo is not supported in HintingMerkleWriteOperations.');
433
- }
434
-
435
- public revertAllCheckpointsTo(_depth: number): Promise<void> {
436
- throw new Error('revertAllCheckpointsTo is not supported in HintingMerkleWriteOperations.');
437
- }
438
-
439
- public async commitCheckpoint(): Promise<void> {
440
- const actionCounter = this.checkpointActionCounter++;
441
- const oldCheckpointId = this.getCurrentCheckpointId();
442
- const treesStateHash = await this.getTreesStateHash();
443
-
444
- await this.db.commitCheckpoint();
445
- this.checkpointStack.pop();
446
- const newCheckpointId = this.getCurrentCheckpointId();
447
-
448
- this.hints.commitCheckpointHints.push(new AvmCommitCheckpointHint(actionCounter, oldCheckpointId, newCheckpointId));
449
-
450
- HintingMerkleWriteOperations.log.trace(
451
- `[commitCheckpoint:${actionCounter}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId} at trees state ${treesStateHash}.`,
452
- );
453
- }
454
-
455
- public async revertCheckpoint(): Promise<void> {
456
- const actionCounter = this.checkpointActionCounter++;
457
- const oldCheckpointId = this.getCurrentCheckpointId();
458
- const treesStateHash = await this.getTreesStateHash();
459
-
460
- const beforeState: Record<MerkleTreeId, AppendOnlyTreeSnapshot> = {
461
- [MerkleTreeId.PUBLIC_DATA_TREE]: await this.getHintKey(MerkleTreeId.PUBLIC_DATA_TREE),
462
- [MerkleTreeId.NULLIFIER_TREE]: await this.getHintKey(MerkleTreeId.NULLIFIER_TREE),
463
- [MerkleTreeId.NOTE_HASH_TREE]: await this.getHintKey(MerkleTreeId.NOTE_HASH_TREE),
464
- [MerkleTreeId.L1_TO_L2_MESSAGE_TREE]: await this.getHintKey(MerkleTreeId.L1_TO_L2_MESSAGE_TREE),
465
- [MerkleTreeId.ARCHIVE]: await this.getHintKey(MerkleTreeId.ARCHIVE),
466
- };
467
-
468
- await this.db.revertCheckpoint();
469
- this.checkpointStack.pop();
470
- const newCheckpointId = this.getCurrentCheckpointId();
471
-
472
- const afterState: Record<MerkleTreeId, AppendOnlyTreeSnapshot> = {
473
- [MerkleTreeId.PUBLIC_DATA_TREE]: await this.getHintKey(MerkleTreeId.PUBLIC_DATA_TREE),
474
- [MerkleTreeId.NULLIFIER_TREE]: await this.getHintKey(MerkleTreeId.NULLIFIER_TREE),
475
- [MerkleTreeId.NOTE_HASH_TREE]: await this.getHintKey(MerkleTreeId.NOTE_HASH_TREE),
476
- [MerkleTreeId.L1_TO_L2_MESSAGE_TREE]: await this.getHintKey(MerkleTreeId.L1_TO_L2_MESSAGE_TREE),
477
- [MerkleTreeId.ARCHIVE]: await this.getHintKey(MerkleTreeId.ARCHIVE),
478
- };
479
-
480
- this.hints.revertCheckpointHints.push(
481
- AvmRevertCheckpointHint.create(actionCounter, oldCheckpointId, newCheckpointId, beforeState, afterState),
482
- );
483
-
484
- HintingMerkleWriteOperations.log.trace(
485
- `[revertCheckpoint:${actionCounter}] Checkpoint evolved ${oldCheckpointId} -> ${newCheckpointId} at trees state ${treesStateHash}.`,
486
- );
487
- for (const treeId of merkleTreeIds()) {
488
- HintingMerkleWriteOperations.logTreeChange('revertCheckpoint', beforeState[treeId], afterState[treeId], treeId);
489
- }
490
- }
491
-
492
- // Private methods.
493
- private async getHintKey(treeId: MerkleTreeId): Promise<AppendOnlyTreeSnapshot> {
494
- const treeInfo = await this.db.getTreeInfo(treeId);
495
- return new AppendOnlyTreeSnapshot(Fr.fromBuffer(treeInfo.root), Number(treeInfo.size));
496
- }
497
-
498
- private getCurrentCheckpointId(): number {
499
- return this.checkpointStack[this.checkpointStack.length - 1];
500
- }
501
-
502
- // For logging/debugging purposes.
503
- private async getTreesStateHash(): Promise<Fr> {
504
- const stateReferenceFields = (await this.db.getStateReference()).toFields();
505
- return Fr.fromBuffer(sha256Trunc(Buffer.concat(stateReferenceFields.map(field => field.toBuffer()))));
506
- }
507
-
508
- private static logTreeChange(
509
- action: string,
510
- beforeState: AppendOnlyTreeSnapshot,
511
- afterState: AppendOnlyTreeSnapshot,
512
- treeId: MerkleTreeId,
513
- ) {
514
- const treeName = getTreeName(treeId);
515
- HintingMerkleWriteOperations.log.trace(
516
- `[${action}] ${treeName} tree state: ${beforeState.root}, ${beforeState.nextAvailableLeafIndex} -> ${afterState.root}, ${afterState.nextAvailableLeafIndex}.`,
517
- );
518
- }
519
-
520
- private async appendLeafInternal<ID extends MerkleTreeId>(
521
- treeId: ID,
522
- leaf: MerkleTreeLeafType<ID>,
523
- ): Promise<SiblingPath<TreeHeights[ID]>> {
524
- // Use sequentialInsert for PublicDataTree and NullifierTree.
525
- assert(treeId == MerkleTreeId.NOTE_HASH_TREE || treeId == MerkleTreeId.L1_TO_L2_MESSAGE_TREE);
526
-
527
- const beforeState = await this.getHintKey(treeId);
528
-
529
- await this.db.appendLeaves<ID>(treeId, [leaf]);
530
-
531
- const afterState = await this.getHintKey(treeId);
532
-
533
- HintingMerkleWriteOperations.logTreeChange('appendLeaves', beforeState, afterState, treeId);
534
-
535
- this.hints.appendLeavesHints.push(new AvmAppendLeavesHint(beforeState, afterState, treeId, [leaf as Fr]));
536
-
537
- return await this.getSiblingPath(treeId, BigInt(beforeState.nextAvailableLeafIndex));
538
- }
539
-
540
- // Non-hinted required methods from MerkleTreeWriteOperations interface
541
- public async getTreeInfo(treeId: MerkleTreeId) {
542
- return await this.db.getTreeInfo(treeId);
543
- }
544
-
545
- public async getStateReference() {
546
- return await this.db.getStateReference();
547
- }
548
-
549
- public getInitialHeader() {
550
- return this.db.getInitialHeader();
551
- }
552
-
553
- public getRevision(): WorldStateRevision {
554
- return this.db.getRevision();
555
- }
556
-
557
- public async updateArchive(header: any): Promise<void> {
558
- return await this.db.updateArchive(header);
559
- }
560
-
561
- public async batchInsert<
562
- TreeHeight extends number,
563
- SubtreeSiblingPathHeight extends number,
564
- ID extends IndexedTreeId,
565
- >(
566
- treeId: ID,
567
- leaves: Buffer[],
568
- subtreeHeight: number,
569
- ): Promise<BatchInsertionResult<TreeHeight, SubtreeSiblingPathHeight>> {
570
- return await this.db.batchInsert<TreeHeight, SubtreeSiblingPathHeight, ID>(treeId, leaves, subtreeHeight);
571
- }
572
-
573
- public async close(): Promise<void> {
574
- return await this.db.close();
575
- }
576
-
577
- async [Symbol.asyncDispose](): Promise<void> {
578
- await this.close();
579
- }
580
-
581
- public async findLeafIndices<ID extends MerkleTreeId>(
582
- treeId: ID,
583
- values: MerkleTreeLeafType<ID>[],
584
- ): Promise<(bigint | undefined)[]> {
585
- return await this.db.findLeafIndices(treeId, values);
586
- }
587
-
588
- public findSiblingPaths<ID extends MerkleTreeId>(
589
- treeId: ID,
590
- values: MerkleTreeLeafType<ID>[],
591
- ): Promise<({ path: SiblingPath<TreeHeights[ID]>; index: bigint } | undefined)[]> {
592
- return this.db.findSiblingPaths(treeId, values);
593
- }
594
-
595
- public async findLeafIndicesAfter<ID extends MerkleTreeId>(
596
- treeId: ID,
597
- values: MerkleTreeLeafType<ID>[],
598
- startIndex: bigint,
599
- ): Promise<(bigint | undefined)[]> {
600
- return await this.db.findLeafIndicesAfter(treeId, values, startIndex);
601
- }
602
-
603
- public async getBlockNumbersForLeafIndices<ID extends MerkleTreeId>(
604
- treeId: ID,
605
- leafIndices: bigint[],
606
- ): Promise<(BlockNumber | undefined)[]> {
607
- return await this.db.getBlockNumbersForLeafIndices(treeId, leafIndices);
608
- }
609
- }