@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
@@ -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,174 @@
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
+ MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT,
6
+ MAX_PROCESSABLE_L2_GAS,
6
7
  PRIVATE_LOG_SIZE_IN_FIELDS,
7
- REGISTERER_CONTRACT_ADDRESS,
8
- REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE,
9
8
  } 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';
9
+ import { padArrayEnd } from '@aztec/foundation/collection';
10
+ import { Fr } from '@aztec/foundation/curves/bn254';
11
+ import { CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG } from '@aztec/protocol-contracts';
13
12
  import { bufferAsFields } from '@aztec/stdlib/abi';
14
13
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
15
14
  import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
16
- import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
15
+ import {
16
+ FALLBACK_TEARDOWN_DA_GAS_LIMIT,
17
+ FALLBACK_TEARDOWN_L2_GAS_LIMIT,
18
+ Gas,
19
+ GasFees,
20
+ GasSettings,
21
+ } from '@aztec/stdlib/gas';
17
22
  import { siloNullifier } from '@aztec/stdlib/hash';
18
23
  import {
24
+ LogHash,
19
25
  PartialPrivateTailPublicInputsForPublic,
20
26
  PartialPrivateTailPublicInputsForRollup,
21
27
  PrivateKernelTailCircuitPublicInputs,
22
- RollupValidationRequests,
23
- ScopedLogHash,
24
28
  countAccumulatedItems,
25
29
  } 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';
30
+ import { ContractClassLogFields, PrivateLog } from '@aztec/stdlib/logs';
31
+ import type { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
32
+ import { ChonkProof } from '@aztec/stdlib/proofs';
33
+ import {
34
+ BlockHeader,
35
+ GlobalVariables,
36
+ HashedValues,
37
+ PublicCallRequestWithCalldata,
38
+ Tx,
39
+ TxConstantData,
40
+ TxContext,
41
+ } from '@aztec/stdlib/tx';
29
42
 
30
43
  import { strict as assert } from 'assert';
31
44
 
45
+ export type TestPrivateInsertions = {
46
+ revertible?: {
47
+ nullifiers?: Fr[];
48
+ noteHashes?: Fr[];
49
+ l2ToL1Msgs?: ScopedL2ToL1Message[];
50
+ };
51
+ nonRevertible?: {
52
+ nullifiers?: Fr[];
53
+ noteHashes?: Fr[];
54
+ l2ToL1Msgs?: ScopedL2ToL1Message[];
55
+ };
56
+ };
57
+
32
58
  /**
33
59
  * Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
34
60
  */
35
61
  export async function createTxForPublicCalls(
36
- firstNullifier: Fr,
37
- setupExecutionRequests: PublicExecutionRequest[],
38
- appExecutionRequests: PublicExecutionRequest[],
39
- teardownExecutionRequest?: PublicExecutionRequest,
62
+ privateInsertions: TestPrivateInsertions,
63
+ setupCallRequests: PublicCallRequestWithCalldata[],
64
+ appCallRequests: PublicCallRequestWithCalldata[],
65
+ teardownCallRequest?: PublicCallRequestWithCalldata,
40
66
  feePayer = AztecAddress.zero(),
41
67
  gasUsedByPrivate: Gas = Gas.empty(),
68
+ globals: GlobalVariables = GlobalVariables.empty(),
69
+ gasLimits?: Gas,
42
70
  ): Promise<Tx> {
43
71
  assert(
44
- setupExecutionRequests.length > 0 || appExecutionRequests.length > 0 || teardownExecutionRequest !== undefined,
72
+ setupCallRequests.length > 0 || appCallRequests.length > 0 || teardownCallRequest !== undefined,
45
73
  "Can't create public tx with no enqueued calls",
46
74
  );
47
- const setupCallRequests = await Promise.all(setupExecutionRequests.map(er => er.toCallRequest()));
48
- const appCallRequests = await Promise.all(appExecutionRequests.map(er => er.toCallRequest()));
49
75
  // use max limits
50
- const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
76
+ gasLimits = gasLimits ?? new Gas(MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, MAX_PROCESSABLE_L2_GAS);
51
77
 
52
78
  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
79
 
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];
80
+ // Non revertible private insertions
81
+ if (!privateInsertions.nonRevertible?.nullifiers?.length) {
82
+ throw new Error('At least one non-revertible nullifier is required');
83
+ }
84
+
85
+ for (let i = 0; i < privateInsertions.nonRevertible.nullifiers.length; i++) {
86
+ assert(i < forPublic.nonRevertibleAccumulatedData.nullifiers.length, 'Nullifier index out of bounds');
87
+ forPublic.nonRevertibleAccumulatedData.nullifiers[i] = privateInsertions.nonRevertible.nullifiers[i];
88
+ }
89
+ if (privateInsertions.nonRevertible.noteHashes) {
90
+ for (let i = 0; i < privateInsertions.nonRevertible.noteHashes.length; i++) {
91
+ assert(i < forPublic.nonRevertibleAccumulatedData.noteHashes.length, 'Note hash index out of bounds');
92
+ forPublic.nonRevertibleAccumulatedData.noteHashes[i] = privateInsertions.nonRevertible.noteHashes[i];
93
+ }
94
+ }
95
+ if (privateInsertions.nonRevertible.l2ToL1Msgs) {
96
+ for (let i = 0; i < privateInsertions.nonRevertible.l2ToL1Msgs.length; i++) {
97
+ assert(i < forPublic.nonRevertibleAccumulatedData.l2ToL1Msgs.length, 'L2 to L1 message index out of bounds');
98
+ forPublic.nonRevertibleAccumulatedData.l2ToL1Msgs[i] = privateInsertions.nonRevertible.l2ToL1Msgs[i];
99
+ }
100
+ }
101
+
102
+ // Revertible private insertions
103
+ if (privateInsertions.revertible) {
104
+ if (privateInsertions.revertible.noteHashes) {
105
+ for (let i = 0; i < privateInsertions.revertible.noteHashes.length; i++) {
106
+ assert(i < forPublic.revertibleAccumulatedData.noteHashes.length, 'Note hash index out of bounds');
107
+ forPublic.revertibleAccumulatedData.noteHashes[i] = privateInsertions.revertible.noteHashes[i];
108
+ }
109
+ }
110
+ if (privateInsertions.revertible.nullifiers) {
111
+ for (let i = 0; i < privateInsertions.revertible.nullifiers.length; i++) {
112
+ assert(i < forPublic.revertibleAccumulatedData.nullifiers.length, 'Nullifier index out of bounds');
113
+ forPublic.revertibleAccumulatedData.nullifiers[i] = privateInsertions.revertible.nullifiers[i];
114
+ }
115
+ }
116
+ if (privateInsertions.revertible.l2ToL1Msgs) {
117
+ for (let i = 0; i < privateInsertions.revertible.l2ToL1Msgs.length; i++) {
118
+ assert(i < forPublic.revertibleAccumulatedData.l2ToL1Msgs.length, 'L2 to L1 message index out of bounds');
119
+ forPublic.revertibleAccumulatedData.l2ToL1Msgs[i] = privateInsertions.revertible.l2ToL1Msgs[i];
120
+ }
121
+ }
59
122
  }
60
- for (let i = appCallRequests.length - 1; i >= 0; i--) {
61
- forPublic.revertibleAccumulatedData.publicCallRequests[i] = appCallRequests[i];
123
+
124
+ for (let i = 0; i < setupCallRequests.length; i++) {
125
+ forPublic.nonRevertibleAccumulatedData.publicCallRequests[i] = setupCallRequests[i].request;
126
+ }
127
+ for (let i = 0; i < appCallRequests.length; i++) {
128
+ forPublic.revertibleAccumulatedData.publicCallRequests[i] = appCallRequests[i].request;
62
129
  }
63
- if (teardownExecutionRequest) {
64
- forPublic.publicTeardownCallRequest = await teardownExecutionRequest.toCallRequest();
130
+ if (teardownCallRequest) {
131
+ forPublic.publicTeardownCallRequest = teardownCallRequest.request;
65
132
  }
66
133
 
67
134
  const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
68
- const teardownGasLimits = teardownExecutionRequest ? gasLimits : Gas.empty();
135
+ const teardownGasLimits = teardownCallRequest
136
+ ? new Gas(FALLBACK_TEARDOWN_DA_GAS_LIMIT, FALLBACK_TEARDOWN_L2_GAS_LIMIT)
137
+ : Gas.empty();
69
138
  const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
70
139
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
71
- const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
140
+ const header = BlockHeader.empty({ globalVariables: globals });
141
+ const constantData = new TxConstantData(header, txContext, Fr.zero(), Fr.zero());
142
+ const expirationTimestamp = 0n; // Not used in the simulator.
72
143
 
73
144
  const txData = new PrivateKernelTailCircuitPublicInputs(
74
145
  constantData,
75
- RollupValidationRequests.empty(),
76
146
  /*gasUsed=*/ gasUsedByPrivate,
77
147
  feePayer,
148
+ expirationTimestamp,
78
149
  forPublic,
79
150
  );
80
- const tx = Tx.newWithTxData(txData, teardownExecutionRequest);
81
151
 
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
- }
152
+ const calldata = [
153
+ ...setupCallRequests,
154
+ ...appCallRequests,
155
+ ...(teardownCallRequest ? [teardownCallRequest] : []),
156
+ ].map(r => new HashedValues(r.calldata, r.request.calldataHash));
90
157
 
91
- return tx;
158
+ return await Tx.create({
159
+ data: txData,
160
+ chonkProof: ChonkProof.random(),
161
+ contractClassLogFields: [],
162
+ publicFunctionCalldata: calldata,
163
+ });
92
164
  }
93
165
 
94
- export function createTxForPrivateOnly(feePayer = AztecAddress.zero(), gasUsedByPrivate: Gas = new Gas(10, 10)): Tx {
166
+ export async function createTxForPrivateOnly(
167
+ feePayer = AztecAddress.zero(),
168
+ gasUsedByPrivate: Gas = new Gas(10, 10),
169
+ ): Promise<Tx> {
95
170
  // use max limits
96
- const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
171
+ const gasLimits = new Gas(MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, MAX_PROCESSABLE_L2_GAS);
97
172
 
98
173
  const forRollup = PartialPrivateTailPublicInputsForRollup.empty();
99
174
 
@@ -101,16 +176,22 @@ export function createTxForPrivateOnly(feePayer = AztecAddress.zero(), gasUsedBy
101
176
  const gasSettings = new GasSettings(gasLimits, Gas.empty(), maxFeesPerGas, GasFees.empty());
102
177
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
103
178
  const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
179
+ const expirationTimestamp = 0n; // Not used in the simulator.
104
180
 
105
181
  const txData = new PrivateKernelTailCircuitPublicInputs(
106
182
  constantData,
107
- RollupValidationRequests.empty(),
108
183
  /*gasUsed=*/ gasUsedByPrivate,
109
184
  feePayer,
185
+ expirationTimestamp,
110
186
  /*forPublic=*/ undefined,
111
187
  forRollup,
112
188
  );
113
- return Tx.newWithTxData(txData);
189
+ return await Tx.create({
190
+ data: txData,
191
+ chonkProof: ChonkProof.empty(),
192
+ contractClassLogFields: [],
193
+ publicFunctionCalldata: [],
194
+ });
114
195
  }
115
196
 
116
197
  export async function addNewContractClassToTx(
@@ -119,25 +200,21 @@ export async function addNewContractClassToTx(
119
200
  skipNullifierInsertion = false,
120
201
  ) {
121
202
  const contractClassLogFields = [
122
- new Fr(REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE),
203
+ new Fr(CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE),
123
204
  contractClass.id,
124
205
  new Fr(contractClass.version),
125
206
  new Fr(contractClass.artifactHash),
126
207
  new Fr(contractClass.privateFunctionsRoot),
127
208
  ...bufferAsFields(contractClass.packedBytecode, Math.ceil(contractClass.packedBytecode.length / 31) + 1),
128
209
  ];
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
- ]);
210
+ const contractAddress = new AztecAddress(new Fr(CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS));
211
+ const emittedLength = contractClassLogFields.length;
212
+ const logFields = ContractClassLogFields.fromEmittedFields(contractClassLogFields);
213
+
214
+ const contractClassLogHash = LogHash.from({
215
+ value: await logFields.hash(),
216
+ length: emittedLength,
217
+ }).scope(contractAddress);
141
218
 
142
219
  const accumulatedData = tx.data.forPublic ? tx.data.forPublic!.revertibleAccumulatedData : tx.data.forRollup!.end;
143
220
  if (!skipNullifierInsertion) {
@@ -148,7 +225,7 @@ export async function addNewContractClassToTx(
148
225
  const nextLogIndex = countAccumulatedItems(accumulatedData.contractClassLogsHashes);
149
226
  accumulatedData.contractClassLogsHashes[nextLogIndex] = contractClassLogHash;
150
227
 
151
- tx.contractClassLogs.push(contractClassLog);
228
+ tx.contractClassLogFields.push(logFields);
152
229
  }
153
230
 
154
231
  export async function addNewContractInstanceToTx(
@@ -156,35 +233,34 @@ export async function addNewContractInstanceToTx(
156
233
  contractInstance: ContractInstanceWithAddress,
157
234
  skipNullifierInsertion = false,
158
235
  ) {
159
- // can't use publicKeys.toFields() because it includes isInfinite which
160
- // is not broadcast in such private logs
236
+ // Only ivpk_m is broadcast as a point (x, y); the other five keys are hashes.
161
237
  const publicKeysAsFields = [
162
- contractInstance.publicKeys.masterNullifierPublicKey.x,
163
- contractInstance.publicKeys.masterNullifierPublicKey.y,
164
- contractInstance.publicKeys.masterIncomingViewingPublicKey.x,
165
- contractInstance.publicKeys.masterIncomingViewingPublicKey.y,
166
- contractInstance.publicKeys.masterOutgoingViewingPublicKey.x,
167
- contractInstance.publicKeys.masterOutgoingViewingPublicKey.y,
168
- contractInstance.publicKeys.masterTaggingPublicKey.x,
169
- contractInstance.publicKeys.masterTaggingPublicKey.y,
238
+ contractInstance.publicKeys.npkMHash,
239
+ contractInstance.publicKeys.ivpkM.x,
240
+ contractInstance.publicKeys.ivpkM.y,
241
+ contractInstance.publicKeys.ovpkMHash,
242
+ contractInstance.publicKeys.tpkMHash,
243
+ contractInstance.publicKeys.mspkMHash,
244
+ contractInstance.publicKeys.fbpkMHash,
170
245
  ];
171
- const fields = [
172
- DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG,
246
+ const logFields = [
247
+ CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG,
173
248
  contractInstance.address.toField(),
174
249
  new Fr(contractInstance.version),
175
250
  new Fr(contractInstance.salt),
176
251
  contractInstance.currentContractClassId,
177
252
  contractInstance.initializationHash,
253
+ contractInstance.immutablesHash,
178
254
  ...publicKeysAsFields,
179
255
  contractInstance.deployer.toField(),
180
- new Fr(0),
181
- new Fr(0),
182
- new Fr(0),
183
256
  ];
184
- const contractInstanceLog = new PrivateLog(assertLength(fields, PRIVATE_LOG_SIZE_IN_FIELDS));
257
+ const contractInstanceLog = new PrivateLog(
258
+ padArrayEnd(logFields, Fr.ZERO, PRIVATE_LOG_SIZE_IN_FIELDS),
259
+ logFields.length,
260
+ );
185
261
 
186
262
  const contractAddressNullifier = await siloNullifier(
187
- AztecAddress.fromNumber(DEPLOYER_CONTRACT_ADDRESS),
263
+ AztecAddress.fromNumber(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS),
188
264
  contractInstance.address.toField(),
189
265
  );
190
266