@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
@@ -0,0 +1,303 @@
1
+ import {
2
+ MAX_ENQUEUED_CALLS_PER_TX,
3
+ MAX_L2_TO_L1_MSGS_PER_TX,
4
+ MAX_NOTE_HASHES_PER_TX,
5
+ MAX_NULLIFIERS_PER_TX,
6
+ MAX_PRIVATE_LOGS_PER_TX,
7
+ MAX_PROTOCOL_CONTRACTS,
8
+ } from '@aztec/constants';
9
+ import { padArrayEnd } from '@aztec/foundation/collection';
10
+ import { Fr } from '@aztec/foundation/curves/bn254';
11
+ import { AvmTxHint, type PublicTxResult } from '@aztec/stdlib/avm';
12
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
13
+ import { contractClassPublicFromPlainObject, contractInstanceWithAddressFromPlainObject } from '@aztec/stdlib/contract';
14
+ import {
15
+ PartialPrivateTailPublicInputsForPublic,
16
+ PrivateKernelTailCircuitPublicInputs,
17
+ PrivateToPublicAccumulatedData,
18
+ PublicCallRequest,
19
+ } from '@aztec/stdlib/kernel';
20
+ import { PrivateLog } from '@aztec/stdlib/logs';
21
+ import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
22
+ import { ChonkProof } from '@aztec/stdlib/proofs';
23
+ import { MerkleTreeId, type MerkleTreeWriteOperations, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
24
+ import {
25
+ BlockHeader,
26
+ GlobalVariables,
27
+ HashedValues,
28
+ ProtocolContracts,
29
+ Tx,
30
+ TxConstantData,
31
+ TxContext,
32
+ TxHash,
33
+ } from '@aztec/stdlib/tx';
34
+ import type { NativeWorldStateService } from '@aztec/world-state';
35
+
36
+ import { BaseAvmSimulationTester } from '../avm/testing/base_avm_simulation_tester.js';
37
+ import { AvmSimulatorPool } from '../avm_simulator_pool.js';
38
+ import { SimpleContractDataSource } from '../fixtures/simple_contract_data_source.js';
39
+ import { PublicContractsDB } from '../public_db_sources.js';
40
+ import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
41
+
42
+ /**
43
+ * Request structure for fuzzer simulation communication from C++.
44
+ * Matches the C++ FuzzerSimulationRequest struct
45
+ */
46
+ export class FuzzerSimulationRequest {
47
+ constructor(
48
+ public readonly wsDataDir: string,
49
+ public readonly wsMapSizeKb: number,
50
+ public readonly tx: AvmTxHint,
51
+ public readonly globals: GlobalVariables,
52
+ public readonly contractClasses: any[], // Raw, processed by addContractClassFromCpp
53
+ public readonly contractInstances: [any, any][], // Raw pairs [address, instance]
54
+ public readonly publicDataWrites: any[], // Raw public data tree writes to apply before simulation
55
+ public readonly noteHashes: any[], // Raw note hashes to apply before simulation
56
+ public readonly protocolContracts: ProtocolContracts, // Protocol contracts mapping from C++
57
+ ) {}
58
+
59
+ static fromPlainObject(obj: any): FuzzerSimulationRequest {
60
+ if (obj instanceof FuzzerSimulationRequest) {
61
+ return obj;
62
+ }
63
+ return new FuzzerSimulationRequest(
64
+ obj.wsDataDir,
65
+ obj.wsMapSizeKb,
66
+ AvmTxHint.fromPlainObject(obj.tx),
67
+ GlobalVariables.fromPlainObject(obj.globals),
68
+ obj.contractClasses,
69
+ obj.contractInstances,
70
+ obj.publicDataWrites ?? [],
71
+ obj.noteHashes ?? [],
72
+ ProtocolContracts.fromPlainObject(obj.protocolContracts),
73
+ );
74
+ }
75
+ }
76
+
77
+ /**
78
+ * Creates a TypeScript Tx object from a deserialized C++ Tx (AvmTxHint-like structure).
79
+ * This allows simulating fuzzer-generated transactions with the C++ public tx simulator.
80
+ */
81
+ async function createTxFromHint(cppTx: AvmTxHint): Promise<Tx> {
82
+ // Create TxHash from the C++ tx hash string
83
+ if (!cppTx.hash) {
84
+ throw new Error(`cppTx.hash is undefined. Keys: ${Object.keys(cppTx || {}).join(', ')}`);
85
+ }
86
+ const txHash = TxHash.fromString(cppTx.hash);
87
+
88
+ // Extract PublicCallRequest instances from enqueued calls
89
+ const setupCallRequests = cppTx.setupEnqueuedCalls.map(call => call.request);
90
+ const paddedSetupCalls = padArrayEnd(setupCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX);
91
+
92
+ const appLogicCallRequests = cppTx.appLogicEnqueuedCalls.map(call => call.request);
93
+ const paddedAppLogicCalls = padArrayEnd(appLogicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX);
94
+
95
+ // Build non-revertible accumulated data from C++ tx
96
+ const emptyNonRevertible = PrivateToPublicAccumulatedData.empty();
97
+ const nonRevertibleAccumulatedData = new PrivateToPublicAccumulatedData(
98
+ padArrayEnd(cppTx.nonRevertibleAccumulatedData.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
99
+ padArrayEnd(cppTx.nonRevertibleAccumulatedData.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
100
+ padArrayEnd(
101
+ cppTx.nonRevertibleAccumulatedData.l2ToL1Messages,
102
+ ScopedL2ToL1Message.empty(),
103
+ MAX_L2_TO_L1_MSGS_PER_TX,
104
+ ),
105
+ padArrayEnd(cppTx.nonRevertibleContractDeploymentData.privateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
106
+ emptyNonRevertible.contractClassLogsHashes,
107
+ paddedSetupCalls,
108
+ );
109
+
110
+ // Build revertible accumulated data from C++ tx
111
+ const emptyRevertible = PrivateToPublicAccumulatedData.empty();
112
+ const revertibleAccumulatedData = new PrivateToPublicAccumulatedData(
113
+ padArrayEnd(cppTx.revertibleAccumulatedData.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
114
+ padArrayEnd(cppTx.revertibleAccumulatedData.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
115
+ padArrayEnd(cppTx.revertibleAccumulatedData.l2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
116
+ padArrayEnd(cppTx.revertibleContractDeploymentData.privateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
117
+ emptyRevertible.contractClassLogsHashes,
118
+ paddedAppLogicCalls,
119
+ );
120
+
121
+ // Build teardown call request (if exists)
122
+ const teardownCallRequest = cppTx.teardownEnqueuedCall?.request ?? PublicCallRequest.empty();
123
+
124
+ // Create forPublic structure
125
+ const forPublic = new PartialPrivateTailPublicInputsForPublic(
126
+ nonRevertibleAccumulatedData,
127
+ revertibleAccumulatedData,
128
+ teardownCallRequest,
129
+ );
130
+
131
+ // Build TxContext - gasSettings is already a proper GasSettings after AvmTxHint.fromPlainObject
132
+ const txContext = new TxContext(
133
+ Fr.ZERO, // chainId - this is fine because simulation actually reads from globalVariables not here
134
+ Fr.ZERO, // version - this is fine because simulation actually reads from globalVariables not here
135
+ cppTx.gasSettings,
136
+ );
137
+
138
+ // Build TxConstantData
139
+ const constants = new TxConstantData(
140
+ BlockHeader.empty(), // anchorBlockHeader (unused in simulation)
141
+ txContext,
142
+ Fr.ZERO, // vkTreeRoot - not needed for public simulation
143
+ Fr.ZERO, // protocolContractsHash - not needed for public simulation
144
+ );
145
+
146
+ const data = new PrivateKernelTailCircuitPublicInputs(
147
+ constants,
148
+ cppTx.gasUsedByPrivate,
149
+ cppTx.feePayer,
150
+ 0n, // expirationTimestamp
151
+ forPublic,
152
+ undefined, // forRollup - not needed for public simulation
153
+ );
154
+
155
+ // Build publicFunctionCalldata from all enqueued calls
156
+ // Calldata is already Fr[] after AvmTxHint.fromPlainObject
157
+ const publicFunctionCalldata: HashedValues[] = [];
158
+
159
+ // Add setup calls
160
+ for (const call of cppTx.setupEnqueuedCalls || []) {
161
+ publicFunctionCalldata.push(await HashedValues.fromCalldata(call.calldata));
162
+ }
163
+
164
+ // Add app logic calls
165
+ for (const call of cppTx.appLogicEnqueuedCalls || []) {
166
+ publicFunctionCalldata.push(await HashedValues.fromCalldata(call.calldata));
167
+ }
168
+
169
+ // Add teardown call if present
170
+ if (cppTx.teardownEnqueuedCall) {
171
+ publicFunctionCalldata.push(await HashedValues.fromCalldata(cppTx.teardownEnqueuedCall.calldata));
172
+ }
173
+
174
+ // Extract contract class log fields from ContractDeploymentData
175
+ const contractClassLogFields = [
176
+ ...cppTx.nonRevertibleContractDeploymentData.contractClassLogs.map(log => log.fields),
177
+ ...cppTx.revertibleContractDeploymentData.contractClassLogs.map(log => log.fields),
178
+ ];
179
+
180
+ // Create the Tx
181
+ return new Tx(
182
+ txHash,
183
+ data,
184
+ ChonkProof.empty(), // No real proof needed for simulation
185
+ contractClassLogFields,
186
+ publicFunctionCalldata,
187
+ );
188
+ }
189
+
190
+ /**
191
+ * A simulator class for the AVM fuzzer that extends BaseAvmSimulationTester.
192
+ * It provides methods for registering contracts from C++ msgpack data and simulating transactions.
193
+ * The simulation itself runs on the production C++ AVM simulator, so the fuzzer compares brillig
194
+ * execution against the real AVM rather than a TS reference.
195
+ */
196
+ export class AvmFuzzerSimulator extends BaseAvmSimulationTester {
197
+ private simulator: PublicTxSimulator;
198
+
199
+ constructor(
200
+ merkleTrees: MerkleTreeWriteOperations,
201
+ contractDataSource: SimpleContractDataSource,
202
+ globals: GlobalVariables,
203
+ private avmSimulator: AvmSimulatorPool,
204
+ contractsDB: PublicContractsDB,
205
+ forkId: number,
206
+ ) {
207
+ super(contractDataSource, merkleTrees);
208
+ // collectPublicInputs and collectCallMetadata are required so the C++ result carries the end
209
+ // tree snapshots and app-logic return values that the fuzzer bin reports back to the harness.
210
+ this.simulator = new PublicTxSimulator(
211
+ avmSimulator,
212
+ globals,
213
+ contractsDB,
214
+ forkId,
215
+ {
216
+ skipFeeEnforcement: false,
217
+ collectDebugLogs: false,
218
+ collectHints: false,
219
+ collectPublicInputs: true,
220
+ collectStatistics: false,
221
+ collectCallMetadata: true,
222
+ },
223
+ undefined,
224
+ );
225
+ }
226
+
227
+ /**
228
+ * Static factory method to create an AvmFuzzerSimulator.
229
+ */
230
+ public static async create(
231
+ worldStateService: NativeWorldStateService,
232
+ globals: GlobalVariables,
233
+ ): Promise<AvmFuzzerSimulator> {
234
+ const contractDataSource = new SimpleContractDataSource();
235
+ const merkleTrees = await worldStateService.fork();
236
+ const forkId = merkleTrees.getRevision().forkId;
237
+ const avmSimulator = await AvmSimulatorPool.spawn({ wsdbIpcPath: worldStateService.getIpcPath() });
238
+ const contractsDB = new PublicContractsDB(contractDataSource);
239
+ return new AvmFuzzerSimulator(merkleTrees, contractDataSource, globals, avmSimulator, contractsDB, forkId);
240
+ }
241
+
242
+ /** Tear down the AVM simulator pool (AVM processes and CDB server). */
243
+ public async close(): Promise<void> {
244
+ await this.avmSimulator[Symbol.asyncDispose]();
245
+ }
246
+
247
+ /**
248
+ * Simulate a transaction from a C++ AvmTxHint.
249
+ */
250
+ public async simulate(txHint: AvmTxHint): Promise<PublicTxResult> {
251
+ // Compute fee from gas limits and max fees per gas (upper bound on fee)
252
+ const totalFee =
253
+ BigInt(txHint.gasSettings.gasLimits.daGas) * txHint.gasSettings.maxFeesPerGas.feePerDaGas +
254
+ BigInt(txHint.gasSettings.gasLimits.l2Gas) * txHint.gasSettings.maxFeesPerGas.feePerL2Gas;
255
+
256
+ await this.setFeePayerBalance(txHint.feePayer, new Fr(totalFee));
257
+
258
+ const tx = await createTxFromHint(txHint);
259
+ return await this.simulator.simulate(tx);
260
+ }
261
+
262
+ /**
263
+ * Add a contract class from C++ raw msgpack data.
264
+ */
265
+ public async addContractClassFromCpp(rawClass: any): Promise<void> {
266
+ const contractClass = contractClassPublicFromPlainObject(rawClass);
267
+ await this.contractDataSource.addContractClass(contractClass);
268
+ }
269
+
270
+ /**
271
+ * Add a contract instance from C++ raw msgpack data.
272
+ * This also inserts the contract address nullifier into the nullifier tree,
273
+ * unless the address is a protocol canonical address (1-11).
274
+ */
275
+ public async addContractInstanceFromCpp(rawAddress: any, rawInstance: any): Promise<void> {
276
+ const address = AztecAddress.fromPlainObject(rawAddress);
277
+ const instance = contractInstanceWithAddressFromPlainObject(address, rawInstance);
278
+ // Protocol canonical addresses (1-11) should not have nullifiers inserted
279
+ const isProtocolCanonicalAddress = address.toBigInt() <= MAX_PROTOCOL_CONTRACTS && address.toBigInt() >= 1n;
280
+ await this.addContractInstance(instance, /* skipNullifierInsertion */ isProtocolCanonicalAddress);
281
+ }
282
+
283
+ /**
284
+ * Apply public data tree writes from C++ raw msgpack data.
285
+ * This is used to pre-populate the public data tree before simulation (e.g., for bytecode upgrades).
286
+ */
287
+ public async applyPublicDataWrites(rawWrites: any[]): Promise<void> {
288
+ for (const rawWrite of rawWrites) {
289
+ const leaf = PublicDataTreeLeaf.fromPlainObject(rawWrite);
290
+ await this.merkleTrees.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, [leaf.toBuffer()]);
291
+ }
292
+ }
293
+
294
+ /**
295
+ * Apply note hashes from C++ raw msgpack data.
296
+ * This is used to pre-populate the note hash tree before simulation.
297
+ */
298
+ public async applyNoteHashes(rawNoteHashes: any[]): Promise<void> {
299
+ const paddingLeaves = MAX_NOTE_HASHES_PER_TX - (rawNoteHashes.length % MAX_NOTE_HASHES_PER_TX);
300
+ const paddedNoteHashes = [...rawNoteHashes, ...Array(paddingLeaves).fill(Fr.ZERO)];
301
+ await this.merkleTrees.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, paddedNoteHashes);
302
+ }
303
+ }
@@ -0,0 +1,173 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { EthAddress } from '@aztec/foundation/eth-address';
3
+ import {
4
+ AvmCircuitPublicInputs,
5
+ type AvmTxHint,
6
+ PublicTxEffect,
7
+ deserializeFromMessagePack,
8
+ serializeWithMessagePack,
9
+ } from '@aztec/stdlib/avm';
10
+ import { GlobalVariables, TreeSnapshots } from '@aztec/stdlib/tx';
11
+ import { NativeWorldStateService } from '@aztec/world-state';
12
+
13
+ import { createInterface } from 'readline';
14
+
15
+ import { AvmFuzzerSimulator, FuzzerSimulationRequest } from './avm_fuzzer_simulator.js';
16
+
17
+ /** Write data to stdout, letting Node handle buffering. */
18
+ function writeOutput(data: string): Promise<void> {
19
+ return new Promise<void>((resolve, reject) => {
20
+ process.stdout.write(data, err => {
21
+ if (err) {
22
+ reject(err);
23
+ } else {
24
+ resolve();
25
+ }
26
+ });
27
+ });
28
+ }
29
+
30
+ // This cache holds opened world states to avoid reopening them for each invocation.
31
+ // It's a map so that in the future we could support multiple world states (if we had multiple fuzzers).
32
+ const worldStateCache = new Map<string, NativeWorldStateService>();
33
+
34
+ async function openExistingWorldState(dataDir: string, mapSizeKb: number): Promise<NativeWorldStateService> {
35
+ const cached = worldStateCache.get(dataDir);
36
+ if (cached) {
37
+ return cached;
38
+ }
39
+
40
+ const ws = await NativeWorldStateService.new(EthAddress.ZERO, dataDir, {
41
+ archiveTreeMapSizeKb: mapSizeKb,
42
+ nullifierTreeMapSizeKb: mapSizeKb,
43
+ noteHashTreeMapSizeKb: mapSizeKb,
44
+ messageTreeMapSizeKb: mapSizeKb,
45
+ publicDataTreeMapSizeKb: mapSizeKb,
46
+ });
47
+
48
+ worldStateCache.set(dataDir, ws);
49
+ return ws;
50
+ }
51
+
52
+ async function simulateWithFuzzer(
53
+ dataDir: string,
54
+ mapSizeKb: number,
55
+ txHint: AvmTxHint,
56
+ globals: GlobalVariables,
57
+ rawContractClasses: any[], // Replace these when we are moving contract classes to TS
58
+ rawContractInstances: [any, any][], // Replace these when we are moving contract instances to TS
59
+ rawPublicDataWrites: any[], // Public data tree writes to apply before simulation
60
+ rawNoteHashes: any[], // Note hashes to apply before simulation
61
+ ): Promise<{
62
+ reverted: boolean;
63
+ output: Fr[];
64
+ revertReason?: string;
65
+ publicInputs: AvmCircuitPublicInputs;
66
+ publicTxEffect: PublicTxEffect;
67
+ }> {
68
+ const worldStateService = await openExistingWorldState(dataDir, mapSizeKb);
69
+
70
+ const simulator = await AvmFuzzerSimulator.create(worldStateService, globals);
71
+
72
+ await simulator.applyNoteHashes(rawNoteHashes);
73
+
74
+ // Register contract classes from C++ (must happen before public data writes to match C++ order)
75
+ for (const rawClass of rawContractClasses) {
76
+ await simulator.addContractClassFromCpp(rawClass);
77
+ }
78
+
79
+ // Register contract instances from C++
80
+ for (const [rawAddress, rawInstance] of rawContractInstances) {
81
+ await simulator.addContractInstanceFromCpp(rawAddress, rawInstance);
82
+ }
83
+
84
+ // Apply public data writes after contract registration (e.g., for bytecode upgrades)
85
+ // This must happen last to match C++ setup_fuzzer_state ordering
86
+ await simulator.applyPublicDataWrites(rawPublicDataWrites);
87
+
88
+ const result = await simulator.simulate(txHint);
89
+
90
+ const output = result
91
+ .getAppLogicReturnValues()
92
+ .flatMap((rv: { values?: Fr[] } | undefined) => rv?.values?.filter((v: Fr | null | undefined) => v != null) ?? []);
93
+
94
+ return {
95
+ reverted: !result.revertCode.isOK(),
96
+ output,
97
+ revertReason: result.findRevertReason()?.message,
98
+ publicInputs: result.publicInputs!,
99
+ publicTxEffect: result.publicTxEffect,
100
+ };
101
+ }
102
+
103
+ async function execute(base64Line: string): Promise<void> {
104
+ try {
105
+ // Decode base64 and deserialize the entire request from msgpack
106
+ const buffer = Buffer.from(base64Line.trim(), 'base64');
107
+ const rawRequest = deserializeFromMessagePack(buffer);
108
+ const request = FuzzerSimulationRequest.fromPlainObject(rawRequest);
109
+
110
+ // Run the simulation on the C++ AVM simulator
111
+ const result = await simulateWithFuzzer(
112
+ request.wsDataDir,
113
+ request.wsMapSizeKb,
114
+ request.tx,
115
+ request.globals,
116
+ request.contractClasses,
117
+ request.contractInstances,
118
+ request.publicDataWrites,
119
+ request.noteHashes,
120
+ );
121
+
122
+ // Serialize the result to msgpack and encode it in base64 for output
123
+ const resultBuffer = serializeWithMessagePack({
124
+ reverted: result.reverted,
125
+ output: result.output,
126
+ revertReason: result.revertReason ?? '',
127
+ endTreeSnapshots: result.publicInputs.endTreeSnapshots,
128
+ publicTxEffect: result.publicTxEffect,
129
+ });
130
+ const base64Response = resultBuffer.toString('base64') + '\n';
131
+ await writeOutput(base64Response);
132
+ } catch (error: any) {
133
+ // If we error, treat as reverted
134
+ const errorResult = serializeWithMessagePack({
135
+ reverted: true,
136
+ output: [] as Fr[],
137
+ revertReason: `Unexpected Error ${error.message}`,
138
+ endTreeSnapshots: TreeSnapshots.empty(),
139
+ publicTxEffect: PublicTxEffect.empty(),
140
+ });
141
+ await writeOutput(errorResult.toString('base64') + '\n');
142
+ }
143
+ }
144
+
145
+ function mainLoop() {
146
+ const rl = createInterface({ input: process.stdin, terminal: false });
147
+
148
+ // Process lines sequentially to avoid race conditions in responses
149
+ const lineQueue: string[] = [];
150
+ let processing = false;
151
+
152
+ async function processQueue() {
153
+ if (processing || lineQueue.length === 0) {
154
+ return;
155
+ }
156
+ processing = true;
157
+ while (lineQueue.length > 0) {
158
+ const line = lineQueue.shift()!;
159
+ await execute(line);
160
+ }
161
+ processing = false;
162
+ }
163
+
164
+ rl.on('line', (line: string) => {
165
+ if (line.trim()) {
166
+ lineQueue.push(line);
167
+ void processQueue();
168
+ }
169
+ });
170
+ rl.on('close', () => process.exit(0));
171
+ }
172
+
173
+ void mainLoop();
@@ -1,10 +1,16 @@
1
+ export { AvmSimulatorPool, type AvmSimulatorPoolOptions } from './avm_simulator_pool.js';
2
+ export type { PublicContractsDBInterface } from './db_interfaces.js';
1
3
  export { PublicContractsDB } from './public_db_sources.js';
2
4
  export { GuardedMerkleTreeOperations } from './public_processor/guarded_merkle_tree.js';
3
5
  export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
6
+ export type { AvmContractsDBContext, AvmSimulator } from './avm_simulator.js';
4
7
  export {
5
8
  PublicTxSimulator,
6
- type PublicTxSimulatorConfig,
9
+ MeasuredPublicTxSimulator,
10
+ createPublicTxSimulatorForBlockBuilding,
11
+ DumpingPublicTxSimulator,
12
+ type PublicTxSimulatorInterface,
7
13
  TelemetryPublicTxSimulator,
8
- type PublicTxResult,
9
14
  } from './public_tx_simulator/index.js';
15
+ export type { PublicTxResult, PublicSimulatorConfig as PublicTxSimulatorConfig } from '@aztec/stdlib/avm';
10
16
  export { getCallRequestsWithCalldataByPhase } from './utils.js';