@aztec/simulator 0.0.0-test.0 → 0.0.1-commit.001888fc

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 +65 -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 +32 -42
  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 +63 -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 +8 -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 +38 -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 +96 -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 +3 -4
  117. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  118. package/dest/public/avm/opcodes/contract.js +11 -12
  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 -3
  126. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  127. package/dest/public/avm/opcodes/ec_add.js +21 -12
  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 +262 -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 +12 -0
  192. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
  193. package/dest/public/fixtures/custom_bytecode_tests.js +174 -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 +1653 -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 +102 -59
  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 +80 -0
  222. package/dest/public/hinting_db_sources.d.ts.map +1 -0
  223. package/dest/public/hinting_db_sources.js +356 -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 +54 -103
  228. package/dest/public/public_db_sources.d.ts.map +1 -1
  229. package/dest/public/public_db_sources.js +222 -195
  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 +51 -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 +113 -0
  236. package/dest/public/public_processor/public_processor.d.ts +30 -38
  237. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  238. package/dest/public/public_processor/public_processor.js +602 -153
  239. package/dest/public/public_processor/public_processor_metrics.d.ts +4 -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 +29 -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 +98 -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 +131 -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 +171 -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 +25 -31
  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 +75 -95
  269. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +38 -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 +220 -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 +38 -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 +76 -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 +57 -62
  337. package/src/public/avm/avm_simulator_interface.ts +8 -0
  338. package/src/public/avm/calldata.ts +100 -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 +46 -13
  344. package/src/public/avm/fixtures/initializers.ts +103 -0
  345. package/src/public/avm/fixtures/utils.ts +151 -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 +10 -10
  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 +22 -10
  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 +169 -0
  376. package/src/public/fixtures/custom_bytecode_tester.ts +83 -0
  377. package/src/public/fixtures/custom_bytecode_tests.ts +228 -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 +1717 -0
  381. package/src/public/fixtures/public_tx_simulation_tester.ts +269 -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 +142 -69
  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 +609 -0
  388. package/src/public/index.ts +11 -8
  389. package/src/public/public_db_sources.ts +290 -260
  390. package/src/public/public_errors.ts +14 -0
  391. package/src/public/public_processor/guarded_merkle_tree.ts +158 -0
  392. package/src/public/public_processor/public_processor.ts +294 -205
  393. package/src/public/public_processor/public_processor_metrics.ts +18 -46
  394. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +124 -0
  395. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +210 -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 +239 -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 +179 -199
  403. package/src/public/public_tx_simulator/public_tx_simulator.ts +316 -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
@@ -0,0 +1,148 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { Logger } from '@aztec/foundation/log';
3
+ import { Timer } from '@aztec/foundation/timer';
4
+ import type { ContractArtifact } from '@aztec/stdlib/abi';
5
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
6
+ import type { ContractInstanceWithAddress } from '@aztec/stdlib/contract';
7
+
8
+ import { PublicTxSimulationTester } from './public_tx_simulation_tester.js';
9
+
10
+ export type TokenTestOptions = {
11
+ /** Skip return value assertions in balance checks (useful for benchmarking with collectCallMetadata=false) */
12
+ skipReturnValueAssertions?: boolean;
13
+ };
14
+
15
+ export async function tokenTest(
16
+ tester: PublicTxSimulationTester,
17
+ logger: Logger,
18
+ tokenArtifact: ContractArtifact,
19
+ expectToBeTrue: (x: boolean) => void,
20
+ options: TokenTestOptions = {},
21
+ ) {
22
+ const timer = new Timer();
23
+
24
+ const admin = AztecAddress.fromNumber(42);
25
+ const sender = AztecAddress.fromNumber(111);
26
+ const receiver = AztecAddress.fromNumber(222);
27
+
28
+ const token = await setUpToken(tester, tokenArtifact, admin, expectToBeTrue);
29
+
30
+ const mintAmount = 100n;
31
+ // EXECUTE! This means that if using AvmProvingTester subclass, it will PROVE the transaction!
32
+ const mintResult = await tester.executeTxWithLabel(
33
+ /*txLabel=*/ 'Token/mint_to_public',
34
+ /*sender=*/ admin,
35
+ /*setupCalls=*/ [],
36
+ /*appCalls=*/ [
37
+ {
38
+ address: token.address,
39
+ fnName: 'mint_to_public',
40
+ args: [/*to=*/ sender, mintAmount],
41
+ },
42
+ ],
43
+ );
44
+ expectToBeTrue(mintResult.revertCode.isOK());
45
+ await checkBalance(tester, token, sender, sender, mintAmount, expectToBeTrue, options);
46
+
47
+ const authwitNonce = new Fr(0);
48
+ const transferAmount = 50n;
49
+ // EXECUTE! This means that if using AvmProvingTester subclass, it will PROVE the transaction!
50
+ const transferResult = await tester.executeTxWithLabel(
51
+ /*txLabel=*/ 'Token/transfer_in_public',
52
+ /*sender=*/ sender,
53
+ /*setupCalls=*/ [],
54
+ /*appCalls=*/ [
55
+ {
56
+ address: token.address,
57
+ fnName: 'transfer_in_public',
58
+ args: [/*from=*/ sender, /*to=*/ receiver, transferAmount, authwitNonce],
59
+ },
60
+ ],
61
+ );
62
+ expectToBeTrue(transferResult.revertCode.isOK());
63
+ await checkBalance(tester, token, sender, sender, mintAmount - transferAmount, expectToBeTrue, options);
64
+ await checkBalance(tester, token, sender, receiver, transferAmount, expectToBeTrue, options);
65
+
66
+ // EXECUTE! This means that if using AvmProvingTester subclass, it will PROVE the transaction!
67
+ const burnResult = await tester.executeTxWithLabel(
68
+ /*txLabel=*/ 'Token/burn_public',
69
+ /*sender=*/ receiver,
70
+ /*setupCalls=*/ [],
71
+ /*appCalls=*/ [
72
+ {
73
+ address: token.address,
74
+ fnName: 'burn_public',
75
+ args: [/*from=*/ receiver, transferAmount, authwitNonce],
76
+ },
77
+ ],
78
+ );
79
+ expectToBeTrue(burnResult.revertCode.isOK());
80
+ await checkBalance(tester, token, sender, receiver, 0n, expectToBeTrue, options);
81
+
82
+ logger.info(`TokenContract test took ${timer.ms()}ms\n`);
83
+ }
84
+
85
+ export async function setUpToken(
86
+ tester: PublicTxSimulationTester,
87
+ tokenArtifact: ContractArtifact,
88
+ admin: AztecAddress,
89
+ expectToBeTrue: (x: boolean) => void,
90
+ seed = 0,
91
+ ) {
92
+ const constructorArgs = [admin, /*name=*/ 'Token', /*symbol=*/ 'TOK', /*decimals=*/ new Fr(18)];
93
+ const token = await tester.registerAndDeployContract(
94
+ constructorArgs,
95
+ /*deployer=*/ admin,
96
+ tokenArtifact,
97
+ /*skipNullifierInsertion=*/ false,
98
+ seed,
99
+ );
100
+
101
+ // EXECUTE! This means that if using AvmProvingTester subclass, it will PROVE the transaction!
102
+ const result = await tester.executeTxWithLabel(
103
+ /*txLabel=*/ 'Token/constructor',
104
+ /*sender=*/ admin,
105
+ /*setupCalls=*/ [],
106
+ /*appCalls=*/ [
107
+ {
108
+ fnName: 'constructor',
109
+ args: constructorArgs,
110
+ address: token.address,
111
+ },
112
+ ],
113
+ );
114
+ expectToBeTrue(result.revertCode.isOK());
115
+ return token;
116
+ }
117
+
118
+ async function checkBalance(
119
+ tester: PublicTxSimulationTester,
120
+ token: ContractInstanceWithAddress,
121
+ sender: AztecAddress,
122
+ account: AztecAddress,
123
+ expectedBalance: bigint,
124
+ expectToBeTrue: (x: boolean) => void,
125
+ options: TokenTestOptions = {},
126
+ ) {
127
+ // Strictly simulate this! No need to "execute" (aka prove if using AvmProvingTester subclass).
128
+ const balResult = await tester.simulateTxWithLabel(
129
+ /*txLabel=*/ 'Token/balance_of_public',
130
+ sender,
131
+ /*setupCalls=*/ [],
132
+ /*appCalls=*/ [
133
+ {
134
+ address: token.address,
135
+ fnName: 'balance_of_public',
136
+ args: [/*owner=*/ account],
137
+ isStaticCall: true,
138
+ },
139
+ ],
140
+ );
141
+ expectToBeTrue(balResult.revertCode.isOK());
142
+ if (!options.skipReturnValueAssertions) {
143
+ // should be 1 call with 1 return value that is expectedBalance
144
+ const appLogicReturnValues = balResult.getAppLogicReturnValues();
145
+ expectToBeTrue(appLogicReturnValues.length === 1);
146
+ expectToBeTrue(appLogicReturnValues[0].values?.[0]?.toBigInt() === expectedBalance);
147
+ }
148
+ }
@@ -1,99 +1,170 @@
1
1
  import {
2
- CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS,
3
- DEFAULT_GAS_LIMIT,
4
- DEPLOYER_CONTRACT_ADDRESS,
5
- MAX_L2_GAS_PER_TX_PUBLIC_PORTION,
2
+ CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE,
3
+ CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS,
4
+ CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS,
5
+ DEFAULT_DA_GAS_LIMIT,
6
+ DEFAULT_L2_GAS_LIMIT,
7
+ DEFAULT_TEARDOWN_DA_GAS_LIMIT,
8
+ DEFAULT_TEARDOWN_L2_GAS_LIMIT,
6
9
  PRIVATE_LOG_SIZE_IN_FIELDS,
7
- REGISTERER_CONTRACT_ADDRESS,
8
- REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE,
9
10
  } from '@aztec/constants';
10
- import { Fr } from '@aztec/foundation/fields';
11
- import { assertLength } from '@aztec/foundation/serialize';
12
- import { DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG } from '@aztec/protocol-contracts';
11
+ import { padArrayEnd } from '@aztec/foundation/collection';
12
+ import { Fr } from '@aztec/foundation/curves/bn254';
13
+ import { CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG } from '@aztec/protocol-contracts';
13
14
  import { bufferAsFields } from '@aztec/stdlib/abi';
14
15
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
15
16
  import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
16
17
  import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
17
18
  import { siloNullifier } from '@aztec/stdlib/hash';
18
19
  import {
20
+ LogHash,
19
21
  PartialPrivateTailPublicInputsForPublic,
20
22
  PartialPrivateTailPublicInputsForRollup,
21
23
  PrivateKernelTailCircuitPublicInputs,
22
- RollupValidationRequests,
23
- ScopedLogHash,
24
24
  countAccumulatedItems,
25
25
  } from '@aztec/stdlib/kernel';
26
- import { ContractClassLog, PrivateLog } from '@aztec/stdlib/logs';
27
- import { type PublicExecutionRequest, Tx } from '@aztec/stdlib/tx';
28
- import { BlockHeader, TxConstantData, TxContext } from '@aztec/stdlib/tx';
26
+ import { ContractClassLogFields, PrivateLog } from '@aztec/stdlib/logs';
27
+ import type { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
28
+ import { ChonkProof } from '@aztec/stdlib/proofs';
29
+ import {
30
+ BlockHeader,
31
+ GlobalVariables,
32
+ HashedValues,
33
+ PublicCallRequestWithCalldata,
34
+ Tx,
35
+ TxConstantData,
36
+ TxContext,
37
+ } from '@aztec/stdlib/tx';
29
38
 
30
39
  import { strict as assert } from 'assert';
31
40
 
41
+ export type TestPrivateInsertions = {
42
+ revertible?: {
43
+ nullifiers?: Fr[];
44
+ noteHashes?: Fr[];
45
+ l2ToL1Msgs?: ScopedL2ToL1Message[];
46
+ };
47
+ nonRevertible?: {
48
+ nullifiers?: Fr[];
49
+ noteHashes?: Fr[];
50
+ l2ToL1Msgs?: ScopedL2ToL1Message[];
51
+ };
52
+ };
53
+
32
54
  /**
33
55
  * Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
34
56
  */
35
57
  export async function createTxForPublicCalls(
36
- firstNullifier: Fr,
37
- setupExecutionRequests: PublicExecutionRequest[],
38
- appExecutionRequests: PublicExecutionRequest[],
39
- teardownExecutionRequest?: PublicExecutionRequest,
58
+ privateInsertions: TestPrivateInsertions,
59
+ setupCallRequests: PublicCallRequestWithCalldata[],
60
+ appCallRequests: PublicCallRequestWithCalldata[],
61
+ teardownCallRequest?: PublicCallRequestWithCalldata,
40
62
  feePayer = AztecAddress.zero(),
41
63
  gasUsedByPrivate: Gas = Gas.empty(),
64
+ globals: GlobalVariables = GlobalVariables.empty(),
65
+ gasLimits?: Gas,
42
66
  ): Promise<Tx> {
43
67
  assert(
44
- setupExecutionRequests.length > 0 || appExecutionRequests.length > 0 || teardownExecutionRequest !== undefined,
68
+ setupCallRequests.length > 0 || appCallRequests.length > 0 || teardownCallRequest !== undefined,
45
69
  "Can't create public tx with no enqueued calls",
46
70
  );
47
- const setupCallRequests = await Promise.all(setupExecutionRequests.map(er => er.toCallRequest()));
48
- const appCallRequests = await Promise.all(appExecutionRequests.map(er => er.toCallRequest()));
49
71
  // use max limits
50
- const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
72
+ gasLimits = gasLimits ?? new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
51
73
 
52
74
  const forPublic = PartialPrivateTailPublicInputsForPublic.empty();
53
- // TODO(#9269): Remove this fake nullifier method as we move away from 1st nullifier as hash.
54
- forPublic.nonRevertibleAccumulatedData.nullifiers[0] = firstNullifier;
55
75
 
56
- // We reverse order because the simulator expects it to be like a "stack" of calls to pop from
57
- for (let i = setupCallRequests.length - 1; i >= 0; i--) {
58
- forPublic.nonRevertibleAccumulatedData.publicCallRequests[i] = setupCallRequests[i];
76
+ // Non revertible private insertions
77
+ if (!privateInsertions.nonRevertible?.nullifiers?.length) {
78
+ throw new Error('At least one non-revertible nullifier is required');
59
79
  }
60
- for (let i = appCallRequests.length - 1; i >= 0; i--) {
61
- forPublic.revertibleAccumulatedData.publicCallRequests[i] = appCallRequests[i];
80
+
81
+ for (let i = 0; i < privateInsertions.nonRevertible.nullifiers.length; i++) {
82
+ assert(i < forPublic.nonRevertibleAccumulatedData.nullifiers.length, 'Nullifier index out of bounds');
83
+ forPublic.nonRevertibleAccumulatedData.nullifiers[i] = privateInsertions.nonRevertible.nullifiers[i];
62
84
  }
63
- if (teardownExecutionRequest) {
64
- forPublic.publicTeardownCallRequest = await teardownExecutionRequest.toCallRequest();
85
+ if (privateInsertions.nonRevertible.noteHashes) {
86
+ for (let i = 0; i < privateInsertions.nonRevertible.noteHashes.length; i++) {
87
+ assert(i < forPublic.nonRevertibleAccumulatedData.noteHashes.length, 'Note hash index out of bounds');
88
+ forPublic.nonRevertibleAccumulatedData.noteHashes[i] = privateInsertions.nonRevertible.noteHashes[i];
89
+ }
90
+ }
91
+ if (privateInsertions.nonRevertible.l2ToL1Msgs) {
92
+ for (let i = 0; i < privateInsertions.nonRevertible.l2ToL1Msgs.length; i++) {
93
+ assert(i < forPublic.nonRevertibleAccumulatedData.l2ToL1Msgs.length, 'L2 to L1 message index out of bounds');
94
+ forPublic.nonRevertibleAccumulatedData.l2ToL1Msgs[i] = privateInsertions.nonRevertible.l2ToL1Msgs[i];
95
+ }
96
+ }
97
+
98
+ // Revertible private insertions
99
+ if (privateInsertions.revertible) {
100
+ if (privateInsertions.revertible.noteHashes) {
101
+ for (let i = 0; i < privateInsertions.revertible.noteHashes.length; i++) {
102
+ assert(i < forPublic.revertibleAccumulatedData.noteHashes.length, 'Note hash index out of bounds');
103
+ forPublic.revertibleAccumulatedData.noteHashes[i] = privateInsertions.revertible.noteHashes[i];
104
+ }
105
+ }
106
+ if (privateInsertions.revertible.nullifiers) {
107
+ for (let i = 0; i < privateInsertions.revertible.nullifiers.length; i++) {
108
+ assert(i < forPublic.revertibleAccumulatedData.nullifiers.length, 'Nullifier index out of bounds');
109
+ forPublic.revertibleAccumulatedData.nullifiers[i] = privateInsertions.revertible.nullifiers[i];
110
+ }
111
+ }
112
+ if (privateInsertions.revertible.l2ToL1Msgs) {
113
+ for (let i = 0; i < privateInsertions.revertible.l2ToL1Msgs.length; i++) {
114
+ assert(i < forPublic.revertibleAccumulatedData.l2ToL1Msgs.length, 'L2 to L1 message index out of bounds');
115
+ forPublic.revertibleAccumulatedData.l2ToL1Msgs[i] = privateInsertions.revertible.l2ToL1Msgs[i];
116
+ }
117
+ }
118
+ }
119
+
120
+ for (let i = 0; i < setupCallRequests.length; i++) {
121
+ forPublic.nonRevertibleAccumulatedData.publicCallRequests[i] = setupCallRequests[i].request;
122
+ }
123
+ for (let i = 0; i < appCallRequests.length; i++) {
124
+ forPublic.revertibleAccumulatedData.publicCallRequests[i] = appCallRequests[i].request;
125
+ }
126
+ if (teardownCallRequest) {
127
+ forPublic.publicTeardownCallRequest = teardownCallRequest.request;
65
128
  }
66
129
 
67
130
  const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
68
- const teardownGasLimits = teardownExecutionRequest ? gasLimits : Gas.empty();
131
+ const teardownGasLimits = teardownCallRequest
132
+ ? new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT)
133
+ : Gas.empty();
69
134
  const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
70
135
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
71
- const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
136
+ const header = BlockHeader.empty({ globalVariables: globals });
137
+ const constantData = new TxConstantData(header, txContext, Fr.zero(), Fr.zero());
138
+ const expirationTimestamp = 0n; // Not used in the simulator.
72
139
 
73
140
  const txData = new PrivateKernelTailCircuitPublicInputs(
74
141
  constantData,
75
- RollupValidationRequests.empty(),
76
142
  /*gasUsed=*/ gasUsedByPrivate,
77
143
  feePayer,
144
+ expirationTimestamp,
78
145
  forPublic,
79
146
  );
80
- const tx = Tx.newWithTxData(txData, teardownExecutionRequest);
81
147
 
82
- // Reverse order because the simulator expects it to be like a "stack" of calls to pop from.
83
- // Also push app calls before setup calls for this reason.
84
- for (let i = appExecutionRequests.length - 1; i >= 0; i--) {
85
- tx.enqueuedPublicFunctionCalls.push(appExecutionRequests[i]);
86
- }
87
- for (let i = setupExecutionRequests.length - 1; i >= 0; i--) {
88
- tx.enqueuedPublicFunctionCalls.push(setupExecutionRequests[i]);
89
- }
148
+ const calldata = [
149
+ ...setupCallRequests,
150
+ ...appCallRequests,
151
+ ...(teardownCallRequest ? [teardownCallRequest] : []),
152
+ ].map(r => new HashedValues(r.calldata, r.request.calldataHash));
90
153
 
91
- return tx;
154
+ return await Tx.create({
155
+ data: txData,
156
+ chonkProof: ChonkProof.random(),
157
+ contractClassLogFields: [],
158
+ publicFunctionCalldata: calldata,
159
+ });
92
160
  }
93
161
 
94
- export function createTxForPrivateOnly(feePayer = AztecAddress.zero(), gasUsedByPrivate: Gas = new Gas(10, 10)): Tx {
162
+ export async function createTxForPrivateOnly(
163
+ feePayer = AztecAddress.zero(),
164
+ gasUsedByPrivate: Gas = new Gas(10, 10),
165
+ ): Promise<Tx> {
95
166
  // use max limits
96
- const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
167
+ const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
97
168
 
98
169
  const forRollup = PartialPrivateTailPublicInputsForRollup.empty();
99
170
 
@@ -101,16 +172,22 @@ export function createTxForPrivateOnly(feePayer = AztecAddress.zero(), gasUsedBy
101
172
  const gasSettings = new GasSettings(gasLimits, Gas.empty(), maxFeesPerGas, GasFees.empty());
102
173
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
103
174
  const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
175
+ const expirationTimestamp = 0n; // Not used in the simulator.
104
176
 
105
177
  const txData = new PrivateKernelTailCircuitPublicInputs(
106
178
  constantData,
107
- RollupValidationRequests.empty(),
108
179
  /*gasUsed=*/ gasUsedByPrivate,
109
180
  feePayer,
181
+ expirationTimestamp,
110
182
  /*forPublic=*/ undefined,
111
183
  forRollup,
112
184
  );
113
- return Tx.newWithTxData(txData);
185
+ return await Tx.create({
186
+ data: txData,
187
+ chonkProof: ChonkProof.empty(),
188
+ contractClassLogFields: [],
189
+ publicFunctionCalldata: [],
190
+ });
114
191
  }
115
192
 
116
193
  export async function addNewContractClassToTx(
@@ -119,25 +196,21 @@ export async function addNewContractClassToTx(
119
196
  skipNullifierInsertion = false,
120
197
  ) {
121
198
  const contractClassLogFields = [
122
- new Fr(REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE),
199
+ new Fr(CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE),
123
200
  contractClass.id,
124
201
  new Fr(contractClass.version),
125
202
  new Fr(contractClass.artifactHash),
126
203
  new Fr(contractClass.privateFunctionsRoot),
127
204
  ...bufferAsFields(contractClass.packedBytecode, Math.ceil(contractClass.packedBytecode.length / 31) + 1),
128
205
  ];
129
- const contractClassLog = ContractClassLog.fromFields([
130
- new Fr(REGISTERER_CONTRACT_ADDRESS),
131
- ...contractClassLogFields.concat(
132
- new Array(CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS - contractClassLogFields.length).fill(Fr.ZERO),
133
- ),
134
- ]);
135
- const contractClassLogHash = ScopedLogHash.fromFields([
136
- await contractClassLog.hash(),
137
- new Fr(7),
138
- new Fr(contractClassLog.getEmittedLength()),
139
- new Fr(REGISTERER_CONTRACT_ADDRESS),
140
- ]);
206
+ const contractAddress = new AztecAddress(new Fr(CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS));
207
+ const emittedLength = contractClassLogFields.length;
208
+ const logFields = ContractClassLogFields.fromEmittedFields(contractClassLogFields);
209
+
210
+ const contractClassLogHash = LogHash.from({
211
+ value: await logFields.hash(),
212
+ length: emittedLength,
213
+ }).scope(contractAddress);
141
214
 
142
215
  const accumulatedData = tx.data.forPublic ? tx.data.forPublic!.revertibleAccumulatedData : tx.data.forRollup!.end;
143
216
  if (!skipNullifierInsertion) {
@@ -148,7 +221,7 @@ export async function addNewContractClassToTx(
148
221
  const nextLogIndex = countAccumulatedItems(accumulatedData.contractClassLogsHashes);
149
222
  accumulatedData.contractClassLogsHashes[nextLogIndex] = contractClassLogHash;
150
223
 
151
- tx.contractClassLogs.push(contractClassLog);
224
+ tx.contractClassLogFields.push(logFields);
152
225
  }
153
226
 
154
227
  export async function addNewContractInstanceToTx(
@@ -168,8 +241,8 @@ export async function addNewContractInstanceToTx(
168
241
  contractInstance.publicKeys.masterTaggingPublicKey.x,
169
242
  contractInstance.publicKeys.masterTaggingPublicKey.y,
170
243
  ];
171
- const fields = [
172
- DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG,
244
+ const logFields = [
245
+ CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG,
173
246
  contractInstance.address.toField(),
174
247
  new Fr(contractInstance.version),
175
248
  new Fr(contractInstance.salt),
@@ -177,14 +250,14 @@ export async function addNewContractInstanceToTx(
177
250
  contractInstance.initializationHash,
178
251
  ...publicKeysAsFields,
179
252
  contractInstance.deployer.toField(),
180
- new Fr(0),
181
- new Fr(0),
182
- new Fr(0),
183
253
  ];
184
- const contractInstanceLog = new PrivateLog(assertLength(fields, PRIVATE_LOG_SIZE_IN_FIELDS));
254
+ const contractInstanceLog = new PrivateLog(
255
+ padArrayEnd(logFields, Fr.ZERO, PRIVATE_LOG_SIZE_IN_FIELDS),
256
+ logFields.length,
257
+ );
185
258
 
186
259
  const contractAddressNullifier = await siloNullifier(
187
- AztecAddress.fromNumber(DEPLOYER_CONTRACT_ADDRESS),
260
+ AztecAddress.fromNumber(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS),
188
261
  contractInstance.address.toField(),
189
262
  );
190
263