@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,13 +1,26 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
3
3
  import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
4
4
  import { Gas } from '@aztec/stdlib/gas';
5
- import { type PublicExecutionRequest, Tx } from '@aztec/stdlib/tx';
5
+ import type { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
6
+ import { GlobalVariables, PublicCallRequestWithCalldata, Tx } from '@aztec/stdlib/tx';
7
+ export type TestPrivateInsertions = {
8
+ revertible?: {
9
+ nullifiers?: Fr[];
10
+ noteHashes?: Fr[];
11
+ l2ToL1Msgs?: ScopedL2ToL1Message[];
12
+ };
13
+ nonRevertible?: {
14
+ nullifiers?: Fr[];
15
+ noteHashes?: Fr[];
16
+ l2ToL1Msgs?: ScopedL2ToL1Message[];
17
+ };
18
+ };
6
19
  /**
7
20
  * Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
8
21
  */
9
- export declare function createTxForPublicCalls(firstNullifier: Fr, setupExecutionRequests: PublicExecutionRequest[], appExecutionRequests: PublicExecutionRequest[], teardownExecutionRequest?: PublicExecutionRequest, feePayer?: AztecAddress, gasUsedByPrivate?: Gas): Promise<Tx>;
10
- export declare function createTxForPrivateOnly(feePayer?: AztecAddress, gasUsedByPrivate?: Gas): Tx;
22
+ export declare function createTxForPublicCalls(privateInsertions: TestPrivateInsertions, setupCallRequests: PublicCallRequestWithCalldata[], appCallRequests: PublicCallRequestWithCalldata[], teardownCallRequest?: PublicCallRequestWithCalldata, feePayer?: AztecAddress, gasUsedByPrivate?: Gas, globals?: GlobalVariables, gasLimits?: Gas): Promise<Tx>;
23
+ export declare function createTxForPrivateOnly(feePayer?: AztecAddress, gasUsedByPrivate?: Gas): Promise<Tx>;
11
24
  export declare function addNewContractClassToTx(tx: Tx, contractClass: ContractClassPublic, skipNullifierInsertion?: boolean): Promise<void>;
12
25
  export declare function addNewContractInstanceToTx(tx: Tx, contractInstance: ContractInstanceWithAddress, skipNullifierInsertion?: boolean): Promise<void>;
13
- //# sourceMappingURL=utils.d.ts.map
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvZml4dHVyZXMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9GLE9BQU8sRUFHTCxHQUFHLEVBR0osTUFBTSxtQkFBbUIsQ0FBQztBQVUzQixPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5FLE9BQU8sRUFFTCxlQUFlLEVBRWYsNkJBQTZCLEVBQzdCLEVBQUUsRUFHSCxNQUFNLGtCQUFrQixDQUFDO0FBSTFCLE1BQU0sTUFBTSxxQkFBcUIsR0FBRztJQUNsQyxVQUFVLENBQUMsRUFBRTtRQUNYLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLENBQUM7S0FDcEMsQ0FBQztJQUNGLGFBQWEsQ0FBQyxFQUFFO1FBQ2QsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDbEIsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDbEIsVUFBVSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztLQUNwQyxDQUFDO0NBQ0gsQ0FBQztBQUVGOztHQUVHO0FBQ0gsd0JBQXNCLHNCQUFzQixDQUMxQyxpQkFBaUIsRUFBRSxxQkFBcUIsRUFDeEMsaUJBQWlCLEVBQUUsNkJBQTZCLEVBQUUsRUFDbEQsZUFBZSxFQUFFLDZCQUE2QixFQUFFLEVBQ2hELG1CQUFtQixDQUFDLEVBQUUsNkJBQTZCLEVBQ25ELFFBQVEsZUFBc0IsRUFDOUIsZ0JBQWdCLEdBQUUsR0FBaUIsRUFDbkMsT0FBTyxHQUFFLGVBQXlDLEVBQ2xELFNBQVMsQ0FBQyxFQUFFLEdBQUcsR0FDZCxPQUFPLENBQUMsRUFBRSxDQUFDLENBOEZiO0FBRUQsd0JBQXNCLHNCQUFzQixDQUMxQyxRQUFRLGVBQXNCLEVBQzlCLGdCQUFnQixHQUFFLEdBQXFCLEdBQ3RDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0EwQmI7QUFFRCx3QkFBc0IsdUJBQXVCLENBQzNDLEVBQUUsRUFBRSxFQUFFLEVBQ04sYUFBYSxFQUFFLG1CQUFtQixFQUNsQyxzQkFBc0IsVUFBUSxpQkE2Qi9CO0FBRUQsd0JBQXNCLDBCQUEwQixDQUM5QyxFQUFFLEVBQUUsRUFBRSxFQUNOLGdCQUFnQixFQUFFLDJCQUEyQixFQUM3QyxzQkFBc0IsVUFBUSxpQkF5Qy9CIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/utils.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,GAAG,EAAwB,MAAM,mBAAmB,CAAC;AAW9D,OAAO,EAAE,KAAK,sBAAsB,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAKnE;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,cAAc,EAAE,EAAE,EAClB,sBAAsB,EAAE,sBAAsB,EAAE,EAChD,oBAAoB,EAAE,sBAAsB,EAAE,EAC9C,wBAAwB,CAAC,EAAE,sBAAsB,EACjD,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAiB,GAClC,OAAO,CAAC,EAAE,CAAC,CAkDb;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,eAAsB,EAAE,gBAAgB,GAAE,GAAqB,GAAG,EAAE,CAoBlH;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,aAAa,EAAE,mBAAmB,EAClC,sBAAsB,UAAQ,iBAiC/B;AAED,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,EAAE,EACN,gBAAgB,EAAE,2BAA2B,EAC7C,sBAAsB,UAAQ,iBA0C/B"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/utils.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAGL,GAAG,EAGJ,MAAM,mBAAmB,CAAC;AAU3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAEL,eAAe,EAEf,6BAA6B,EAC7B,EAAE,EAGH,MAAM,kBAAkB,CAAC;AAI1B,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,CAAC,EAAE;QACX,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;IACF,aAAa,CAAC,EAAE;QACd,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,iBAAiB,EAAE,qBAAqB,EACxC,iBAAiB,EAAE,6BAA6B,EAAE,EAClD,eAAe,EAAE,6BAA6B,EAAE,EAChD,mBAAmB,CAAC,EAAE,6BAA6B,EACnD,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAiB,EACnC,OAAO,GAAE,eAAyC,EAClD,SAAS,CAAC,EAAE,GAAG,GACd,OAAO,CAAC,EAAE,CAAC,CA8Fb;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAqB,GACtC,OAAO,CAAC,EAAE,CAAC,CA0Bb;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,aAAa,EAAE,mBAAmB,EAClC,sBAAsB,UAAQ,iBA6B/B;AAED,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,EAAE,EACN,gBAAgB,EAAE,2BAA2B,EAC7C,sBAAsB,UAAQ,iBAyC/B"}
@@ -1,84 +1,130 @@
1
- import { CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS, DEFAULT_GAS_LIMIT, DEPLOYER_CONTRACT_ADDRESS, MAX_L2_GAS_PER_TX_PUBLIC_PORTION, PRIVATE_LOG_SIZE_IN_FIELDS, REGISTERER_CONTRACT_ADDRESS, REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE } from '@aztec/constants';
2
- import { Fr } from '@aztec/foundation/fields';
3
- import { assertLength } from '@aztec/foundation/serialize';
4
- import { DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG } from '@aztec/protocol-contracts';
1
+ import { CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE, CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS, CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS, MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, MAX_PROCESSABLE_L2_GAS, PRIVATE_LOG_SIZE_IN_FIELDS } from '@aztec/constants';
2
+ import { padArrayEnd } from '@aztec/foundation/collection';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
+ import { CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG } from '@aztec/protocol-contracts';
5
5
  import { bufferAsFields } from '@aztec/stdlib/abi';
6
6
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
7
- import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
7
+ import { FALLBACK_TEARDOWN_DA_GAS_LIMIT, FALLBACK_TEARDOWN_L2_GAS_LIMIT, Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
8
8
  import { siloNullifier } from '@aztec/stdlib/hash';
9
- import { PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateKernelTailCircuitPublicInputs, RollupValidationRequests, ScopedLogHash, countAccumulatedItems } from '@aztec/stdlib/kernel';
10
- import { ContractClassLog, PrivateLog } from '@aztec/stdlib/logs';
11
- import { Tx } from '@aztec/stdlib/tx';
12
- import { BlockHeader, TxConstantData, TxContext } from '@aztec/stdlib/tx';
9
+ import { LogHash, PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateKernelTailCircuitPublicInputs, countAccumulatedItems } from '@aztec/stdlib/kernel';
10
+ import { ContractClassLogFields, PrivateLog } from '@aztec/stdlib/logs';
11
+ import { ChonkProof } from '@aztec/stdlib/proofs';
12
+ import { BlockHeader, GlobalVariables, HashedValues, Tx, TxConstantData, TxContext } from '@aztec/stdlib/tx';
13
13
  import { strict as assert } from 'assert';
14
14
  /**
15
15
  * Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
16
- */ export async function createTxForPublicCalls(firstNullifier, setupExecutionRequests, appExecutionRequests, teardownExecutionRequest, feePayer = AztecAddress.zero(), gasUsedByPrivate = Gas.empty()) {
17
- assert(setupExecutionRequests.length > 0 || appExecutionRequests.length > 0 || teardownExecutionRequest !== undefined, "Can't create public tx with no enqueued calls");
18
- const setupCallRequests = await Promise.all(setupExecutionRequests.map((er)=>er.toCallRequest()));
19
- const appCallRequests = await Promise.all(appExecutionRequests.map((er)=>er.toCallRequest()));
16
+ */ export async function createTxForPublicCalls(privateInsertions, setupCallRequests, appCallRequests, teardownCallRequest, feePayer = AztecAddress.zero(), gasUsedByPrivate = Gas.empty(), globals = GlobalVariables.empty(), gasLimits) {
17
+ assert(setupCallRequests.length > 0 || appCallRequests.length > 0 || teardownCallRequest !== undefined, "Can't create public tx with no enqueued calls");
20
18
  // use max limits
21
- const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
19
+ gasLimits = gasLimits ?? new Gas(MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, MAX_PROCESSABLE_L2_GAS);
22
20
  const forPublic = PartialPrivateTailPublicInputsForPublic.empty();
23
- // TODO(#9269): Remove this fake nullifier method as we move away from 1st nullifier as hash.
24
- forPublic.nonRevertibleAccumulatedData.nullifiers[0] = firstNullifier;
25
- // We reverse order because the simulator expects it to be like a "stack" of calls to pop from
26
- for(let i = setupCallRequests.length - 1; i >= 0; i--){
27
- forPublic.nonRevertibleAccumulatedData.publicCallRequests[i] = setupCallRequests[i];
21
+ // Non revertible private insertions
22
+ if (!privateInsertions.nonRevertible?.nullifiers?.length) {
23
+ throw new Error('At least one non-revertible nullifier is required');
28
24
  }
29
- for(let i = appCallRequests.length - 1; i >= 0; i--){
30
- forPublic.revertibleAccumulatedData.publicCallRequests[i] = appCallRequests[i];
25
+ for(let i = 0; i < privateInsertions.nonRevertible.nullifiers.length; i++){
26
+ assert(i < forPublic.nonRevertibleAccumulatedData.nullifiers.length, 'Nullifier index out of bounds');
27
+ forPublic.nonRevertibleAccumulatedData.nullifiers[i] = privateInsertions.nonRevertible.nullifiers[i];
31
28
  }
32
- if (teardownExecutionRequest) {
33
- forPublic.publicTeardownCallRequest = await teardownExecutionRequest.toCallRequest();
29
+ if (privateInsertions.nonRevertible.noteHashes) {
30
+ for(let i = 0; i < privateInsertions.nonRevertible.noteHashes.length; i++){
31
+ assert(i < forPublic.nonRevertibleAccumulatedData.noteHashes.length, 'Note hash index out of bounds');
32
+ forPublic.nonRevertibleAccumulatedData.noteHashes[i] = privateInsertions.nonRevertible.noteHashes[i];
33
+ }
34
+ }
35
+ if (privateInsertions.nonRevertible.l2ToL1Msgs) {
36
+ for(let i = 0; i < privateInsertions.nonRevertible.l2ToL1Msgs.length; i++){
37
+ assert(i < forPublic.nonRevertibleAccumulatedData.l2ToL1Msgs.length, 'L2 to L1 message index out of bounds');
38
+ forPublic.nonRevertibleAccumulatedData.l2ToL1Msgs[i] = privateInsertions.nonRevertible.l2ToL1Msgs[i];
39
+ }
40
+ }
41
+ // Revertible private insertions
42
+ if (privateInsertions.revertible) {
43
+ if (privateInsertions.revertible.noteHashes) {
44
+ for(let i = 0; i < privateInsertions.revertible.noteHashes.length; i++){
45
+ assert(i < forPublic.revertibleAccumulatedData.noteHashes.length, 'Note hash index out of bounds');
46
+ forPublic.revertibleAccumulatedData.noteHashes[i] = privateInsertions.revertible.noteHashes[i];
47
+ }
48
+ }
49
+ if (privateInsertions.revertible.nullifiers) {
50
+ for(let i = 0; i < privateInsertions.revertible.nullifiers.length; i++){
51
+ assert(i < forPublic.revertibleAccumulatedData.nullifiers.length, 'Nullifier index out of bounds');
52
+ forPublic.revertibleAccumulatedData.nullifiers[i] = privateInsertions.revertible.nullifiers[i];
53
+ }
54
+ }
55
+ if (privateInsertions.revertible.l2ToL1Msgs) {
56
+ for(let i = 0; i < privateInsertions.revertible.l2ToL1Msgs.length; i++){
57
+ assert(i < forPublic.revertibleAccumulatedData.l2ToL1Msgs.length, 'L2 to L1 message index out of bounds');
58
+ forPublic.revertibleAccumulatedData.l2ToL1Msgs[i] = privateInsertions.revertible.l2ToL1Msgs[i];
59
+ }
60
+ }
61
+ }
62
+ for(let i = 0; i < setupCallRequests.length; i++){
63
+ forPublic.nonRevertibleAccumulatedData.publicCallRequests[i] = setupCallRequests[i].request;
64
+ }
65
+ for(let i = 0; i < appCallRequests.length; i++){
66
+ forPublic.revertibleAccumulatedData.publicCallRequests[i] = appCallRequests[i].request;
67
+ }
68
+ if (teardownCallRequest) {
69
+ forPublic.publicTeardownCallRequest = teardownCallRequest.request;
34
70
  }
35
71
  const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
36
- const teardownGasLimits = teardownExecutionRequest ? gasLimits : Gas.empty();
72
+ const teardownGasLimits = teardownCallRequest ? new Gas(FALLBACK_TEARDOWN_DA_GAS_LIMIT, FALLBACK_TEARDOWN_L2_GAS_LIMIT) : Gas.empty();
37
73
  const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
38
74
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
39
- const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
40
- const txData = new PrivateKernelTailCircuitPublicInputs(constantData, RollupValidationRequests.empty(), /*gasUsed=*/ gasUsedByPrivate, feePayer, forPublic);
41
- const tx = Tx.newWithTxData(txData, teardownExecutionRequest);
42
- // Reverse order because the simulator expects it to be like a "stack" of calls to pop from.
43
- // Also push app calls before setup calls for this reason.
44
- for(let i = appExecutionRequests.length - 1; i >= 0; i--){
45
- tx.enqueuedPublicFunctionCalls.push(appExecutionRequests[i]);
46
- }
47
- for(let i = setupExecutionRequests.length - 1; i >= 0; i--){
48
- tx.enqueuedPublicFunctionCalls.push(setupExecutionRequests[i]);
49
- }
50
- return tx;
75
+ const header = BlockHeader.empty({
76
+ globalVariables: globals
77
+ });
78
+ const constantData = new TxConstantData(header, txContext, Fr.zero(), Fr.zero());
79
+ const expirationTimestamp = 0n; // Not used in the simulator.
80
+ const txData = new PrivateKernelTailCircuitPublicInputs(constantData, /*gasUsed=*/ gasUsedByPrivate, feePayer, expirationTimestamp, forPublic);
81
+ const calldata = [
82
+ ...setupCallRequests,
83
+ ...appCallRequests,
84
+ ...teardownCallRequest ? [
85
+ teardownCallRequest
86
+ ] : []
87
+ ].map((r)=>new HashedValues(r.calldata, r.request.calldataHash));
88
+ return await Tx.create({
89
+ data: txData,
90
+ chonkProof: ChonkProof.random(),
91
+ contractClassLogFields: [],
92
+ publicFunctionCalldata: calldata
93
+ });
51
94
  }
52
- export function createTxForPrivateOnly(feePayer = AztecAddress.zero(), gasUsedByPrivate = new Gas(10, 10)) {
95
+ export async function createTxForPrivateOnly(feePayer = AztecAddress.zero(), gasUsedByPrivate = new Gas(10, 10)) {
53
96
  // use max limits
54
- const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
97
+ const gasLimits = new Gas(MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, MAX_PROCESSABLE_L2_GAS);
55
98
  const forRollup = PartialPrivateTailPublicInputsForRollup.empty();
56
99
  const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
57
100
  const gasSettings = new GasSettings(gasLimits, Gas.empty(), maxFeesPerGas, GasFees.empty());
58
101
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
59
102
  const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
60
- const txData = new PrivateKernelTailCircuitPublicInputs(constantData, RollupValidationRequests.empty(), /*gasUsed=*/ gasUsedByPrivate, feePayer, /*forPublic=*/ undefined, forRollup);
61
- return Tx.newWithTxData(txData);
103
+ const expirationTimestamp = 0n; // Not used in the simulator.
104
+ const txData = new PrivateKernelTailCircuitPublicInputs(constantData, /*gasUsed=*/ gasUsedByPrivate, feePayer, expirationTimestamp, /*forPublic=*/ undefined, forRollup);
105
+ return await Tx.create({
106
+ data: txData,
107
+ chonkProof: ChonkProof.empty(),
108
+ contractClassLogFields: [],
109
+ publicFunctionCalldata: []
110
+ });
62
111
  }
63
112
  export async function addNewContractClassToTx(tx, contractClass, skipNullifierInsertion = false) {
64
113
  const contractClassLogFields = [
65
- new Fr(REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE),
114
+ new Fr(CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE),
66
115
  contractClass.id,
67
116
  new Fr(contractClass.version),
68
117
  new Fr(contractClass.artifactHash),
69
118
  new Fr(contractClass.privateFunctionsRoot),
70
119
  ...bufferAsFields(contractClass.packedBytecode, Math.ceil(contractClass.packedBytecode.length / 31) + 1)
71
120
  ];
72
- const contractClassLog = ContractClassLog.fromFields([
73
- new Fr(REGISTERER_CONTRACT_ADDRESS),
74
- ...contractClassLogFields.concat(new Array(CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS - contractClassLogFields.length).fill(Fr.ZERO))
75
- ]);
76
- const contractClassLogHash = ScopedLogHash.fromFields([
77
- await contractClassLog.hash(),
78
- new Fr(7),
79
- new Fr(contractClassLog.getEmittedLength()),
80
- new Fr(REGISTERER_CONTRACT_ADDRESS)
81
- ]);
121
+ const contractAddress = new AztecAddress(new Fr(CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS));
122
+ const emittedLength = contractClassLogFields.length;
123
+ const logFields = ContractClassLogFields.fromEmittedFields(contractClassLogFields);
124
+ const contractClassLogHash = LogHash.from({
125
+ value: await logFields.hash(),
126
+ length: emittedLength
127
+ }).scope(contractAddress);
82
128
  const accumulatedData = tx.data.forPublic ? tx.data.forPublic.revertibleAccumulatedData : tx.data.forRollup.end;
83
129
  if (!skipNullifierInsertion) {
84
130
  const nextNullifierIndex = countAccumulatedItems(accumulatedData.nullifiers);
@@ -86,36 +132,32 @@ export async function addNewContractClassToTx(tx, contractClass, skipNullifierIn
86
132
  }
87
133
  const nextLogIndex = countAccumulatedItems(accumulatedData.contractClassLogsHashes);
88
134
  accumulatedData.contractClassLogsHashes[nextLogIndex] = contractClassLogHash;
89
- tx.contractClassLogs.push(contractClassLog);
135
+ tx.contractClassLogFields.push(logFields);
90
136
  }
91
137
  export async function addNewContractInstanceToTx(tx, contractInstance, skipNullifierInsertion = false) {
92
- // can't use publicKeys.toFields() because it includes isInfinite which
93
- // is not broadcast in such private logs
138
+ // Only ivpk_m is broadcast as a point (x, y); the other five keys are hashes.
94
139
  const publicKeysAsFields = [
95
- contractInstance.publicKeys.masterNullifierPublicKey.x,
96
- contractInstance.publicKeys.masterNullifierPublicKey.y,
97
- contractInstance.publicKeys.masterIncomingViewingPublicKey.x,
98
- contractInstance.publicKeys.masterIncomingViewingPublicKey.y,
99
- contractInstance.publicKeys.masterOutgoingViewingPublicKey.x,
100
- contractInstance.publicKeys.masterOutgoingViewingPublicKey.y,
101
- contractInstance.publicKeys.masterTaggingPublicKey.x,
102
- contractInstance.publicKeys.masterTaggingPublicKey.y
140
+ contractInstance.publicKeys.npkMHash,
141
+ contractInstance.publicKeys.ivpkM.x,
142
+ contractInstance.publicKeys.ivpkM.y,
143
+ contractInstance.publicKeys.ovpkMHash,
144
+ contractInstance.publicKeys.tpkMHash,
145
+ contractInstance.publicKeys.mspkMHash,
146
+ contractInstance.publicKeys.fbpkMHash
103
147
  ];
104
- const fields = [
105
- DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG,
148
+ const logFields = [
149
+ CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG,
106
150
  contractInstance.address.toField(),
107
151
  new Fr(contractInstance.version),
108
152
  new Fr(contractInstance.salt),
109
153
  contractInstance.currentContractClassId,
110
154
  contractInstance.initializationHash,
155
+ contractInstance.immutablesHash,
111
156
  ...publicKeysAsFields,
112
- contractInstance.deployer.toField(),
113
- new Fr(0),
114
- new Fr(0),
115
- new Fr(0)
157
+ contractInstance.deployer.toField()
116
158
  ];
117
- const contractInstanceLog = new PrivateLog(assertLength(fields, PRIVATE_LOG_SIZE_IN_FIELDS));
118
- const contractAddressNullifier = await siloNullifier(AztecAddress.fromNumber(DEPLOYER_CONTRACT_ADDRESS), contractInstance.address.toField());
159
+ const contractInstanceLog = new PrivateLog(padArrayEnd(logFields, Fr.ZERO, PRIVATE_LOG_SIZE_IN_FIELDS), logFields.length);
160
+ const contractAddressNullifier = await siloNullifier(AztecAddress.fromNumber(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS), contractInstance.address.toField());
119
161
  const accumulatedData = tx.data.forPublic ? tx.data.forPublic.revertibleAccumulatedData : tx.data.forRollup.end;
120
162
  if (!skipNullifierInsertion) {
121
163
  const nextNullifierIndex = countAccumulatedItems(accumulatedData.nullifiers);
@@ -0,0 +1,60 @@
1
+ import { AvmTxHint, type PublicTxResult } from '@aztec/stdlib/avm';
2
+ import { type MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
3
+ import { GlobalVariables, ProtocolContracts } from '@aztec/stdlib/tx';
4
+ import type { NativeWorldStateService } from '@aztec/world-state';
5
+ import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
6
+ import { SimpleContractDataSource } from '../fixtures/simple_contract_data_source.js';
7
+ /**
8
+ * Request structure for fuzzer simulation communication from C++.
9
+ * Matches the C++ FuzzerSimulationRequest struct
10
+ */
11
+ export declare class FuzzerSimulationRequest {
12
+ readonly wsDataDir: string;
13
+ readonly wsMapSizeKb: number;
14
+ readonly tx: AvmTxHint;
15
+ readonly globals: GlobalVariables;
16
+ readonly contractClasses: any[];
17
+ readonly contractInstances: [any, any][];
18
+ readonly publicDataWrites: any[];
19
+ readonly noteHashes: any[];
20
+ readonly protocolContracts: ProtocolContracts;
21
+ constructor(wsDataDir: string, wsMapSizeKb: number, tx: AvmTxHint, globals: GlobalVariables, contractClasses: any[], contractInstances: [any, any][], publicDataWrites: any[], noteHashes: any[], protocolContracts: ProtocolContracts);
22
+ static fromPlainObject(obj: any): FuzzerSimulationRequest;
23
+ }
24
+ /**
25
+ * A simulator class for the AVM fuzzer that extends BaseAvmSimulationTester.
26
+ * It provides methods for registering contracts from C++ msgpack data and simulating transactions.
27
+ */
28
+ export declare class AvmFuzzerSimulator extends BaseAvmSimulationTester {
29
+ private simulator;
30
+ constructor(merkleTrees: MerkleTreeWriteOperations, contractDataSource: SimpleContractDataSource, globals: GlobalVariables, protocolContracts: ProtocolContracts);
31
+ /**
32
+ * Static factory method to create an AvmFuzzerSimulator.
33
+ */
34
+ static create(worldStateService: NativeWorldStateService, globals: GlobalVariables, protocolContracts: ProtocolContracts): Promise<AvmFuzzerSimulator>;
35
+ /**
36
+ * Simulate a transaction from a C++ AvmTxHint.
37
+ */
38
+ simulate(txHint: AvmTxHint): Promise<PublicTxResult>;
39
+ /**
40
+ * Add a contract class from C++ raw msgpack data.
41
+ */
42
+ addContractClassFromCpp(rawClass: any): Promise<void>;
43
+ /**
44
+ * Add a contract instance from C++ raw msgpack data.
45
+ * This also inserts the contract address nullifier into the nullifier tree,
46
+ * unless the address is a protocol canonical address (1-11).
47
+ */
48
+ addContractInstanceFromCpp(rawAddress: any, rawInstance: any): Promise<void>;
49
+ /**
50
+ * Apply public data tree writes from C++ raw msgpack data.
51
+ * This is used to pre-populate the public data tree before simulation (e.g., for bytecode upgrades).
52
+ */
53
+ applyPublicDataWrites(rawWrites: any[]): Promise<void>;
54
+ /**
55
+ * Apply note hashes from C++ raw msgpack data.
56
+ * This is used to pre-populate the note hash tree before simulation.
57
+ */
58
+ applyNoteHashes(rawNoteHashes: any[]): Promise<void>;
59
+ }
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2Z1enplcl9zaW11bGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvZnV6emluZy9hdm1fZnV6emVyX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFZbkUsT0FBTyxFQUFnQixLQUFLLHlCQUF5QixFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBQ3ZHLE9BQU8sRUFFTCxlQUFlLEVBRWYsaUJBQWlCLEVBS2xCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUl0Rjs7O0dBR0c7QUFDSCxxQkFBYSx1QkFBdUI7YUFFaEIsU0FBUyxFQUFFLE1BQU07YUFDakIsV0FBVyxFQUFFLE1BQU07YUFDbkIsRUFBRSxFQUFFLFNBQVM7YUFDYixPQUFPLEVBQUUsZUFBZTthQUN4QixlQUFlLEVBQUUsR0FBRyxFQUFFO2FBQ3RCLGlCQUFpQixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2FBQy9CLGdCQUFnQixFQUFFLEdBQUcsRUFBRTthQUN2QixVQUFVLEVBQUUsR0FBRyxFQUFFO2FBQ2pCLGlCQUFpQixFQUFFLGlCQUFpQjtJQVR0RCxZQUNrQixTQUFTLEVBQUUsTUFBTSxFQUNqQixXQUFXLEVBQUUsTUFBTSxFQUNuQixFQUFFLEVBQUUsU0FBUyxFQUNiLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLGVBQWUsRUFBRSxHQUFHLEVBQUUsRUFDdEIsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFDL0IsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLEVBQ3ZCLFVBQVUsRUFBRSxHQUFHLEVBQUUsRUFDakIsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQ2xEO0lBRUosTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLHVCQUF1QixDQWV4RDtDQUNGO0FBbUhEOzs7R0FHRztBQUNILHFCQUFhLGtCQUFtQixTQUFRLHVCQUF1QjtJQUM3RCxPQUFPLENBQUMsU0FBUyxDQUFvQjtJQUVyQyxZQUNFLFdBQVcsRUFBRSx5QkFBeUIsRUFDdEMsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLGlCQUFpQixFQUFFLGlCQUFpQixFQWlCckM7SUFFRDs7T0FFRztJQUNILE9BQW9CLE1BQU0sQ0FDeEIsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLGlCQUFpQixFQUFFLGlCQUFpQixHQUNuQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FJN0I7SUFFRDs7T0FFRztJQUNVLFFBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FVaEU7SUFFRDs7T0FFRztJQUNVLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUdqRTtJQUVEOzs7O09BSUc7SUFDVSwwQkFBMEIsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQU14RjtJQUVEOzs7T0FHRztJQUNVLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBS2xFO0lBRUQ7OztPQUdHO0lBQ1UsZUFBZSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBSWhFO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avm_fuzzer_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/fuzzing/avm_fuzzer_simulator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYnE,OAAO,EAAgB,KAAK,yBAAyB,EAAsB,MAAM,qBAAqB,CAAC;AACvG,OAAO,EAEL,eAAe,EAEf,iBAAiB,EAKlB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AAItF;;;GAGG;AACH,qBAAa,uBAAuB;aAEhB,SAAS,EAAE,MAAM;aACjB,WAAW,EAAE,MAAM;aACnB,EAAE,EAAE,SAAS;aACb,OAAO,EAAE,eAAe;aACxB,eAAe,EAAE,GAAG,EAAE;aACtB,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;aAC/B,gBAAgB,EAAE,GAAG,EAAE;aACvB,UAAU,EAAE,GAAG,EAAE;aACjB,iBAAiB,EAAE,iBAAiB;IATtD,YACkB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,eAAe,EACxB,eAAe,EAAE,GAAG,EAAE,EACtB,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAC/B,gBAAgB,EAAE,GAAG,EAAE,EACvB,UAAU,EAAE,GAAG,EAAE,EACjB,iBAAiB,EAAE,iBAAiB,EAClD;IAEJ,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,uBAAuB,CAexD;CACF;AAmHD;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,uBAAuB;IAC7D,OAAO,CAAC,SAAS,CAAoB;IAErC,YACE,WAAW,EAAE,yBAAyB,EACtC,kBAAkB,EAAE,wBAAwB,EAC5C,OAAO,EAAE,eAAe,EACxB,iBAAiB,EAAE,iBAAiB,EAiBrC;IAED;;OAEG;IACH,OAAoB,MAAM,CACxB,iBAAiB,EAAE,uBAAuB,EAC1C,OAAO,EAAE,eAAe,EACxB,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,kBAAkB,CAAC,CAI7B;IAED;;OAEG;IACU,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAUhE;IAED;;OAEG;IACU,uBAAuB,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;IAED;;;;OAIG;IACU,0BAA0B,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxF;IAED;;;OAGG;IACU,qBAAqB,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlE;IAED;;;OAGG;IACU,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhE;CACF"}
@@ -0,0 +1,171 @@
1
+ import { MAX_ENQUEUED_CALLS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, MAX_PROTOCOL_CONTRACTS } from '@aztec/constants';
2
+ import { padArrayEnd } from '@aztec/foundation/collection';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
+ import { AvmTxHint } from '@aztec/stdlib/avm';
5
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
6
+ import { contractClassPublicFromPlainObject, contractInstanceWithAddressFromPlainObject } from '@aztec/stdlib/contract';
7
+ import { PartialPrivateTailPublicInputsForPublic, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PublicCallRequest } from '@aztec/stdlib/kernel';
8
+ import { PrivateLog } from '@aztec/stdlib/logs';
9
+ import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
10
+ import { ChonkProof } from '@aztec/stdlib/proofs';
11
+ import { MerkleTreeId, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
12
+ import { BlockHeader, GlobalVariables, HashedValues, ProtocolContracts, Tx, TxConstantData, TxContext, TxHash } from '@aztec/stdlib/tx';
13
+ import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
14
+ import { SimpleContractDataSource } from '../fixtures/simple_contract_data_source.js';
15
+ import { PublicContractsDB } from '../public_db_sources.js';
16
+ import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
17
+ /**
18
+ * Request structure for fuzzer simulation communication from C++.
19
+ * Matches the C++ FuzzerSimulationRequest struct
20
+ */ export class FuzzerSimulationRequest {
21
+ wsDataDir;
22
+ wsMapSizeKb;
23
+ tx;
24
+ globals;
25
+ contractClasses;
26
+ contractInstances;
27
+ publicDataWrites;
28
+ noteHashes;
29
+ protocolContracts;
30
+ constructor(wsDataDir, wsMapSizeKb, tx, globals, contractClasses, contractInstances, publicDataWrites, noteHashes, protocolContracts){
31
+ this.wsDataDir = wsDataDir;
32
+ this.wsMapSizeKb = wsMapSizeKb;
33
+ this.tx = tx;
34
+ this.globals = globals;
35
+ this.contractClasses = contractClasses;
36
+ this.contractInstances = contractInstances;
37
+ this.publicDataWrites = publicDataWrites;
38
+ this.noteHashes = noteHashes;
39
+ this.protocolContracts = protocolContracts;
40
+ }
41
+ static fromPlainObject(obj) {
42
+ if (obj instanceof FuzzerSimulationRequest) {
43
+ return obj;
44
+ }
45
+ return new FuzzerSimulationRequest(obj.wsDataDir, obj.wsMapSizeKb, AvmTxHint.fromPlainObject(obj.tx), GlobalVariables.fromPlainObject(obj.globals), obj.contractClasses, obj.contractInstances, obj.publicDataWrites ?? [], obj.noteHashes ?? [], ProtocolContracts.fromPlainObject(obj.protocolContracts));
46
+ }
47
+ }
48
+ /**
49
+ * Creates a TypeScript Tx object from a deserialized C++ Tx (AvmTxHint-like structure).
50
+ * This allows using PublicTxSimulator.simulate() with fuzzer-generated transactions.
51
+ */ async function createTxFromHint(cppTx) {
52
+ // Create TxHash from the C++ tx hash string
53
+ if (!cppTx.hash) {
54
+ throw new Error(`cppTx.hash is undefined. Keys: ${Object.keys(cppTx || {}).join(', ')}`);
55
+ }
56
+ const txHash = TxHash.fromString(cppTx.hash);
57
+ // Extract PublicCallRequest instances from enqueued calls
58
+ const setupCallRequests = cppTx.setupEnqueuedCalls.map((call)=>call.request);
59
+ const paddedSetupCalls = padArrayEnd(setupCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX);
60
+ const appLogicCallRequests = cppTx.appLogicEnqueuedCalls.map((call)=>call.request);
61
+ const paddedAppLogicCalls = padArrayEnd(appLogicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX);
62
+ // Build non-revertible accumulated data from C++ tx
63
+ const emptyNonRevertible = PrivateToPublicAccumulatedData.empty();
64
+ const nonRevertibleAccumulatedData = new PrivateToPublicAccumulatedData(padArrayEnd(cppTx.nonRevertibleAccumulatedData.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(cppTx.nonRevertibleAccumulatedData.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(cppTx.nonRevertibleAccumulatedData.l2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(cppTx.nonRevertibleContractDeploymentData.privateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX), emptyNonRevertible.contractClassLogsHashes, paddedSetupCalls);
65
+ // Build revertible accumulated data from C++ tx
66
+ const emptyRevertible = PrivateToPublicAccumulatedData.empty();
67
+ const revertibleAccumulatedData = new PrivateToPublicAccumulatedData(padArrayEnd(cppTx.revertibleAccumulatedData.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(cppTx.revertibleAccumulatedData.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(cppTx.revertibleAccumulatedData.l2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(cppTx.revertibleContractDeploymentData.privateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX), emptyRevertible.contractClassLogsHashes, paddedAppLogicCalls);
68
+ // Build teardown call request (if exists)
69
+ const teardownCallRequest = cppTx.teardownEnqueuedCall?.request ?? PublicCallRequest.empty();
70
+ // Create forPublic structure
71
+ const forPublic = new PartialPrivateTailPublicInputsForPublic(nonRevertibleAccumulatedData, revertibleAccumulatedData, teardownCallRequest);
72
+ // Build TxContext - gasSettings is already a proper GasSettings after AvmTxHint.fromPlainObject
73
+ const txContext = new TxContext(Fr.ZERO, Fr.ZERO, cppTx.gasSettings);
74
+ // Build TxConstantData
75
+ const constants = new TxConstantData(BlockHeader.empty(), txContext, Fr.ZERO, Fr.ZERO);
76
+ const data = new PrivateKernelTailCircuitPublicInputs(constants, cppTx.gasUsedByPrivate, cppTx.feePayer, 0n, forPublic, undefined);
77
+ // Build publicFunctionCalldata from all enqueued calls
78
+ // Calldata is already Fr[] after AvmTxHint.fromPlainObject
79
+ const publicFunctionCalldata = [];
80
+ // Add setup calls
81
+ for (const call of cppTx.setupEnqueuedCalls || []){
82
+ publicFunctionCalldata.push(await HashedValues.fromCalldata(call.calldata));
83
+ }
84
+ // Add app logic calls
85
+ for (const call of cppTx.appLogicEnqueuedCalls || []){
86
+ publicFunctionCalldata.push(await HashedValues.fromCalldata(call.calldata));
87
+ }
88
+ // Add teardown call if present
89
+ if (cppTx.teardownEnqueuedCall) {
90
+ publicFunctionCalldata.push(await HashedValues.fromCalldata(cppTx.teardownEnqueuedCall.calldata));
91
+ }
92
+ // Extract contract class log fields from ContractDeploymentData
93
+ const contractClassLogFields = [
94
+ ...cppTx.nonRevertibleContractDeploymentData.contractClassLogs.map((log)=>log.fields),
95
+ ...cppTx.revertibleContractDeploymentData.contractClassLogs.map((log)=>log.fields)
96
+ ];
97
+ // Create the Tx
98
+ return new Tx(txHash, data, ChonkProof.empty(), contractClassLogFields, publicFunctionCalldata);
99
+ }
100
+ /**
101
+ * A simulator class for the AVM fuzzer that extends BaseAvmSimulationTester.
102
+ * It provides methods for registering contracts from C++ msgpack data and simulating transactions.
103
+ */ export class AvmFuzzerSimulator extends BaseAvmSimulationTester {
104
+ simulator;
105
+ constructor(merkleTrees, contractDataSource, globals, protocolContracts){
106
+ super(contractDataSource, merkleTrees);
107
+ const contractsDb = new PublicContractsDB(contractDataSource);
108
+ this.simulator = new PublicTxSimulator(merkleTrees, contractsDb, globals, {
109
+ skipFeeEnforcement: false,
110
+ collectDebugLogs: false,
111
+ collectHints: false,
112
+ collectStatistics: false,
113
+ collectCallMetadata: false
114
+ }, protocolContracts);
115
+ }
116
+ /**
117
+ * Static factory method to create an AvmFuzzerSimulator.
118
+ */ static async create(worldStateService, globals, protocolContracts) {
119
+ const contractDataSource = new SimpleContractDataSource();
120
+ const merkleTrees = await worldStateService.fork();
121
+ return new AvmFuzzerSimulator(merkleTrees, contractDataSource, globals, protocolContracts);
122
+ }
123
+ /**
124
+ * Simulate a transaction from a C++ AvmTxHint.
125
+ */ async simulate(txHint) {
126
+ // Compute fee from gas limits and max fees per gas (upper bound on fee)
127
+ const totalFee = BigInt(txHint.gasSettings.gasLimits.daGas) * txHint.gasSettings.maxFeesPerGas.feePerDaGas + BigInt(txHint.gasSettings.gasLimits.l2Gas) * txHint.gasSettings.maxFeesPerGas.feePerL2Gas;
128
+ await this.setFeePayerBalance(txHint.feePayer, new Fr(totalFee));
129
+ const tx = await createTxFromHint(txHint);
130
+ return await this.simulator.simulate(tx);
131
+ }
132
+ /**
133
+ * Add a contract class from C++ raw msgpack data.
134
+ */ async addContractClassFromCpp(rawClass) {
135
+ const contractClass = contractClassPublicFromPlainObject(rawClass);
136
+ await this.contractDataSource.addContractClass(contractClass);
137
+ }
138
+ /**
139
+ * Add a contract instance from C++ raw msgpack data.
140
+ * This also inserts the contract address nullifier into the nullifier tree,
141
+ * unless the address is a protocol canonical address (1-11).
142
+ */ async addContractInstanceFromCpp(rawAddress, rawInstance) {
143
+ const address = AztecAddress.fromPlainObject(rawAddress);
144
+ const instance = contractInstanceWithAddressFromPlainObject(address, rawInstance);
145
+ // Protocol canonical addresses (1-11) should not have nullifiers inserted
146
+ const isProtocolCanonicalAddress = address.toBigInt() <= MAX_PROTOCOL_CONTRACTS && address.toBigInt() >= 1n;
147
+ await this.addContractInstance(instance, /* skipNullifierInsertion */ isProtocolCanonicalAddress);
148
+ }
149
+ /**
150
+ * Apply public data tree writes from C++ raw msgpack data.
151
+ * This is used to pre-populate the public data tree before simulation (e.g., for bytecode upgrades).
152
+ */ async applyPublicDataWrites(rawWrites) {
153
+ for (const rawWrite of rawWrites){
154
+ const leaf = PublicDataTreeLeaf.fromPlainObject(rawWrite);
155
+ await this.merkleTrees.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, [
156
+ leaf.toBuffer()
157
+ ]);
158
+ }
159
+ }
160
+ /**
161
+ * Apply note hashes from C++ raw msgpack data.
162
+ * This is used to pre-populate the note hash tree before simulation.
163
+ */ async applyNoteHashes(rawNoteHashes) {
164
+ const paddingLeaves = MAX_NOTE_HASHES_PER_TX - rawNoteHashes.length % MAX_NOTE_HASHES_PER_TX;
165
+ const paddedNoteHashes = [
166
+ ...rawNoteHashes,
167
+ ...Array(paddingLeaves).fill(Fr.ZERO)
168
+ ];
169
+ await this.merkleTrees.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, paddedNoteHashes);
170
+ }
171
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX3NpbXVsYXRvcl9iaW4uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvZnV6emluZy9hdm1fc2ltdWxhdG9yX2Jpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avm_simulator_bin.d.ts","sourceRoot":"","sources":["../../../src/public/fuzzing/avm_simulator_bin.ts"],"names":[],"mappings":""}