@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
@@ -4,8 +4,8 @@ import {
4
4
  NULLIFIER_SUBTREE_HEIGHT,
5
5
  PUBLIC_DATA_SUBTREE_HEIGHT,
6
6
  } from '@aztec/constants';
7
- import { Fr } from '@aztec/foundation/fields';
8
- import { createLogger } from '@aztec/foundation/log';
7
+ import { Fr } from '@aztec/foundation/curves/bn254';
8
+ import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
9
9
  import { Timer } from '@aztec/foundation/timer';
10
10
  import { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
11
11
  import { ContractInstancePublishedEvent } from '@aztec/protocol-contracts/instance-registry';
@@ -13,14 +13,15 @@ import type { FunctionSelector } from '@aztec/stdlib/abi';
13
13
  import { PublicDataWrite } from '@aztec/stdlib/avm';
14
14
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
15
15
  import {
16
+ AllContractDeploymentData,
16
17
  type ContractClassPublic,
17
18
  type ContractDataSource,
19
+ type ContractDeploymentData,
18
20
  type ContractInstanceWithAddress,
19
21
  computePublicBytecodeCommitment,
20
22
  } from '@aztec/stdlib/contract';
21
23
  import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
22
24
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
23
- import { ContractClassLog, PrivateLog } from '@aztec/stdlib/logs';
24
25
  import type { PublicDBAccessStats } from '@aztec/stdlib/stats';
25
26
  import {
26
27
  MerkleTreeId,
@@ -34,182 +35,103 @@ import type { UInt64 } from '@aztec/stdlib/types';
34
35
 
35
36
  import { strict as assert } from 'assert';
36
37
 
38
+ import { ContractsDbCheckpoint } from './contracts_db_checkpoint.js';
37
39
  import type { PublicContractsDBInterface, PublicStateDBInterface } from './db_interfaces.js';
38
40
  import { L1ToL2MessageIndexOutOfRangeError, NoteHashIndexOutOfRangeError } from './side_effect_errors.js';
39
- import { TxContractCache } from './tx_contract_cache.js';
40
41
 
41
42
  /**
42
43
  * Implements the PublicContractsDBInterface using a ContractDataSource.
43
- * Progressively records contracts in transaction as they are processed in a block.
44
- * Separates block-level contract information (from processed/included txs) from the
45
- * current tx's contract information (which may be cleared on tx revert/death).
44
+ * Uses a stack-based checkpoint model for managing contract state.
46
45
  */
47
46
  export class PublicContractsDB implements PublicContractsDBInterface {
48
- // Two caching layers for contract classes and instances.
49
- // Tx-level cache:
50
- // - The current tx's new contract information is cached
51
- // in currentTxNonRevertibleCache and currentTxRevertibleCache.
52
- // Block-level cache:
53
- // - Contract information from earlier in the block, usable by later txs.
54
- // When a tx succeeds, that tx's caches are merged into the block cache and cleared.
55
- private currentTxNonRevertibleCache = new TxContractCache();
56
- private currentTxRevertibleCache = new TxContractCache();
57
- private blockCache = new TxContractCache();
58
- // Separate flat cache for bytecode commitments.
59
- private bytecodeCommitmentCache = new Map<string, Fr>();
60
-
61
- private log = createLogger('simulator:contracts-data-source');
62
-
63
- constructor(private dataSource: ContractDataSource) {}
47
+ private contractStateStack: ContractsDbCheckpoint[] = [new ContractsDbCheckpoint()];
64
48
 
65
- /**
66
- * Add new contracts from a transaction
67
- * @param tx - The transaction to add contracts from.
68
- */
69
- public async addNewContracts(tx: Tx): Promise<void> {
70
- await this.addNonRevertibleContractClasses(tx);
71
- await this.addRevertibleContractClasses(tx);
72
- this.addNonRevertibleContractInstances(tx);
73
- this.addRevertibleContractInstances(tx);
74
- }
49
+ private log: Logger;
75
50
 
76
- /**
77
- * Add non revertible contracts from a transaction
78
- * @param tx - The transaction to add non revertible contracts from.
79
- */
80
- public async addNewNonRevertibleContracts(tx: Tx) {
81
- await this.addNonRevertibleContractClasses(tx);
82
- this.addNonRevertibleContractInstances(tx);
51
+ constructor(
52
+ private dataSource: ContractDataSource,
53
+ bindings?: LoggerBindings,
54
+ ) {
55
+ this.log = createLogger('simulator:contracts-data-source', bindings);
83
56
  }
84
57
 
85
- /**
86
- * Add revertible contracts from a transaction
87
- * @param tx - The transaction to add revertible contracts from.
88
- */
89
- public async addNewRevertibleContracts(tx: Tx) {
90
- await this.addRevertibleContractClasses(tx);
91
- this.addRevertibleContractInstances(tx);
92
- }
58
+ /** Parses raw contract deployment data and inserts the resulting contracts into the current checkpoint. */
59
+ public addContractsFromLogs(contractDeploymentData: ContractDeploymentData): void {
60
+ const currentState = this.getCurrentState();
93
61
 
94
- /**
95
- * Add non-revertible contract classes from a transaction
96
- * For private-only txs, this will be all contract classes (found in tx.data.forPublic)
97
- * @param tx - The transaction to add non-revertible contract classes from.
98
- */
99
- private async addNonRevertibleContractClasses(tx: Tx) {
100
- const siloedContractClassLogs = tx.data.forPublic
101
- ? tx.getSplitContractClassLogs(false /* revertible */)
102
- : tx.getContractClassLogs();
103
- await this.addContractClassesFromLogs(siloedContractClassLogs, this.currentTxNonRevertibleCache, 'non-revertible');
104
- }
62
+ this.addContractClassesFromEvents(
63
+ ContractClassPublishedEvent.extractContractClassEvents(contractDeploymentData.getContractClassLogs()),
64
+ currentState,
65
+ );
105
66
 
106
- /**
107
- * Add revertible contract classes from a transaction
108
- * None for private-only txs.
109
- * @param tx - The transaction to add revertible contract classes from.
110
- */
111
- private async addRevertibleContractClasses(tx: Tx) {
112
- const siloedContractClassLogs = tx.data.forPublic ? tx.getSplitContractClassLogs(true /* revertible */) : [];
113
- await this.addContractClassesFromLogs(siloedContractClassLogs, this.currentTxRevertibleCache, 'revertible');
67
+ this.addContractInstancesFromEvents(
68
+ ContractInstancePublishedEvent.extractContractInstanceEvents(contractDeploymentData.getPrivateLogs()),
69
+ currentState,
70
+ );
114
71
  }
115
72
 
116
- /**
117
- * Add non-revertible contract instances from a transaction
118
- * For private-only txs, this will be all contract instances (found in tx.data.forRollup)
119
- * @param tx - The transaction to add non-revertible contract instances from.
120
- */
121
- private addNonRevertibleContractInstances(tx: Tx) {
122
- const contractInstanceLogs = tx.data.forPublic
123
- ? tx.data.forPublic!.nonRevertibleAccumulatedData.privateLogs.filter(l => !l.isEmpty())
124
- : tx.data.forRollup!.end.privateLogs.filter(l => !l.isEmpty());
125
-
126
- this.addContractInstancesFromLogs(contractInstanceLogs, this.currentTxNonRevertibleCache, 'non-revertible');
73
+ public addNewContracts(tx: Tx): void {
74
+ const contractDeploymentData = AllContractDeploymentData.fromTx(tx);
75
+ this.addContractsFromLogs(contractDeploymentData.getNonRevertibleContractDeploymentData());
76
+ this.addContractsFromLogs(contractDeploymentData.getRevertibleContractDeploymentData());
127
77
  }
128
78
 
129
- /**
130
- * Add revertible contract instances from a transaction
131
- * None for private-only txs.
132
- * @param tx - The transaction to add revertible contract instances from.
133
- */
134
- private addRevertibleContractInstances(tx: Tx) {
135
- const contractInstanceLogs = tx.data.forPublic
136
- ? tx.data.forPublic!.revertibleAccumulatedData.privateLogs.filter(l => !l.isEmpty())
137
- : [];
138
-
139
- this.addContractInstancesFromLogs(contractInstanceLogs, this.currentTxRevertibleCache, 'revertible');
79
+ /** Inserts typed contract instances directly into the current checkpoint. */
80
+ public addContracts(contractInstances?: ContractInstanceWithAddress[]): void {
81
+ const currentState = this.getCurrentState();
82
+ for (const instance of contractInstances ?? []) {
83
+ currentState.addInstance(instance.address, instance);
84
+ }
140
85
  }
141
86
 
142
87
  /**
143
- * Given a tx's siloed contract class logs, add the contract classes to the cache
144
- * @param siloedContractClassLogs - Contract class logs to process
145
- * @param cache - The cache to store the contract classes in
146
- * @param cacheType - Type of cache (for logging)
88
+ * Creates a new checkpoint, copying the current state for upcoming modifications,
89
+ * and enabling rollbacks to current state in case of a revert.
147
90
  */
148
- private async addContractClassesFromLogs(
149
- siloedContractClassLogs: ContractClassLog[],
150
- cache: TxContractCache,
151
- cacheType: string,
152
- ) {
153
- const contractClassEvents = siloedContractClassLogs
154
- .filter((log: ContractClassLog) => ContractClassPublishedEvent.isContractClassPublishedEvent(log))
155
- .map((log: ContractClassLog) => ContractClassPublishedEvent.fromLog(log));
156
-
157
- // Cache contract classes
158
- await Promise.all(
159
- contractClassEvents.map(async (event: ContractClassPublishedEvent) => {
160
- this.log.debug(`Adding class ${event.contractClassId.toString()} to contract's ${cacheType} tx cache`);
161
- const contractClass = await event.toContractClassPublic();
162
-
163
- cache.addClass(event.contractClassId, contractClass);
164
- }),
165
- );
91
+ public createCheckpoint(): void {
92
+ const currentState = this.getCurrentState();
93
+ const newState = currentState.fork();
94
+ this.contractStateStack.push(newState);
166
95
  }
167
96
 
168
97
  /**
169
- * Given a tx's contract instance logs, add the contract instances to the cache
170
- * @param contractInstanceLogs - Contract instance logs to process
171
- * @param cache - The cache to store the contract instances in
172
- * @param cacheType - Type of cache (for logging)
98
+ * Commits the current checkpoint, accepting its state latest.
173
99
  */
174
- private addContractInstancesFromLogs(contractInstanceLogs: PrivateLog[], cache: TxContractCache, cacheType: string) {
175
- const contractInstanceEvents = contractInstanceLogs
176
- .filter(log => ContractInstancePublishedEvent.isContractInstancePublishedEvent(log))
177
- .map(log => ContractInstancePublishedEvent.fromLog(log));
178
-
179
- // Cache contract instances
180
- contractInstanceEvents.forEach(e => {
181
- this.log.debug(
182
- `Adding instance ${e.address.toString()} with class ${e.contractClassId.toString()} to ${cacheType} tx contract cache`,
183
- );
184
- cache.addInstance(e.address, e.toContractInstance());
185
- });
100
+ public commitCheckpoint(): void {
101
+ if (this.contractStateStack.length <= 1) {
102
+ throw new Error('No checkpoint to commit');
103
+ }
104
+ const topState = this.contractStateStack.pop()!;
105
+ this.contractStateStack[this.contractStateStack.length - 1] = topState;
186
106
  }
187
107
 
188
108
  /**
189
- * Clear new contracts from the current tx's cache
109
+ * Commits the current checkpoint, not erroring if there is no checkpoint
110
+ * to commit. This is useful to do a sanity commit at the end of tx execution,
111
+ * doing nothing if the checkpoint was already reverted, but truly committing
112
+ * otherwise.
190
113
  */
191
- public clearContractsForTx() {
192
- this.currentTxRevertibleCache.clear();
193
- this.currentTxRevertibleCache.clear();
194
- this.currentTxNonRevertibleCache.clear();
114
+ public commitCheckpointOkIfNone(): void {
115
+ if (this.contractStateStack.length <= 1) {
116
+ return;
117
+ }
118
+ const topState = this.contractStateStack.pop()!;
119
+ this.contractStateStack[this.contractStateStack.length - 1] = topState;
195
120
  }
196
121
 
197
122
  /**
198
- * Commits the current transaction's cached contracts to the block-level cache.
199
- * Then, clears the tx cache.
123
+ * Reverts the current checkpoint, discarding its state and rolling back
124
+ * to the state as of the latest checkpoint.
200
125
  */
201
- public commitContractsForTx(onlyNonRevertibles: boolean = false) {
202
- // Merge non-revertible tx cache into block cache
203
- this.blockCache.mergeFrom(this.currentTxNonRevertibleCache);
204
-
205
- if (!onlyNonRevertibles) {
206
- // Merge revertible tx cache into block cache
207
- this.blockCache.mergeFrom(this.currentTxRevertibleCache);
126
+ public revertCheckpoint(): void {
127
+ if (this.contractStateStack.length <= 1) {
128
+ throw new Error('No checkpoint to revert');
208
129
  }
130
+ this.contractStateStack.pop();
131
+ }
209
132
 
210
- // Clear the tx's caches
211
- this.currentTxNonRevertibleCache.clear();
212
- this.currentTxRevertibleCache.clear();
133
+ private getCurrentState(): ContractsDbCheckpoint {
134
+ return this.contractStateStack[this.contractStateStack.length - 1];
213
135
  }
214
136
 
215
137
  // TODO(fcarreiro/alvaro): This method currently needs a blockNumber. Since this class
@@ -225,53 +147,64 @@ export class PublicContractsDB implements PublicContractsDBInterface {
225
147
  address: AztecAddress,
226
148
  timestamp: UInt64,
227
149
  ): Promise<ContractInstanceWithAddress | undefined> {
228
- // Check caches in order: tx revertible -> tx non-revertible -> block -> data source
229
- return (
230
- this.currentTxRevertibleCache.getInstance(address) ??
231
- this.currentTxNonRevertibleCache.getInstance(address) ??
232
- this.blockCache.getInstance(address) ??
233
- (await this.dataSource.getContract(address, timestamp))
234
- );
150
+ const currentState = this.getCurrentState();
151
+ return currentState.getInstance(address) ?? (await this.dataSource.getContract(address, timestamp));
235
152
  }
236
153
 
237
154
  public async getContractClass(contractClassId: Fr): Promise<ContractClassPublic | undefined> {
238
- // Check caches in order: tx revertible -> tx non-revertible -> block -> data source
239
- return (
240
- this.currentTxRevertibleCache.getClass(contractClassId) ??
241
- this.currentTxNonRevertibleCache.getClass(contractClassId) ??
242
- this.blockCache.getClass(contractClassId) ??
243
- (await this.dataSource.getContractClass(contractClassId))
244
- );
155
+ const currentState = this.getCurrentState();
156
+ return currentState.getClass(contractClassId) ?? (await this.dataSource.getContractClass(contractClassId));
245
157
  }
246
158
 
247
159
  public async getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined> {
248
- // Try and retrieve from cache
249
- const key = contractClassId.toString();
250
- const result = this.bytecodeCommitmentCache.get(key);
251
- if (result !== undefined) {
252
- return result;
160
+ const currentState = this.getCurrentState();
161
+ const commitment =
162
+ currentState.getBytecodeCommitment(contractClassId) ??
163
+ (await this.dataSource.getBytecodeCommitment(contractClassId));
164
+ if (commitment !== undefined) {
165
+ return commitment;
253
166
  }
254
- // Now try from the store
255
- const fromStore = await this.dataSource.getBytecodeCommitment(contractClassId);
256
- if (fromStore !== undefined) {
257
- this.bytecodeCommitmentCache.set(key, fromStore);
258
- return fromStore;
259
- }
260
-
261
- // Not in either the store or the cache, build it here and cache
167
+ // Not in the current state or the store, compute it here
168
+ // Get the contract class
262
169
  const contractClass = await this.getContractClass(contractClassId);
170
+
263
171
  if (contractClass === undefined) {
172
+ // cannot compute bytecode commitment if contract class is not found
264
173
  return undefined;
265
174
  }
266
175
 
267
176
  const value = await computePublicBytecodeCommitment(contractClass.packedBytecode);
268
- this.bytecodeCommitmentCache.set(key, value);
177
+ // Add to cache (current checkpoint state) so we don't compute again
178
+ currentState.addBytecodeCommitment(contractClassId, value);
269
179
  return value;
270
180
  }
271
181
 
272
182
  public async getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined> {
273
183
  return await this.dataSource.getDebugFunctionName(address, selector);
274
184
  }
185
+
186
+ private addContractClassesFromEvents(
187
+ contractClassEvents: ContractClassPublishedEvent[],
188
+ state: ContractsDbCheckpoint,
189
+ ) {
190
+ for (const event of contractClassEvents) {
191
+ this.log.debug(`Adding class ${event.contractClassId.toString()} to contract state`);
192
+ const contractClass = event.toContractClassPublic();
193
+ state.addClass(event.contractClassId, contractClass);
194
+ }
195
+ }
196
+
197
+ private addContractInstancesFromEvents(
198
+ contractInstanceEvents: ContractInstancePublishedEvent[],
199
+ state: ContractsDbCheckpoint,
200
+ ) {
201
+ contractInstanceEvents.forEach(e => {
202
+ this.log.debug(
203
+ `Adding instance ${e.address.toString()} with class ${e.contractClassId.toString()} to contract state`,
204
+ );
205
+ state.addInstance(e.address, e.toContractInstance());
206
+ });
207
+ }
275
208
  }
276
209
 
277
210
  /**
@@ -287,9 +220,14 @@ export class PublicContractsDB implements PublicContractsDBInterface {
287
220
  * to decide whether to use hints or not (same with tracing, etc).
288
221
  */
289
222
  export class PublicTreesDB implements PublicStateDBInterface {
290
- private logger = createLogger('simulator:public-trees-db');
223
+ private logger: Logger;
291
224
 
292
- constructor(private readonly db: MerkleTreeWriteOperations) {}
225
+ constructor(
226
+ private readonly db: MerkleTreeWriteOperations,
227
+ bindings?: LoggerBindings,
228
+ ) {
229
+ this.logger = createLogger('simulator:public-trees-db', bindings);
230
+ }
293
231
 
294
232
  public async storageRead(contract: AztecAddress, slot: Fr): Promise<Fr> {
295
233
  const timer = new Timer();
@@ -1,3 +1,4 @@
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
1
2
  import { SerialQueue } from '@aztec/foundation/queue';
2
3
  import type { IndexedTreeLeafPreimage, SiblingPath } from '@aztec/foundation/trees';
3
4
  import type {
@@ -80,6 +81,10 @@ export class GuardedMerkleTreeOperations implements MerkleTreeWriteOperations {
80
81
  close(): Promise<void> {
81
82
  return this.guardAndPush(() => this.target.close());
82
83
  }
84
+
85
+ async [Symbol.asyncDispose](): Promise<void> {
86
+ await this.close();
87
+ }
83
88
  getTreeInfo(treeId: MerkleTreeId): Promise<TreeInfo> {
84
89
  return this.guardAndPush(() => this.target.getTreeInfo(treeId));
85
90
  }
@@ -92,6 +97,9 @@ export class GuardedMerkleTreeOperations implements MerkleTreeWriteOperations {
92
97
  public getRevision(): WorldStateRevision {
93
98
  return this.target.getRevision();
94
99
  }
100
+ public getIpcPath(): string {
101
+ return this.target.getIpcPath();
102
+ }
95
103
  getSiblingPath<ID extends MerkleTreeId>(treeId: ID, index: bigint): Promise<SiblingPath<TreeHeights[ID]>> {
96
104
  return this.guardAndPush(() => this.target.getSiblingPath(treeId, index));
97
105
  }
@@ -126,10 +134,10 @@ export class GuardedMerkleTreeOperations implements MerkleTreeWriteOperations {
126
134
  getBlockNumbersForLeafIndices<ID extends MerkleTreeId>(
127
135
  treeId: ID,
128
136
  leafIndices: bigint[],
129
- ): Promise<(bigint | undefined)[]> {
137
+ ): Promise<(BlockNumber | undefined)[]> {
130
138
  return this.guardAndPush(() => this.target.getBlockNumbersForLeafIndices(treeId, leafIndices));
131
139
  }
132
- createCheckpoint(): Promise<void> {
140
+ createCheckpoint(): Promise<number> {
133
141
  return this.guardAndPush(() => this.target.createCheckpoint());
134
142
  }
135
143
  commitCheckpoint(): Promise<void> {
@@ -138,11 +146,11 @@ export class GuardedMerkleTreeOperations implements MerkleTreeWriteOperations {
138
146
  revertCheckpoint(): Promise<void> {
139
147
  return this.guardAndPush(() => this.target.revertCheckpoint());
140
148
  }
141
- commitAllCheckpoints(): Promise<void> {
142
- return this.guardAndPush(() => this.target.commitAllCheckpoints());
149
+ commitAllCheckpointsTo(depth: number): Promise<void> {
150
+ return this.guardAndPush(() => this.target.commitAllCheckpointsTo(depth));
143
151
  }
144
- revertAllCheckpoints(): Promise<void> {
145
- return this.guardAndPush(() => this.target.revertAllCheckpoints());
152
+ revertAllCheckpointsTo(depth: number): Promise<void> {
153
+ return this.guardAndPush(() => this.target.revertAllCheckpointsTo(depth));
146
154
  }
147
155
  findSiblingPaths<ID extends MerkleTreeId>(
148
156
  treeId: ID,