@aztec/simulator 0.0.0-test.1 → 0.0.1-commit.017a351

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 (533) hide show
  1. package/README.md +12 -4
  2. package/dest/client.d.ts +6 -4
  3. package/dest/client.d.ts.map +1 -1
  4. package/dest/client.js +4 -2
  5. package/dest/common/errors.d.ts +6 -9
  6. package/dest/common/errors.d.ts.map +1 -1
  7. package/dest/common/errors.js +51 -32
  8. package/dest/common/index.d.ts +1 -2
  9. package/dest/common/index.d.ts.map +1 -1
  10. package/dest/common/index.js +0 -1
  11. package/dest/common/stats/index.d.ts +1 -1
  12. package/dest/common/stats/stats.d.ts +1 -1
  13. package/dest/private/acvm/acvm.d.ts +15 -7
  14. package/dest/private/acvm/acvm.d.ts.map +1 -1
  15. package/dest/private/acvm/acvm.js +14 -19
  16. package/dest/private/acvm/acvm_types.d.ts +2 -2
  17. package/dest/private/acvm/acvm_types.d.ts.map +1 -1
  18. package/dest/private/acvm/deserialize.d.ts +19 -20
  19. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  20. package/dest/private/acvm/deserialize.js +32 -24
  21. package/dest/private/acvm/index.d.ts +1 -2
  22. package/dest/private/acvm/index.d.ts.map +1 -1
  23. package/dest/private/acvm/index.js +0 -1
  24. package/dest/private/acvm/serialize.d.ts +21 -4
  25. package/dest/private/acvm/serialize.d.ts.map +1 -1
  26. package/dest/private/acvm/serialize.js +54 -1
  27. package/dest/private/acvm_native.d.ts +41 -0
  28. package/dest/private/acvm_native.d.ts.map +1 -0
  29. package/dest/private/{providers/acvm_native.js → acvm_native.js} +34 -26
  30. package/dest/private/acvm_wasm.d.ts +16 -0
  31. package/dest/private/acvm_wasm.d.ts.map +1 -0
  32. package/dest/private/acvm_wasm.js +67 -0
  33. package/dest/private/acvm_wasm_with_blobs.d.ts +20 -0
  34. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -0
  35. package/dest/private/acvm_wasm_with_blobs.js +35 -0
  36. package/dest/private/circuit_recording/circuit_recorder.d.ts +109 -0
  37. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -0
  38. package/dest/private/circuit_recording/circuit_recorder.js +212 -0
  39. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +32 -0
  40. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
  41. package/dest/private/circuit_recording/file_circuit_recorder.js +135 -0
  42. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +10 -0
  43. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
  44. package/dest/private/circuit_recording/memory_circuit_recorder.js +9 -0
  45. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +21 -0
  46. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
  47. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +44 -0
  48. package/dest/private/circuit_simulator.d.ts +35 -0
  49. package/dest/private/circuit_simulator.d.ts.map +1 -0
  50. package/dest/private/circuit_simulator.js +43 -0
  51. package/dest/private/factory.d.ts +12 -0
  52. package/dest/private/factory.d.ts.map +1 -0
  53. package/dest/private/{providers/factory.js → factory.js} +8 -5
  54. package/dest/public/avm/avm_context.d.ts +8 -8
  55. package/dest/public/avm/avm_context.d.ts.map +1 -1
  56. package/dest/public/avm/avm_contract_call_result.d.ts +8 -6
  57. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  58. package/dest/public/avm/avm_contract_call_result.js +12 -8
  59. package/dest/public/avm/avm_execution_environment.d.ts +9 -6
  60. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  61. package/dest/public/avm/avm_execution_environment.js +5 -3
  62. package/dest/public/avm/avm_gas.d.ts +5 -21
  63. package/dest/public/avm/avm_gas.d.ts.map +1 -1
  64. package/dest/public/avm/avm_gas.js +29 -37
  65. package/dest/public/avm/avm_machine_state.d.ts +9 -6
  66. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  67. package/dest/public/avm/avm_machine_state.js +5 -2
  68. package/dest/public/avm/avm_memory_types.d.ts +100 -89
  69. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  70. package/dest/public/avm/avm_memory_types.js +21 -7
  71. package/dest/public/avm/avm_simulator.d.ts +8 -7
  72. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  73. package/dest/public/avm/avm_simulator.js +33 -43
  74. package/dest/public/avm/avm_simulator_interface.d.ts +9 -0
  75. package/dest/public/avm/avm_simulator_interface.d.ts.map +1 -0
  76. package/dest/public/avm/avm_simulator_interface.js +3 -0
  77. package/dest/public/avm/calldata.d.ts +51 -0
  78. package/dest/public/avm/calldata.d.ts.map +1 -0
  79. package/dest/public/avm/calldata.js +64 -0
  80. package/dest/public/avm/errors.d.ts +11 -29
  81. package/dest/public/avm/errors.d.ts.map +1 -1
  82. package/dest/public/avm/errors.js +19 -57
  83. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +2 -0
  84. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +1 -0
  85. package/dest/public/avm/fixtures/account_proof_fetcher.js +152 -0
  86. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +6 -5
  87. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  88. package/dest/public/avm/fixtures/avm_simulation_tester.js +26 -18
  89. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +9 -6
  90. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  91. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +53 -15
  92. package/dest/public/avm/fixtures/initializers.d.ts +42 -0
  93. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
  94. package/dest/public/avm/fixtures/initializers.js +45 -0
  95. package/dest/public/avm/fixtures/utils.d.ts +39 -0
  96. package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
  97. package/dest/public/avm/fixtures/utils.js +99 -0
  98. package/dest/public/avm/index.d.ts +1 -3
  99. package/dest/public/avm/index.d.ts.map +1 -1
  100. package/dest/public/avm/index.js +0 -2
  101. package/dest/public/avm/opcodes/accrued_substate.d.ts +18 -19
  102. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  103. package/dest/public/avm/opcodes/accrued_substate.js +61 -59
  104. package/dest/public/avm/opcodes/addressing_mode.d.ts +12 -8
  105. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
  106. package/dest/public/avm/opcodes/addressing_mode.js +46 -26
  107. package/dest/public/avm/opcodes/arithmetic.d.ts +14 -2
  108. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  109. package/dest/public/avm/opcodes/arithmetic.js +27 -3
  110. package/dest/public/avm/opcodes/bitwise.d.ts +8 -16
  111. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  112. package/dest/public/avm/opcodes/bitwise.js +22 -29
  113. package/dest/public/avm/opcodes/comparators.d.ts +1 -1
  114. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  115. package/dest/public/avm/opcodes/comparators.js +3 -3
  116. package/dest/public/avm/opcodes/contract.d.ts +5 -5
  117. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  118. package/dest/public/avm/opcodes/contract.js +16 -13
  119. package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
  120. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  121. package/dest/public/avm/opcodes/control_flow.js +13 -11
  122. package/dest/public/avm/opcodes/conversion.d.ts +4 -3
  123. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  124. package/dest/public/avm/opcodes/conversion.js +270 -6
  125. package/dest/public/avm/opcodes/ec_add.d.ts +3 -5
  126. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  127. package/dest/public/avm/opcodes/ec_add.js +28 -33
  128. package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
  129. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  130. package/dest/public/avm/opcodes/environment_getters.js +20 -22
  131. package/dest/public/avm/opcodes/external_calls.d.ts +14 -13
  132. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  133. package/dest/public/avm/opcodes/external_calls.js +52 -46
  134. package/dest/public/avm/opcodes/hashing.d.ts +7 -7
  135. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  136. package/dest/public/avm/opcodes/hashing.js +24 -19
  137. package/dest/public/avm/opcodes/index.d.ts +1 -1
  138. package/dest/public/avm/opcodes/instruction.d.ts +15 -11
  139. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
  140. package/dest/public/avm/opcodes/instruction.js +23 -19
  141. package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
  142. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  143. package/dest/public/avm/opcodes/instruction_impl.js +4 -4
  144. package/dest/public/avm/opcodes/memory.d.ts +15 -15
  145. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  146. package/dest/public/avm/opcodes/memory.js +52 -48
  147. package/dest/public/avm/opcodes/misc.d.ts +4 -3
  148. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  149. package/dest/public/avm/opcodes/misc.js +42 -17
  150. package/dest/public/avm/opcodes/storage.d.ts +14 -13
  151. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  152. package/dest/public/avm/opcodes/storage.js +39 -27
  153. package/dest/public/avm/revert_reason.d.ts +18 -0
  154. package/dest/public/avm/revert_reason.d.ts.map +1 -0
  155. package/dest/public/avm/revert_reason.js +39 -0
  156. package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -3
  157. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
  158. package/dest/public/avm/serialization/bytecode_serialization.d.ts +3 -7
  159. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  160. package/dest/public/avm/serialization/bytecode_serialization.js +81 -77
  161. package/dest/public/avm/serialization/instruction_serialization.d.ts +15 -6
  162. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  163. package/dest/public/avm/serialization/instruction_serialization.js +71 -36
  164. package/dest/public/avm/test_utils.d.ts +12 -15
  165. package/dest/public/avm/test_utils.d.ts.map +1 -1
  166. package/dest/public/avm/test_utils.js +17 -25
  167. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  168. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  169. package/dest/public/contracts_db_checkpoint.js +30 -0
  170. package/dest/public/db_interfaces.d.ts +68 -0
  171. package/dest/public/db_interfaces.d.ts.map +1 -0
  172. package/dest/public/db_interfaces.js +3 -0
  173. package/dest/public/debug_fn_name.d.ts +18 -0
  174. package/dest/public/debug_fn_name.d.ts.map +1 -0
  175. package/dest/public/debug_fn_name.js +37 -0
  176. package/dest/public/executor_metrics.d.ts +12 -4
  177. package/dest/public/executor_metrics.d.ts.map +1 -1
  178. package/dest/public/executor_metrics.js +33 -23
  179. package/dest/public/executor_metrics_interface.d.ts +10 -0
  180. package/dest/public/executor_metrics_interface.d.ts.map +1 -0
  181. package/dest/public/executor_metrics_interface.js +1 -0
  182. package/dest/public/fixtures/amm_test.d.ts +10 -0
  183. package/dest/public/fixtures/amm_test.d.ts.map +1 -0
  184. package/dest/public/fixtures/amm_test.js +213 -0
  185. package/dest/public/fixtures/bulk_test.d.ts +6 -0
  186. package/dest/public/fixtures/bulk_test.d.ts.map +1 -0
  187. package/dest/public/fixtures/bulk_test.js +289 -0
  188. package/dest/public/fixtures/custom_bytecode_tester.d.ts +34 -0
  189. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
  190. package/dest/public/fixtures/custom_bytecode_tester.js +53 -0
  191. package/dest/public/fixtures/custom_bytecode_tests.d.ts +14 -0
  192. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
  193. package/dest/public/fixtures/custom_bytecode_tests.js +234 -0
  194. package/dest/public/fixtures/index.d.ts +10 -1
  195. package/dest/public/fixtures/index.d.ts.map +1 -1
  196. package/dest/public/fixtures/index.js +9 -0
  197. package/dest/public/fixtures/minimal_public_tx.d.ts +4 -0
  198. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
  199. package/dest/public/fixtures/minimal_public_tx.js +19 -0
  200. package/dest/public/fixtures/opcode_spammer.d.ts +122 -0
  201. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
  202. package/dest/public/fixtures/opcode_spammer.js +1645 -0
  203. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +56 -15
  204. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  205. package/dest/public/fixtures/public_tx_simulation_tester.js +164 -71
  206. package/dest/public/fixtures/simple_contract_data_source.d.ts +36 -0
  207. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -0
  208. package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.js +31 -10
  209. package/dest/public/fixtures/token_test.d.ts +12 -0
  210. package/dest/public/fixtures/token_test.d.ts.map +1 -0
  211. package/dest/public/fixtures/token_test.js +96 -0
  212. package/dest/public/fixtures/utils.d.ts +18 -5
  213. package/dest/public/fixtures/utils.d.ts.map +1 -1
  214. package/dest/public/fixtures/utils.js +112 -70
  215. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +60 -0
  216. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  217. package/dest/public/fuzzing/avm_fuzzer_simulator.js +171 -0
  218. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  219. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  220. package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
  221. package/dest/public/hinting_db_sources.d.ts +81 -0
  222. package/dest/public/hinting_db_sources.d.ts.map +1 -0
  223. package/dest/public/hinting_db_sources.js +359 -0
  224. package/dest/public/index.d.ts +6 -9
  225. package/dest/public/index.d.ts.map +1 -1
  226. package/dest/public/index.js +4 -7
  227. package/dest/public/public_db_sources.d.ts +58 -104
  228. package/dest/public/public_db_sources.d.ts.map +1 -1
  229. package/dest/public/public_db_sources.js +227 -194
  230. package/dest/public/public_errors.d.ts +12 -0
  231. package/dest/public/public_errors.d.ts.map +1 -0
  232. package/dest/public/public_errors.js +13 -0
  233. package/dest/public/public_processor/guarded_merkle_tree.d.ts +52 -0
  234. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
  235. package/dest/public/public_processor/guarded_merkle_tree.js +116 -0
  236. package/dest/public/public_processor/public_processor.d.ts +32 -39
  237. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  238. package/dest/public/public_processor/public_processor.js +642 -167
  239. package/dest/public/public_processor/public_processor_metrics.d.ts +7 -4
  240. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  241. package/dest/public/public_processor/public_processor_metrics.js +37 -46
  242. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +19 -0
  243. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
  244. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +99 -0
  245. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +53 -0
  246. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -0
  247. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +126 -0
  248. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +42 -0
  249. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -0
  250. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +86 -0
  251. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +30 -0
  252. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -0
  253. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +167 -0
  254. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +23 -0
  255. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
  256. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
  257. package/dest/public/public_tx_simulator/factories.d.ts +14 -0
  258. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  259. package/dest/public/public_tx_simulator/factories.js +28 -0
  260. package/dest/public/public_tx_simulator/index.d.ts +8 -0
  261. package/dest/public/public_tx_simulator/index.d.ts.map +1 -0
  262. package/dest/public/public_tx_simulator/index.js +5 -0
  263. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +31 -0
  264. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -0
  265. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +51 -0
  266. package/dest/public/public_tx_simulator/public_tx_context.d.ts +31 -33
  267. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  268. package/dest/public/public_tx_simulator/public_tx_context.js +83 -105
  269. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +42 -58
  270. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  271. package/dest/public/public_tx_simulator/public_tx_simulator.js +225 -207
  272. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +32 -0
  273. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -0
  274. package/dest/public/public_tx_simulator/public_tx_simulator_interface.js +1 -0
  275. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +21 -0
  276. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -0
  277. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +415 -0
  278. package/dest/public/side_effect_errors.d.ts +42 -2
  279. package/dest/public/side_effect_errors.d.ts.map +1 -1
  280. package/dest/public/side_effect_errors.js +70 -1
  281. package/dest/public/side_effect_trace.d.ts +24 -69
  282. package/dest/public/side_effect_trace.d.ts.map +1 -1
  283. package/dest/public/side_effect_trace.js +74 -124
  284. package/dest/public/side_effect_trace_interface.d.ts +13 -25
  285. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  286. package/dest/public/state_manager/index.d.ts +2 -0
  287. package/dest/public/state_manager/index.d.ts.map +1 -0
  288. package/dest/public/state_manager/index.js +1 -0
  289. package/dest/public/{avm/journal → state_manager}/nullifiers.d.ts +4 -7
  290. package/dest/public/state_manager/nullifiers.d.ts.map +1 -0
  291. package/dest/public/{avm/journal → state_manager}/nullifiers.js +3 -8
  292. package/dest/public/{avm/journal → state_manager}/public_storage.d.ts +4 -4
  293. package/dest/public/state_manager/public_storage.d.ts.map +1 -0
  294. package/dest/public/{avm/journal → state_manager}/public_storage.js +1 -1
  295. package/dest/public/state_manager/state_manager.d.ts +170 -0
  296. package/dest/public/state_manager/state_manager.d.ts.map +1 -0
  297. package/dest/public/state_manager/state_manager.js +402 -0
  298. package/dest/public/test_executor_metrics.d.ts +61 -0
  299. package/dest/public/test_executor_metrics.d.ts.map +1 -0
  300. package/dest/public/test_executor_metrics.js +329 -0
  301. package/dest/public/unique_class_ids.d.ts +1 -1
  302. package/dest/public/unique_class_ids.d.ts.map +1 -1
  303. package/dest/public/utils.d.ts +3 -5
  304. package/dest/public/utils.d.ts.map +1 -1
  305. package/dest/public/utils.js +4 -21
  306. package/dest/server.d.ts +7 -4
  307. package/dest/server.d.ts.map +1 -1
  308. package/dest/server.js +5 -2
  309. package/dest/testing.d.ts +2 -0
  310. package/dest/testing.d.ts.map +1 -0
  311. package/dest/testing.js +1 -0
  312. package/package.json +39 -33
  313. package/src/client.ts +5 -3
  314. package/src/common/errors.ts +80 -45
  315. package/src/common/index.ts +0 -1
  316. package/src/private/acvm/acvm.ts +21 -35
  317. package/src/private/acvm/acvm_types.ts +1 -1
  318. package/src/private/acvm/deserialize.ts +36 -30
  319. package/src/private/acvm/index.ts +0 -1
  320. package/src/private/acvm/serialize.ts +64 -1
  321. package/src/private/{providers/acvm_native.ts → acvm_native.ts} +57 -28
  322. package/src/private/acvm_wasm.ts +79 -0
  323. package/src/private/acvm_wasm_with_blobs.ts +54 -0
  324. package/src/private/circuit_recording/circuit_recorder.ts +263 -0
  325. package/src/private/circuit_recording/file_circuit_recorder.ts +163 -0
  326. package/src/private/circuit_recording/memory_circuit_recorder.ts +13 -0
  327. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +91 -0
  328. package/src/private/circuit_simulator.ts +90 -0
  329. package/src/private/{providers/factory.ts → factory.ts} +13 -10
  330. package/src/public/avm/avm_context.ts +6 -6
  331. package/src/public/avm/avm_contract_call_result.ts +23 -9
  332. package/src/public/avm/avm_execution_environment.ts +17 -5
  333. package/src/public/avm/avm_gas.ts +27 -39
  334. package/src/public/avm/avm_machine_state.ts +12 -6
  335. package/src/public/avm/avm_memory_types.ts +24 -7
  336. package/src/public/avm/avm_simulator.ts +58 -63
  337. package/src/public/avm/avm_simulator_interface.ts +8 -0
  338. package/src/public/avm/calldata.ts +101 -0
  339. package/src/public/avm/errors.ts +20 -75
  340. package/src/public/avm/fixtures/account_proof.json +553 -0
  341. package/src/public/avm/fixtures/account_proof_fetcher.ts +166 -0
  342. package/src/public/avm/fixtures/avm_simulation_tester.ts +41 -24
  343. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +66 -13
  344. package/src/public/avm/fixtures/initializers.ts +103 -0
  345. package/src/public/avm/fixtures/utils.ts +154 -0
  346. package/src/public/avm/index.ts +0 -2
  347. package/src/public/avm/opcodes/accrued_substate.ts +84 -52
  348. package/src/public/avm/opcodes/addressing_mode.ts +56 -32
  349. package/src/public/avm/opcodes/arithmetic.ts +37 -3
  350. package/src/public/avm/opcodes/bitwise.ts +33 -29
  351. package/src/public/avm/opcodes/comparators.ts +6 -3
  352. package/src/public/avm/opcodes/contract.ts +15 -11
  353. package/src/public/avm/opcodes/control_flow.ts +19 -10
  354. package/src/public/avm/opcodes/conversion.ts +29 -5
  355. package/src/public/avm/opcodes/ec_add.ts +30 -37
  356. package/src/public/avm/opcodes/environment_getters.ts +28 -23
  357. package/src/public/avm/opcodes/external_calls.ts +70 -36
  358. package/src/public/avm/opcodes/hashing.ts +39 -13
  359. package/src/public/avm/opcodes/instruction.ts +31 -21
  360. package/src/public/avm/opcodes/instruction_impl.ts +2 -2
  361. package/src/public/avm/opcodes/memory.ts +81 -42
  362. package/src/public/avm/opcodes/misc.ts +61 -19
  363. package/src/public/avm/opcodes/storage.ts +47 -23
  364. package/src/public/avm/revert_reason.ts +58 -0
  365. package/src/public/avm/serialization/buffer_cursor.ts +4 -1
  366. package/src/public/avm/serialization/bytecode_serialization.ts +90 -81
  367. package/src/public/avm/serialization/instruction_serialization.ts +76 -35
  368. package/src/public/avm/test_utils.ts +25 -42
  369. package/src/public/contracts_db_checkpoint.ts +41 -0
  370. package/src/public/db_interfaces.ts +76 -0
  371. package/src/public/debug_fn_name.ts +52 -0
  372. package/src/public/executor_metrics.ts +49 -23
  373. package/src/public/executor_metrics_interface.ts +15 -0
  374. package/src/public/fixtures/amm_test.ts +331 -0
  375. package/src/public/fixtures/bulk_test.ts +194 -0
  376. package/src/public/fixtures/custom_bytecode_tester.ts +83 -0
  377. package/src/public/fixtures/custom_bytecode_tests.ts +366 -0
  378. package/src/public/fixtures/index.ts +13 -0
  379. package/src/public/fixtures/minimal_public_tx.ts +26 -0
  380. package/src/public/fixtures/opcode_spammer.ts +1713 -0
  381. package/src/public/fixtures/public_tx_simulation_tester.ts +264 -114
  382. package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +37 -20
  383. package/src/public/fixtures/token_test.ts +148 -0
  384. package/src/public/fixtures/utils.ts +156 -80
  385. package/src/public/fuzzing/avm_fuzzer_simulator.ts +288 -0
  386. package/src/public/fuzzing/avm_simulator_bin.ts +175 -0
  387. package/src/public/hinting_db_sources.ts +614 -0
  388. package/src/public/index.ts +11 -8
  389. package/src/public/public_db_sources.ts +295 -258
  390. package/src/public/public_errors.ts +14 -0
  391. package/src/public/public_processor/guarded_merkle_tree.ts +161 -0
  392. package/src/public/public_processor/public_processor.ts +354 -227
  393. package/src/public/public_processor/public_processor_metrics.ts +30 -46
  394. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +125 -0
  395. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +201 -0
  396. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +134 -0
  397. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +232 -0
  398. package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +83 -0
  399. package/src/public/public_tx_simulator/factories.ts +44 -0
  400. package/src/public/public_tx_simulator/index.ts +7 -0
  401. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +105 -0
  402. package/src/public/public_tx_simulator/public_tx_context.ts +187 -209
  403. package/src/public/public_tx_simulator/public_tx_simulator.ts +320 -263
  404. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +33 -0
  405. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +63 -0
  406. package/src/public/side_effect_errors.ts +91 -1
  407. package/src/public/side_effect_trace.ts +99 -322
  408. package/src/public/side_effect_trace_interface.ts +11 -59
  409. package/src/public/state_manager/index.ts +1 -0
  410. package/src/public/{avm/journal → state_manager}/nullifiers.ts +6 -12
  411. package/src/public/{avm/journal → state_manager}/public_storage.ts +3 -3
  412. package/src/public/state_manager/state_manager.ts +569 -0
  413. package/src/public/test_executor_metrics.ts +421 -0
  414. package/src/public/utils.ts +5 -21
  415. package/src/server.ts +6 -3
  416. package/src/testing.ts +1 -0
  417. package/dest/common/db_interfaces.d.ts +0 -80
  418. package/dest/common/db_interfaces.d.ts.map +0 -1
  419. package/dest/common/db_interfaces.js +0 -1
  420. package/dest/common/debug_fn_name.d.ts +0 -5
  421. package/dest/common/debug_fn_name.d.ts.map +0 -1
  422. package/dest/common/debug_fn_name.js +0 -6
  423. package/dest/common/message_load_oracle_inputs.d.ts +0 -15
  424. package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
  425. package/dest/common/message_load_oracle_inputs.js +0 -15
  426. package/dest/private/acvm/oracle/index.d.ts +0 -14
  427. package/dest/private/acvm/oracle/index.d.ts.map +0 -1
  428. package/dest/private/acvm/oracle/index.js +0 -2
  429. package/dest/private/acvm/oracle/oracle.d.ts +0 -49
  430. package/dest/private/acvm/oracle/oracle.d.ts.map +0 -1
  431. package/dest/private/acvm/oracle/oracle.js +0 -263
  432. package/dest/private/acvm/oracle/typed_oracle.d.ts +0 -83
  433. package/dest/private/acvm/oracle/typed_oracle.d.ts.map +0 -1
  434. package/dest/private/acvm/oracle/typed_oracle.js +0 -132
  435. package/dest/private/execution_data_provider.d.ts +0 -261
  436. package/dest/private/execution_data_provider.d.ts.map +0 -1
  437. package/dest/private/execution_data_provider.js +0 -14
  438. package/dest/private/execution_note_cache.d.ts +0 -93
  439. package/dest/private/execution_note_cache.d.ts.map +0 -1
  440. package/dest/private/execution_note_cache.js +0 -180
  441. package/dest/private/hashed_values_cache.d.ts +0 -28
  442. package/dest/private/hashed_values_cache.d.ts.map +0 -1
  443. package/dest/private/hashed_values_cache.js +0 -46
  444. package/dest/private/index.d.ts +0 -13
  445. package/dest/private/index.d.ts.map +0 -1
  446. package/dest/private/index.js +0 -12
  447. package/dest/private/pick_notes.d.ts +0 -85
  448. package/dest/private/pick_notes.d.ts.map +0 -1
  449. package/dest/private/pick_notes.js +0 -51
  450. package/dest/private/private_execution.d.ts +0 -25
  451. package/dest/private/private_execution.d.ts.map +0 -1
  452. package/dest/private/private_execution.js +0 -92
  453. package/dest/private/private_execution_oracle.d.ts +0 -215
  454. package/dest/private/private_execution_oracle.d.ts.map +0 -1
  455. package/dest/private/private_execution_oracle.js +0 -382
  456. package/dest/private/providers/acvm_native.d.ts +0 -40
  457. package/dest/private/providers/acvm_native.d.ts.map +0 -1
  458. package/dest/private/providers/acvm_wasm.d.ts +0 -15
  459. package/dest/private/providers/acvm_wasm.d.ts.map +0 -1
  460. package/dest/private/providers/acvm_wasm.js +0 -62
  461. package/dest/private/providers/acvm_wasm_with_blobs.d.ts +0 -19
  462. package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
  463. package/dest/private/providers/acvm_wasm_with_blobs.js +0 -32
  464. package/dest/private/providers/factory.d.ts +0 -12
  465. package/dest/private/providers/factory.d.ts.map +0 -1
  466. package/dest/private/providers/simulation_provider.d.ts +0 -19
  467. package/dest/private/providers/simulation_provider.d.ts.map +0 -1
  468. package/dest/private/providers/simulation_provider.js +0 -24
  469. package/dest/private/simulator.d.ts +0 -34
  470. package/dest/private/simulator.d.ts.map +0 -1
  471. package/dest/private/simulator.js +0 -76
  472. package/dest/private/unconstrained_execution.d.ts +0 -10
  473. package/dest/private/unconstrained_execution.d.ts.map +0 -1
  474. package/dest/private/unconstrained_execution.js +0 -27
  475. package/dest/private/unconstrained_execution_oracle.d.ts +0 -161
  476. package/dest/private/unconstrained_execution_oracle.d.ts.map +0 -1
  477. package/dest/private/unconstrained_execution_oracle.js +0 -258
  478. package/dest/public/avm/bytecode_utils.d.ts +0 -5
  479. package/dest/public/avm/bytecode_utils.d.ts.map +0 -1
  480. package/dest/public/avm/bytecode_utils.js +0 -17
  481. package/dest/public/avm/fixtures/index.d.ts +0 -84
  482. package/dest/public/avm/fixtures/index.d.ts.map +0 -1
  483. package/dest/public/avm/fixtures/index.js +0 -175
  484. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts +0 -35
  485. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
  486. package/dest/public/avm/journal/index.d.ts +0 -2
  487. package/dest/public/avm/journal/index.d.ts.map +0 -1
  488. package/dest/public/avm/journal/index.js +0 -1
  489. package/dest/public/avm/journal/journal.d.ts +0 -209
  490. package/dest/public/avm/journal/journal.d.ts.map +0 -1
  491. package/dest/public/avm/journal/journal.js +0 -486
  492. package/dest/public/avm/journal/nullifiers.d.ts.map +0 -1
  493. package/dest/public/avm/journal/public_storage.d.ts.map +0 -1
  494. package/dest/public/bytecode_errors.d.ts +0 -4
  495. package/dest/public/bytecode_errors.d.ts.map +0 -1
  496. package/dest/public/bytecode_errors.js +0 -6
  497. package/dest/public/execution.d.ts +0 -108
  498. package/dest/public/execution.d.ts.map +0 -1
  499. package/dest/public/execution.js +0 -9
  500. package/dest/public/tx_contract_cache.d.ts +0 -41
  501. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  502. package/dest/public/tx_contract_cache.js +0 -49
  503. package/dest/test/utils.d.ts +0 -13
  504. package/dest/test/utils.d.ts.map +0 -1
  505. package/dest/test/utils.js +0 -22
  506. package/src/common/db_interfaces.ts +0 -94
  507. package/src/common/debug_fn_name.ts +0 -18
  508. package/src/common/message_load_oracle_inputs.ts +0 -15
  509. package/src/private/acvm/oracle/index.ts +0 -16
  510. package/src/private/acvm/oracle/oracle.ts +0 -455
  511. package/src/private/acvm/oracle/typed_oracle.ts +0 -259
  512. package/src/private/execution_data_provider.ts +0 -323
  513. package/src/private/execution_note_cache.ts +0 -217
  514. package/src/private/hashed_values_cache.ts +0 -55
  515. package/src/private/index.ts +0 -16
  516. package/src/private/pick_notes.ts +0 -141
  517. package/src/private/private_execution.ts +0 -151
  518. package/src/private/private_execution_oracle.ts +0 -614
  519. package/src/private/providers/acvm_wasm.ts +0 -63
  520. package/src/private/providers/acvm_wasm_with_blobs.ts +0 -50
  521. package/src/private/providers/simulation_provider.ts +0 -45
  522. package/src/private/simulator.ts +0 -147
  523. package/src/private/unconstrained_execution.ts +0 -50
  524. package/src/private/unconstrained_execution_oracle.ts +0 -373
  525. package/src/public/avm/bytecode_utils.ts +0 -17
  526. package/src/public/avm/fixtures/index.ts +0 -296
  527. package/src/public/avm/journal/index.ts +0 -1
  528. package/src/public/avm/journal/journal.ts +0 -742
  529. package/src/public/avm/opcodes/.eslintrc.cjs +0 -8
  530. package/src/public/bytecode_errors.ts +0 -6
  531. package/src/public/execution.ts +0 -140
  532. package/src/public/tx_contract_cache.ts +0 -69
  533. package/src/test/utils.ts +0 -36
@@ -1,264 +1,297 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { L1_TO_L2_MSG_TREE_LEAF_COUNT, NOTE_HASH_TREE_LEAF_COUNT, NULLIFIER_SUBTREE_HEIGHT, PUBLIC_DATA_SUBTREE_HEIGHT } from '@aztec/constants';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
3
  import { createLogger } from '@aztec/foundation/log';
3
4
  import { Timer } from '@aztec/foundation/timer';
4
- import { ContractClassRegisteredEvent } from '@aztec/protocol-contracts/class-registerer';
5
- import { ContractInstanceDeployedEvent } from '@aztec/protocol-contracts/instance-deployer';
5
+ import { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
6
+ import { ContractInstancePublishedEvent } from '@aztec/protocol-contracts/instance-registry';
6
7
  import { PublicDataWrite } from '@aztec/stdlib/avm';
7
- import { computePublicBytecodeCommitment } from '@aztec/stdlib/contract';
8
+ import { AllContractDeploymentData, computePublicBytecodeCommitment } from '@aztec/stdlib/contract';
8
9
  import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
9
- import { MerkleTreeId } from '@aztec/stdlib/trees';
10
- import { TxContractCache } from './tx_contract_cache.js';
10
+ import { MerkleTreeId, NullifierLeaf, PublicDataTreeLeaf, getTreeName } from '@aztec/stdlib/trees';
11
+ import { TreeSnapshots } from '@aztec/stdlib/tx';
12
+ import { strict as assert } from 'assert';
13
+ import { ContractsDbCheckpoint } from './contracts_db_checkpoint.js';
14
+ import { L1ToL2MessageIndexOutOfRangeError, NoteHashIndexOutOfRangeError } from './side_effect_errors.js';
11
15
  /**
12
- * Implements the PublicContractsDB using a ContractDataSource.
13
- * Progressively records contracts in transaction as they are processed in a block.
14
- * Separates block-level contract information (from processed/included txs) from the
15
- * current tx's contract information (which may be cleared on tx revert/death).
16
- */ export class ContractsDataSourcePublicDB {
16
+ * Implements the PublicContractsDBInterface using a ContractDataSource.
17
+ * Uses a stack-based checkpoint model for managing contract state.
18
+ */ export class PublicContractsDB {
17
19
  dataSource;
18
- // Two caching layers for contract classes and instances.
19
- // Tx-level cache:
20
- // - The current tx's new contract information is cached
21
- // in currentTxNonRevertibleCache and currentTxRevertibleCache.
22
- // Block-level cache:
23
- // - Contract information from earlier in the block, usable by later txs.
24
- // When a tx succeeds, that tx's caches are merged into the block cache and cleared.
25
- currentTxNonRevertibleCache;
26
- currentTxRevertibleCache;
27
- blockCache;
28
- // Separate flat cache for bytecode commitments.
29
- bytecodeCommitmentCache;
20
+ contractStateStack;
30
21
  log;
31
- constructor(dataSource){
22
+ constructor(dataSource, bindings){
32
23
  this.dataSource = dataSource;
33
- this.currentTxNonRevertibleCache = new TxContractCache();
34
- this.currentTxRevertibleCache = new TxContractCache();
35
- this.blockCache = new TxContractCache();
36
- this.bytecodeCommitmentCache = new Map();
37
- this.log = createLogger('simulator:contracts-data-source');
24
+ this.contractStateStack = [
25
+ new ContractsDbCheckpoint()
26
+ ];
27
+ this.log = createLogger('simulator:contracts-data-source', bindings);
38
28
  }
39
- /**
40
- * Add new contracts from a transaction
41
- * @param tx - The transaction to add contracts from.
42
- */ async addNewContracts(tx) {
43
- await this.addNonRevertibleContractClasses(tx);
44
- await this.addRevertibleContractClasses(tx);
45
- this.addNonRevertibleContractInstances(tx);
46
- this.addRevertibleContractInstances(tx);
47
- }
48
- /**
49
- * Add non revertible contracts from a transaction
50
- * @param tx - The transaction to add non revertible contracts from.
51
- */ async addNewNonRevertibleContracts(tx) {
52
- await this.addNonRevertibleContractClasses(tx);
53
- this.addNonRevertibleContractInstances(tx);
54
- }
55
- /**
56
- * Add revertible contracts from a transaction
57
- * @param tx - The transaction to add revertible contracts from.
58
- */ async addNewRevertibleContracts(tx) {
59
- await this.addRevertibleContractClasses(tx);
60
- this.addRevertibleContractInstances(tx);
61
- }
62
- /**
63
- * Add non-revertible contract classes from a transaction
64
- * For private-only txs, this will be all contract classes (found in tx.data.forPublic)
65
- * @param tx - The transaction to add non-revertible contract classes from.
66
- */ async addNonRevertibleContractClasses(tx) {
67
- const siloedContractClassLogs = tx.data.forPublic ? await tx.filterContractClassLogs(tx.data.forPublic.nonRevertibleAccumulatedData.contractClassLogsHashes, /*siloed=*/ true) : await tx.filterContractClassLogs(tx.data.forRollup.end.contractClassLogsHashes, /*siloed=*/ true);
68
- await this.addContractClassesFromLogs(siloedContractClassLogs, this.currentTxNonRevertibleCache, 'non-revertible');
69
- }
70
- /**
71
- * Add revertible contract classes from a transaction
72
- * None for private-only txs.
73
- * @param tx - The transaction to add revertible contract classes from.
74
- */ async addRevertibleContractClasses(tx) {
75
- const siloedContractClassLogs = tx.data.forPublic ? await tx.filterContractClassLogs(tx.data.forPublic.revertibleAccumulatedData.contractClassLogsHashes, /*siloed=*/ true) : [];
76
- await this.addContractClassesFromLogs(siloedContractClassLogs, this.currentTxRevertibleCache, 'revertible');
29
+ /** Parses raw log data from the C++/NAPI bridge and inserts the resulting contracts into the current checkpoint. */ addContractsFromLogs(contractDeploymentData) {
30
+ const currentState = this.getCurrentState();
31
+ this.addContractClassesFromEvents(ContractClassPublishedEvent.extractContractClassEvents(contractDeploymentData.getContractClassLogs()), currentState);
32
+ this.addContractInstancesFromEvents(ContractInstancePublishedEvent.extractContractInstanceEvents(contractDeploymentData.getPrivateLogs()), currentState);
77
33
  }
78
- /**
79
- * Add non-revertible contract instances from a transaction
80
- * For private-only txs, this will be all contract instances (found in tx.data.forRollup)
81
- * @param tx - The transaction to add non-revertible contract instances from.
82
- */ addNonRevertibleContractInstances(tx) {
83
- const contractInstanceLogs = tx.data.forPublic ? tx.data.forPublic.nonRevertibleAccumulatedData.privateLogs.filter((l)=>!l.isEmpty()) : tx.data.forRollup.end.privateLogs.filter((l)=>!l.isEmpty());
84
- this.addContractInstancesFromLogs(contractInstanceLogs, this.currentTxNonRevertibleCache, 'non-revertible');
34
+ addNewContracts(tx) {
35
+ const contractDeploymentData = AllContractDeploymentData.fromTx(tx);
36
+ this.addContractsFromLogs(contractDeploymentData.getNonRevertibleContractDeploymentData());
37
+ this.addContractsFromLogs(contractDeploymentData.getRevertibleContractDeploymentData());
85
38
  }
86
- /**
87
- * Add revertible contract instances from a transaction
88
- * None for private-only txs.
89
- * @param tx - The transaction to add revertible contract instances from.
90
- */ addRevertibleContractInstances(tx) {
91
- const contractInstanceLogs = tx.data.forPublic ? tx.data.forPublic.revertibleAccumulatedData.privateLogs.filter((l)=>!l.isEmpty()) : [];
92
- this.addContractInstancesFromLogs(contractInstanceLogs, this.currentTxRevertibleCache, 'revertible');
39
+ /** Inserts typed contract instances directly into the current checkpoint. */ addContracts(contractInstances) {
40
+ const currentState = this.getCurrentState();
41
+ for (const instance of contractInstances ?? []){
42
+ currentState.addInstance(instance.address, instance);
43
+ }
93
44
  }
94
45
  /**
95
- * Given a tx's siloed contract class logs, add the contract classes to the cache
96
- * @param siloedContractClassLogs - Contract class logs to process
97
- * @param cache - The cache to store the contract classes in
98
- * @param cacheType - Type of cache (for logging)
99
- */ async addContractClassesFromLogs(siloedContractClassLogs, cache, cacheType) {
100
- const contractClassEvents = siloedContractClassLogs.filter((log)=>ContractClassRegisteredEvent.isContractClassRegisteredEvent(log)).map((log)=>ContractClassRegisteredEvent.fromLog(log));
101
- // Cache contract classes
102
- await Promise.all(contractClassEvents.map(async (event)=>{
103
- this.log.debug(`Adding class ${event.contractClassId.toString()} to contract's ${cacheType} tx cache`);
104
- const contractClass = await event.toContractClassPublic();
105
- cache.addClass(event.contractClassId, contractClass);
106
- }));
46
+ * Creates a new checkpoint, copying the current state for upcoming modifications,
47
+ * and enabling rollbacks to current state in case of a revert.
48
+ */ createCheckpoint() {
49
+ const currentState = this.getCurrentState();
50
+ const newState = currentState.fork();
51
+ this.contractStateStack.push(newState);
107
52
  }
108
53
  /**
109
- * Given a tx's contract instance logs, add the contract instances to the cache
110
- * @param contractInstanceLogs - Contract instance logs to process
111
- * @param cache - The cache to store the contract instances in
112
- * @param cacheType - Type of cache (for logging)
113
- */ addContractInstancesFromLogs(contractInstanceLogs, cache, cacheType) {
114
- const contractInstanceEvents = contractInstanceLogs.filter((log)=>ContractInstanceDeployedEvent.isContractInstanceDeployedEvent(log)).map((log)=>ContractInstanceDeployedEvent.fromLog(log));
115
- // Cache contract instances
116
- contractInstanceEvents.forEach((e)=>{
117
- this.log.debug(`Adding instance ${e.address.toString()} with class ${e.contractClassId.toString()} to ${cacheType} tx contract cache`);
118
- cache.addInstance(e.address, e.toContractInstance());
119
- });
54
+ * Commits the current checkpoint, accepting its state latest.
55
+ */ commitCheckpoint() {
56
+ if (this.contractStateStack.length <= 1) {
57
+ throw new Error('No checkpoint to commit');
58
+ }
59
+ const topState = this.contractStateStack.pop();
60
+ this.contractStateStack[this.contractStateStack.length - 1] = topState;
120
61
  }
121
62
  /**
122
- * Clear new contracts from the current tx's cache
123
- */ clearContractsForTx() {
124
- this.currentTxRevertibleCache.clear();
125
- this.currentTxRevertibleCache.clear();
126
- this.currentTxNonRevertibleCache.clear();
63
+ * Commits the current checkpoint, not erroring if there is no checkpoint
64
+ * to commit. This is useful to do a sanity commit at the end of tx execution,
65
+ * doing nothing if the checkpoint was already reverted, but truly committing
66
+ * otherwise.
67
+ */ commitCheckpointOkIfNone() {
68
+ if (this.contractStateStack.length <= 1) {
69
+ return;
70
+ }
71
+ const topState = this.contractStateStack.pop();
72
+ this.contractStateStack[this.contractStateStack.length - 1] = topState;
127
73
  }
128
74
  /**
129
- * Commits the current transaction's cached contracts to the block-level cache.
130
- * Then, clears the tx cache.
131
- */ commitContractsForTx(onlyNonRevertibles = false) {
132
- // Merge non-revertible tx cache into block cache
133
- this.blockCache.mergeFrom(this.currentTxNonRevertibleCache);
134
- if (!onlyNonRevertibles) {
135
- // Merge revertible tx cache into block cache
136
- this.blockCache.mergeFrom(this.currentTxRevertibleCache);
75
+ * Reverts the current checkpoint, discarding its state and rolling back
76
+ * to the state as of the latest checkpoint.
77
+ */ revertCheckpoint() {
78
+ if (this.contractStateStack.length <= 1) {
79
+ throw new Error('No checkpoint to revert');
137
80
  }
138
- // Clear the tx's caches
139
- this.currentTxNonRevertibleCache.clear();
140
- this.currentTxRevertibleCache.clear();
81
+ this.contractStateStack.pop();
141
82
  }
142
- async getContractInstance(address) {
143
- // Check caches in order: tx revertible -> tx non-revertible -> block -> data source
144
- return this.currentTxRevertibleCache.getInstance(address) ?? this.currentTxNonRevertibleCache.getInstance(address) ?? this.blockCache.getInstance(address) ?? await this.dataSource.getContract(address);
83
+ getCurrentState() {
84
+ return this.contractStateStack[this.contractStateStack.length - 1];
85
+ }
86
+ // TODO(fcarreiro/alvaro): This method currently needs a blockNumber. Since this class
87
+ // is only ever used for a given block, it should be possible to construct it with the
88
+ // block number and then forget about it. However, since this class (and interface) is
89
+ // currently more externally exposed than we'd want to, Facundo preferred to not add it
90
+ // to the constructor right now. If we can make this class more private, we should
91
+ // reconsider this. A litmus test is in how many places we need to initialize with a
92
+ // dummy block number (tests or not) and pass block numbers to `super`.
93
+ // Note: Block number got changed to timestamp so this comment ^ is outdated. Keeping
94
+ // the comment as is as I am not part of the AVM cabal.
95
+ async getContractInstance(address, timestamp) {
96
+ const currentState = this.getCurrentState();
97
+ return currentState.getInstance(address) ?? await this.dataSource.getContract(address, timestamp);
145
98
  }
146
99
  async getContractClass(contractClassId) {
147
- // Check caches in order: tx revertible -> tx non-revertible -> block -> data source
148
- return this.currentTxRevertibleCache.getClass(contractClassId) ?? this.currentTxNonRevertibleCache.getClass(contractClassId) ?? this.blockCache.getClass(contractClassId) ?? await this.dataSource.getContractClass(contractClassId);
100
+ const currentState = this.getCurrentState();
101
+ return currentState.getClass(contractClassId) ?? await this.dataSource.getContractClass(contractClassId);
149
102
  }
150
103
  async getBytecodeCommitment(contractClassId) {
151
- // Try and retrieve from cache
152
- const key = contractClassId.toString();
153
- const result = this.bytecodeCommitmentCache.get(key);
154
- if (result !== undefined) {
155
- return result;
156
- }
157
- // Now try from the store
158
- const fromStore = await this.dataSource.getBytecodeCommitment(contractClassId);
159
- if (fromStore !== undefined) {
160
- this.bytecodeCommitmentCache.set(key, fromStore);
161
- return fromStore;
104
+ const currentState = this.getCurrentState();
105
+ const commitment = currentState.getBytecodeCommitment(contractClassId) ?? await this.dataSource.getBytecodeCommitment(contractClassId);
106
+ if (commitment !== undefined) {
107
+ return commitment;
162
108
  }
163
- // Not in either the store or the cache, build it here and cache
109
+ // Not in the current state or the store, compute it here
110
+ // Get the contract class
164
111
  const contractClass = await this.getContractClass(contractClassId);
165
112
  if (contractClass === undefined) {
113
+ // cannot compute bytecode commitment if contract class is not found
166
114
  return undefined;
167
115
  }
168
116
  const value = await computePublicBytecodeCommitment(contractClass.packedBytecode);
169
- this.bytecodeCommitmentCache.set(key, value);
117
+ // Add to cache (current checkpoint state) so we don't compute again
118
+ currentState.addBytecodeCommitment(contractClassId, value);
170
119
  return value;
171
120
  }
172
121
  async getDebugFunctionName(address, selector) {
173
- return await this.dataSource.getContractFunctionName(address, selector);
122
+ return await this.dataSource.getDebugFunctionName(address, selector);
123
+ }
124
+ addContractClassesFromEvents(contractClassEvents, state) {
125
+ for (const event of contractClassEvents){
126
+ this.log.debug(`Adding class ${event.contractClassId.toString()} to contract state`);
127
+ const contractClass = event.toContractClassPublic();
128
+ state.addClass(event.contractClassId, contractClass);
129
+ }
130
+ }
131
+ addContractInstancesFromEvents(contractInstanceEvents, state) {
132
+ contractInstanceEvents.forEach((e)=>{
133
+ this.log.debug(`Adding instance ${e.address.toString()} with class ${e.contractClassId.toString()} to contract state`);
134
+ state.addInstance(e.address, e.toContractInstance());
135
+ });
174
136
  }
175
137
  }
176
138
  /**
177
- * A public state DB that reads and writes to the world state.
178
- */ export class WorldStateDB extends ContractsDataSourcePublicDB {
139
+ * A high-level class that provides access to the merkle trees.
140
+ *
141
+ * This class is just a helper wrapper around a merkle db. Anything that you can do with it
142
+ * can also be done directly with the merkle db. This class should NOT be exposed or used
143
+ * outside of `simulator/src/public`.
144
+ *
145
+ * NOTE: This class is currently written in such a way that it would generate the
146
+ * necessary hints if used with a hinting merkle db. This is a bit of a leak of concepts.
147
+ * Eventually we can have everything depend on a config/factory at the TxSimulator level
148
+ * to decide whether to use hints or not (same with tracing, etc).
149
+ */ export class PublicTreesDB {
179
150
  db;
180
151
  logger;
181
- constructor(db, dataSource){
182
- super(dataSource), this.db = db, this.logger = createLogger('simulator:world-state-db');
183
- }
184
- /**
185
- * Checkpoints the current fork state
186
- */ async createCheckpoint() {
187
- await this.db.createCheckpoint();
188
- }
189
- /**
190
- * Commits the current checkpoint
191
- */ async commitCheckpoint() {
192
- await this.db.commitCheckpoint();
193
- }
194
- /**
195
- * Reverts the current checkpoint
196
- */ async revertCheckpoint() {
197
- await this.db.revertCheckpoint();
152
+ constructor(db, bindings){
153
+ this.db = db;
154
+ this.logger = createLogger('simulator:public-trees-db', bindings);
198
155
  }
199
- getMerkleInterface() {
200
- return this.db;
201
- }
202
- /**
203
- * Reads a value from public storage, returning zero if none.
204
- * @param contract - Owner of the storage.
205
- * @param slot - Slot to read in the contract storage.
206
- * @returns The current value in the storage slot.
207
- */ async storageRead(contract, slot) {
208
- return await readPublicState(this.db, contract, slot);
156
+ async storageRead(contract, slot) {
157
+ const timer = new Timer();
158
+ const leafSlot = (await computePublicDataTreeLeafSlot(contract, slot)).toBigInt();
159
+ const lowLeafResult = await this.db.getPreviousValueIndex(MerkleTreeId.PUBLIC_DATA_TREE, leafSlot);
160
+ if (!lowLeafResult) {
161
+ throw new Error('Low leaf not found');
162
+ }
163
+ // TODO: We need this for the hints. See class comment for more details.
164
+ await this.db.getSiblingPath(MerkleTreeId.PUBLIC_DATA_TREE, lowLeafResult.index);
165
+ // Unconditionally fetching the preimage for the hints. Move it to the hinting layer?
166
+ const preimage = await this.db.getLeafPreimage(MerkleTreeId.PUBLIC_DATA_TREE, lowLeafResult.index);
167
+ const result = lowLeafResult.alreadyPresent ? preimage.leaf.value : Fr.ZERO;
168
+ this.logger.debug(`Storage read (contract=${contract}, slot=${slot}, value=${result})`, {
169
+ eventName: 'public-db-access',
170
+ duration: timer.ms(),
171
+ operation: 'storage-read'
172
+ });
173
+ return result;
209
174
  }
210
- /**
211
- * Records a write to public storage.
212
- * @param contract - Owner of the storage.
213
- * @param slot - Slot to read in the contract storage.
214
- * @param newValue - The new value to store.
215
- * @returns The slot of the written leaf in the public data tree.
216
- */ async storageWrite(contract, slot, newValue) {
175
+ async storageWrite(contract, slot, newValue) {
176
+ const timer = new Timer();
217
177
  const leafSlot = await computePublicDataTreeLeafSlot(contract, slot);
218
178
  const publicDataWrite = new PublicDataWrite(leafSlot, newValue);
219
179
  await this.db.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, [
220
180
  publicDataWrite.toBuffer()
221
181
  ]);
182
+ this.logger.debug(`Storage write (contract=${contract}, slot=${slot}, value=${newValue})`, {
183
+ eventName: 'public-db-access',
184
+ duration: timer.ms(),
185
+ operation: 'storage-write'
186
+ });
222
187
  }
223
188
  async getL1ToL2LeafValue(leafIndex) {
224
189
  const timer = new Timer();
190
+ if (leafIndex > L1_TO_L2_MSG_TREE_LEAF_COUNT) {
191
+ throw new L1ToL2MessageIndexOutOfRangeError(Number(leafIndex));
192
+ }
225
193
  const leafValue = await this.db.getLeafValue(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, leafIndex);
226
- this.logger.debug(`[DB] Fetched L1 to L2 message leaf value`, {
194
+ assert(leafValue !== undefined, 'Unexpected null response from l1 to l2 message tree');
195
+ // TODO: We need this for the hints. See class comment for more details.
196
+ await this.db.getSiblingPath(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, leafIndex);
197
+ this.logger.debug(`Fetched L1 to L2 message leaf value (leafIndex=${leafIndex}, value=${leafValue})`, {
227
198
  eventName: 'public-db-access',
228
199
  duration: timer.ms(),
229
200
  operation: 'get-l1-to-l2-message-leaf-value'
230
201
  });
231
202
  return leafValue;
232
203
  }
233
- async getCommitmentValue(leafIndex) {
204
+ async getNoteHash(leafIndex) {
234
205
  const timer = new Timer();
206
+ if (leafIndex > NOTE_HASH_TREE_LEAF_COUNT) {
207
+ throw new NoteHashIndexOutOfRangeError(Number(leafIndex));
208
+ }
235
209
  const leafValue = await this.db.getLeafValue(MerkleTreeId.NOTE_HASH_TREE, leafIndex);
236
- this.logger.debug(`[DB] Fetched commitment leaf value`, {
210
+ assert(leafValue !== undefined, 'Unexpected null response from note hash tree');
211
+ // TODO: We need this for the hints. See class comment for more details.
212
+ await this.db.getSiblingPath(MerkleTreeId.NOTE_HASH_TREE, leafIndex);
213
+ this.logger.debug(`Fetched note hash leaf value (leafIndex=${leafIndex}, value=${leafValue})`, {
237
214
  eventName: 'public-db-access',
238
215
  duration: timer.ms(),
239
- operation: 'get-commitment-leaf-value'
216
+ operation: 'get-note-hash'
240
217
  });
241
218
  return leafValue;
242
219
  }
243
- async getNullifierIndex(nullifier) {
220
+ async writeNoteHash(noteHash) {
244
221
  const timer = new Timer();
245
- const index = (await this.db.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, [
246
- nullifier.toBuffer()
247
- ]))[0];
248
- this.logger.debug(`[DB] Fetched nullifier index`, {
222
+ await this.db.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, [
223
+ noteHash
224
+ ]);
225
+ this.logger.debug(`Wrote note hash (noteHash=${noteHash})`, {
249
226
  eventName: 'public-db-access',
250
227
  duration: timer.ms(),
251
- operation: 'get-nullifier-index'
228
+ operation: 'write-note-hash'
252
229
  });
253
- return index;
254
230
  }
255
- }
256
- export async function readPublicState(db, contract, slot) {
257
- const leafSlot = (await computePublicDataTreeLeafSlot(contract, slot)).toBigInt();
258
- const lowLeafResult = await db.getPreviousValueIndex(MerkleTreeId.PUBLIC_DATA_TREE, leafSlot);
259
- if (!lowLeafResult || !lowLeafResult.alreadyPresent) {
260
- return Fr.ZERO;
231
+ async checkNullifierExists(nullifier) {
232
+ const timer = new Timer();
233
+ const lowLeafResult = await this.db.getPreviousValueIndex(MerkleTreeId.NULLIFIER_TREE, nullifier.toBigInt());
234
+ if (!lowLeafResult) {
235
+ throw new Error('Low leaf not found');
236
+ }
237
+ // TODO: We need this for the hints. See class comment for more details.
238
+ await this.db.getSiblingPath(MerkleTreeId.NULLIFIER_TREE, lowLeafResult.index);
239
+ // TODO: We need this for the hints. See class comment for more details.
240
+ await this.db.getLeafPreimage(MerkleTreeId.NULLIFIER_TREE, lowLeafResult.index);
241
+ const exists = lowLeafResult.alreadyPresent;
242
+ this.logger.debug(`Checked nullifier exists (nullifier=${nullifier}, exists=${exists})`, {
243
+ eventName: 'public-db-access',
244
+ duration: timer.ms(),
245
+ operation: 'check-nullifier-exists'
246
+ });
247
+ return exists;
248
+ }
249
+ async writeNullifier(siloedNullifier) {
250
+ const timer = new Timer();
251
+ await this.db.sequentialInsert(MerkleTreeId.NULLIFIER_TREE, [
252
+ siloedNullifier.toBuffer()
253
+ ]);
254
+ this.logger.debug(`Wrote nullifier (nullifier=${siloedNullifier})`, {
255
+ eventName: 'public-db-access',
256
+ duration: timer.ms(),
257
+ operation: 'write-nullifier'
258
+ });
259
+ }
260
+ async padTree(treeId, leavesToInsert) {
261
+ const timer = new Timer();
262
+ switch(treeId){
263
+ // Indexed trees.
264
+ case MerkleTreeId.NULLIFIER_TREE:
265
+ await this.db.batchInsert(treeId, Array(leavesToInsert).fill(NullifierLeaf.empty().toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
266
+ break;
267
+ case MerkleTreeId.PUBLIC_DATA_TREE:
268
+ await this.db.batchInsert(treeId, Array(leavesToInsert).fill(PublicDataTreeLeaf.empty().toBuffer()), PUBLIC_DATA_SUBTREE_HEIGHT);
269
+ break;
270
+ // Append-only trees.
271
+ case MerkleTreeId.L1_TO_L2_MESSAGE_TREE:
272
+ case MerkleTreeId.NOTE_HASH_TREE:
273
+ await this.db.appendLeaves(treeId, Array(leavesToInsert).fill(Fr.ZERO));
274
+ break;
275
+ default:
276
+ throw new Error(`Padding not supported for tree ${treeId}`);
277
+ }
278
+ this.logger.debug(`Padded tree (tree=${getTreeName(treeId)}, leavesToInsert=${leavesToInsert})`, {
279
+ eventName: 'public-db-access',
280
+ duration: timer.ms(),
281
+ operation: 'pad-tree'
282
+ });
283
+ }
284
+ async createCheckpoint() {
285
+ await this.db.createCheckpoint();
286
+ }
287
+ async commitCheckpoint() {
288
+ await this.db.commitCheckpoint();
289
+ }
290
+ async revertCheckpoint() {
291
+ await this.db.revertCheckpoint();
292
+ }
293
+ async getTreeSnapshots() {
294
+ const stateReference = await this.db.getStateReference();
295
+ return new TreeSnapshots(stateReference.l1ToL2MessageTree, stateReference.partial.noteHashTree, stateReference.partial.nullifierTree, stateReference.partial.publicDataTree);
261
296
  }
262
- const preimage = await db.getLeafPreimage(MerkleTreeId.PUBLIC_DATA_TREE, lowLeafResult.index);
263
- return preimage.value;
264
297
  }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Any known (and checked) error that can be thrown during public execution.
3
+ * Includes AvmExecutionErrors and SideEffectErrors.
4
+ *
5
+ * AvmSimulator catches any checked errors before returning a boolean "reverted".
6
+ * Unchecked errors are generally the result of a bug. They are propagated and
7
+ * ultimately will be the resonsibility of PublicProcessor to handle.
8
+ */
9
+ export declare abstract class CheckedPublicExecutionError extends Error {
10
+ constructor(message: string);
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2Vycm9ycy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFDSCw4QkFBc0IsMkJBQTRCLFNBQVEsS0FBSztJQUM3RCxZQUFZLE9BQU8sRUFBRSxNQUFNLEVBRzFCO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public_errors.d.ts","sourceRoot":"","sources":["../../src/public/public_errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,8BAAsB,2BAA4B,SAAQ,KAAK;IAC7D,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Any known (and checked) error that can be thrown during public execution.
3
+ * Includes AvmExecutionErrors and SideEffectErrors.
4
+ *
5
+ * AvmSimulator catches any checked errors before returning a boolean "reverted".
6
+ * Unchecked errors are generally the result of a bug. They are propagated and
7
+ * ultimately will be the resonsibility of PublicProcessor to handle.
8
+ */ export class CheckedPublicExecutionError extends Error {
9
+ constructor(message){
10
+ super(message);
11
+ this.name = 'CheckedPublicExecutionError';
12
+ }
13
+ }
@@ -0,0 +1,52 @@
1
+ import type { BlockNumber } from '@aztec/foundation/branded-types';
2
+ import type { IndexedTreeLeafPreimage, SiblingPath } from '@aztec/foundation/trees';
3
+ import type { BatchInsertionResult, IndexedTreeId, MerkleTreeId, MerkleTreeLeafType, MerkleTreeWriteOperations, SequentialInsertionResult, TreeHeights, TreeInfo } from '@aztec/stdlib/trees';
4
+ import type { BlockHeader, StateReference } from '@aztec/stdlib/tx';
5
+ import type { WorldStateRevision } from '@aztec/stdlib/world-state';
6
+ /**
7
+ * Wraps an instance of `MerkleTreeWriteOperations` to allow the sequencer to gate access.
8
+ * If transactions execution goes past the deadline, the simulator will continue to execute and update the world state
9
+ * The public processor however requires that the world state remain constant after the deadline in order to finalize the block
10
+ * The public processor provides this implementation of MerkleTreeWriteOperations to the simulator
11
+ */
12
+ export declare class GuardedMerkleTreeOperations implements MerkleTreeWriteOperations {
13
+ private target;
14
+ private isStopped;
15
+ private serialQueue;
16
+ constructor(target: MerkleTreeWriteOperations);
17
+ private guard;
18
+ private guardAndPush;
19
+ getUnderlyingFork(): MerkleTreeWriteOperations;
20
+ stop(): Promise<void>;
21
+ appendLeaves<ID extends MerkleTreeId>(treeId: ID, leaves: MerkleTreeLeafType<ID>[]): Promise<void>;
22
+ updateArchive(header: BlockHeader): Promise<void>;
23
+ batchInsert<TreeHeight extends number, SubtreeSiblingPathHeight extends number, ID extends IndexedTreeId>(treeId: ID, leaves: Buffer[], subtreeHeight: number): Promise<BatchInsertionResult<TreeHeight, SubtreeSiblingPathHeight>>;
24
+ sequentialInsert<TreeHeight extends number, ID extends IndexedTreeId>(treeId: ID, leaves: Buffer[]): Promise<SequentialInsertionResult<TreeHeight>>;
25
+ close(): Promise<void>;
26
+ [Symbol.asyncDispose](): Promise<void>;
27
+ getTreeInfo(treeId: MerkleTreeId): Promise<TreeInfo>;
28
+ getStateReference(): Promise<StateReference>;
29
+ getInitialHeader(): BlockHeader;
30
+ getRevision(): WorldStateRevision;
31
+ getSocketPath(): string;
32
+ getSiblingPath<ID extends MerkleTreeId>(treeId: ID, index: bigint): Promise<SiblingPath<TreeHeights[ID]>>;
33
+ getPreviousValueIndex<ID extends IndexedTreeId>(treeId: ID, value: bigint): Promise<{
34
+ index: bigint;
35
+ alreadyPresent: boolean;
36
+ } | undefined>;
37
+ getLeafPreimage<ID extends IndexedTreeId>(treeId: ID, index: bigint): Promise<IndexedTreeLeafPreimage | undefined>;
38
+ findLeafIndices<ID extends MerkleTreeId>(treeId: ID, values: MerkleTreeLeafType<ID>[]): Promise<(bigint | undefined)[]>;
39
+ findLeafIndicesAfter<ID extends MerkleTreeId>(treeId: ID, values: MerkleTreeLeafType<ID>[], startIndex: bigint): Promise<(bigint | undefined)[]>;
40
+ getLeafValue<ID extends MerkleTreeId>(treeId: ID, index: bigint): Promise<MerkleTreeLeafType<typeof treeId> | undefined>;
41
+ getBlockNumbersForLeafIndices<ID extends MerkleTreeId>(treeId: ID, leafIndices: bigint[]): Promise<(BlockNumber | undefined)[]>;
42
+ createCheckpoint(): Promise<number>;
43
+ commitCheckpoint(): Promise<void>;
44
+ revertCheckpoint(): Promise<void>;
45
+ commitAllCheckpointsTo(depth: number): Promise<void>;
46
+ revertAllCheckpointsTo(depth: number): Promise<void>;
47
+ findSiblingPaths<ID extends MerkleTreeId>(treeId: ID, values: MerkleTreeLeafType<ID>[]): Promise<({
48
+ path: SiblingPath<TreeHeights[ID]>;
49
+ index: bigint;
50
+ } | undefined)[]>;
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmRlZF9tZXJrbGVfdHJlZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfcHJvY2Vzc29yL2d1YXJkZWRfbWVya2xlX3RyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbkUsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEYsT0FBTyxLQUFLLEVBQ1Ysb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIsV0FBVyxFQUNYLFFBQVEsRUFDVCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXBFOzs7OztHQUtHO0FBRUgscUJBQWEsMkJBQTRCLFlBQVcseUJBQXlCO0lBSS9ELE9BQU8sQ0FBQyxNQUFNO0lBSDFCLE9BQU8sQ0FBQyxTQUFTLENBQVM7SUFDMUIsT0FBTyxDQUFDLFdBQVcsQ0FBcUI7SUFFeEMsWUFBb0IsTUFBTSxFQUFFLHlCQUF5QixFQUVwRDtJQUVELE9BQU8sQ0FBQyxLQUFLO0lBT2IsT0FBTyxDQUFDLFlBQVk7SUFRYixpQkFBaUIsSUFBSSx5QkFBeUIsQ0FFcEQ7SUFHSyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQU0xQjtJQUdELFlBQVksQ0FBQyxFQUFFLFNBQVMsWUFBWSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUVqRztJQUVELGFB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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guarded_merkle_tree.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/guarded_merkle_tree.ts"],"names":[],"mappings":"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"}