@aztec/simulator 0.0.1-commit.b655e406 → 0.0.1-commit.b9865e97

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 (380) hide show
  1. package/README.md +6 -4
  2. package/dest/client.d.ts +1 -1
  3. package/dest/common/errors.d.ts +2 -2
  4. package/dest/common/errors.d.ts.map +1 -1
  5. package/dest/common/index.d.ts +1 -1
  6. package/dest/common/stats/index.d.ts +1 -1
  7. package/dest/common/stats/stats.d.ts +1 -1
  8. package/dest/private/acvm/acvm.d.ts +4 -2
  9. package/dest/private/acvm/acvm.d.ts.map +1 -1
  10. package/dest/private/acvm/acvm.js +4 -3
  11. package/dest/private/acvm/acvm_types.d.ts +1 -1
  12. package/dest/private/acvm/deserialize.d.ts +2 -2
  13. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  14. package/dest/private/acvm/deserialize.js +1 -1
  15. package/dest/private/acvm/index.d.ts +1 -1
  16. package/dest/private/acvm/serialize.d.ts +2 -2
  17. package/dest/private/acvm/serialize.d.ts.map +1 -1
  18. package/dest/private/acvm/serialize.js +1 -1
  19. package/dest/private/acvm_native.d.ts +5 -3
  20. package/dest/private/acvm_native.d.ts.map +1 -1
  21. package/dest/private/acvm_native.js +8 -6
  22. package/dest/private/acvm_wasm.d.ts +4 -3
  23. package/dest/private/acvm_wasm.d.ts.map +1 -1
  24. package/dest/private/acvm_wasm.js +7 -5
  25. package/dest/private/acvm_wasm_with_blobs.d.ts +1 -1
  26. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -1
  27. package/dest/private/circuit_recording/circuit_recorder.d.ts +4 -3
  28. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  29. package/dest/private/circuit_recording/circuit_recorder.js +23 -20
  30. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +3 -2
  31. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  32. package/dest/private/circuit_recording/file_circuit_recorder.js +2 -2
  33. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +7 -2
  34. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
  35. package/dest/private/circuit_recording/memory_circuit_recorder.js +4 -4
  36. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  37. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  38. package/dest/private/circuit_simulator.d.ts +1 -1
  39. package/dest/private/factory.d.ts +3 -3
  40. package/dest/private/factory.d.ts.map +1 -1
  41. package/dest/private/factory.js +7 -4
  42. package/dest/public/avm/testing/account_proof_fetcher.d.ts +2 -0
  43. package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
  44. package/dest/public/avm/testing/account_proof_fetcher.js +152 -0
  45. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +3 -2
  46. package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +1 -0
  47. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.js +18 -3
  48. package/dest/public/avm/{fixtures → testing}/utils.d.ts +4 -10
  49. package/dest/public/avm/testing/utils.d.ts.map +1 -0
  50. package/dest/public/avm/{fixtures → testing}/utils.js +6 -35
  51. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  52. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  53. package/dest/public/contracts_db_checkpoint.js +30 -0
  54. package/dest/public/db_interfaces.d.ts +14 -2
  55. package/dest/public/db_interfaces.d.ts.map +1 -1
  56. package/dest/public/executor_metrics.d.ts +3 -2
  57. package/dest/public/executor_metrics.d.ts.map +1 -1
  58. package/dest/public/executor_metrics.js +13 -34
  59. package/dest/public/executor_metrics_interface.d.ts +3 -2
  60. package/dest/public/executor_metrics_interface.d.ts.map +1 -1
  61. package/dest/public/fixtures/amm_test.d.ts +1 -1
  62. package/dest/public/fixtures/amm_test.js +4 -4
  63. package/dest/public/fixtures/bulk_test.d.ts +3 -3
  64. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  65. package/dest/public/fixtures/bulk_test.js +36 -73
  66. package/dest/public/fixtures/custom_bytecode_tester.d.ts +29 -7
  67. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  68. package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
  69. package/dest/public/fixtures/index.d.ts +2 -3
  70. package/dest/public/fixtures/index.d.ts.map +1 -1
  71. package/dest/public/fixtures/index.js +1 -2
  72. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +30 -11
  73. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  74. package/dest/public/fixtures/public_tx_simulation_tester.js +98 -31
  75. package/dest/public/fixtures/simple_contract_data_source.d.ts +5 -4
  76. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
  77. package/dest/public/fixtures/simple_contract_data_source.js +5 -5
  78. package/dest/public/fixtures/token_test.d.ts +6 -2
  79. package/dest/public/fixtures/token_test.d.ts.map +1 -1
  80. package/dest/public/fixtures/token_test.js +13 -12
  81. package/dest/public/fixtures/utils.d.ts +3 -3
  82. package/dest/public/fixtures/utils.d.ts.map +1 -1
  83. package/dest/public/fixtures/utils.js +23 -23
  84. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +62 -0
  85. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  86. package/dest/public/fuzzing/avm_fuzzer_simulator.js +176 -0
  87. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  88. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  89. package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
  90. package/dest/public/index.d.ts +3 -2
  91. package/dest/public/index.d.ts.map +1 -1
  92. package/dest/public/index.js +1 -1
  93. package/dest/public/public_db_sources.d.ts +29 -66
  94. package/dest/public/public_db_sources.d.ts.map +1 -1
  95. package/dest/public/public_db_sources.js +83 -134
  96. package/dest/public/public_errors.d.ts +1 -1
  97. package/dest/public/public_errors.d.ts.map +1 -1
  98. package/dest/public/public_processor/guarded_merkle_tree.d.ts +8 -5
  99. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  100. package/dest/public/public_processor/guarded_merkle_tree.js +12 -4
  101. package/dest/public/public_processor/public_processor.d.ts +19 -21
  102. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  103. package/dest/public/public_processor/public_processor.js +553 -123
  104. package/dest/public/public_processor/public_processor_metrics.d.ts +5 -2
  105. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  106. package/dest/public/public_processor/public_processor_metrics.js +36 -45
  107. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +19 -0
  108. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
  109. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +99 -0
  110. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +23 -0
  111. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
  112. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.js +52 -0
  113. package/dest/public/public_tx_simulator/factories.d.ts +14 -0
  114. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  115. package/dest/public/public_tx_simulator/factories.js +28 -0
  116. package/dest/public/public_tx_simulator/index.d.ts +5 -3
  117. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  118. package/dest/public/public_tx_simulator/index.js +3 -2
  119. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +42 -89
  120. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  121. package/dest/public/public_tx_simulator/public_tx_simulator.js +101 -334
  122. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +22 -0
  123. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
  124. package/dest/public/public_tx_simulator/public_tx_simulator_base.js +28 -0
  125. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +25 -2
  126. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
  127. package/dest/public/side_effect_errors.d.ts +1 -1
  128. package/dest/public/side_effect_errors.d.ts.map +1 -1
  129. package/dest/public/test_executor_metrics.d.ts +11 -4
  130. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  131. package/dest/public/test_executor_metrics.js +29 -6
  132. package/dest/public/unique_class_ids.d.ts +1 -1
  133. package/dest/public/unique_class_ids.d.ts.map +1 -1
  134. package/dest/public/utils.d.ts +1 -1
  135. package/dest/server.d.ts +1 -1
  136. package/dest/testing.d.ts +1 -1
  137. package/package.json +22 -22
  138. package/src/common/errors.ts +1 -1
  139. package/src/private/acvm/acvm.ts +4 -3
  140. package/src/private/acvm/deserialize.ts +1 -1
  141. package/src/private/acvm/serialize.ts +1 -1
  142. package/src/private/acvm_native.ts +11 -5
  143. package/src/private/acvm_wasm.ts +11 -4
  144. package/src/private/circuit_recording/circuit_recorder.ts +24 -21
  145. package/src/private/circuit_recording/file_circuit_recorder.ts +7 -2
  146. package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
  147. package/src/private/factory.ts +7 -4
  148. package/src/public/avm/testing/account_proof.json +553 -0
  149. package/src/public/avm/testing/account_proof_fetcher.ts +166 -0
  150. package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +23 -3
  151. package/src/public/avm/{fixtures → testing}/utils.ts +6 -41
  152. package/src/public/contracts_db_checkpoint.ts +41 -0
  153. package/src/public/db_interfaces.ts +16 -1
  154. package/src/public/executor_metrics.ts +11 -34
  155. package/src/public/executor_metrics_interface.ts +2 -1
  156. package/src/public/fixtures/amm_test.ts +4 -4
  157. package/src/public/fixtures/bulk_test.ts +38 -13
  158. package/src/public/fixtures/custom_bytecode_tester.ts +54 -20
  159. package/src/public/fixtures/index.ts +5 -2
  160. package/src/public/fixtures/public_tx_simulation_tester.ts +129 -27
  161. package/src/public/fixtures/simple_contract_data_source.ts +9 -10
  162. package/src/public/fixtures/token_test.ts +18 -10
  163. package/src/public/fixtures/utils.ts +28 -25
  164. package/src/public/fuzzing/avm_fuzzer_simulator.ts +285 -0
  165. package/src/public/fuzzing/avm_simulator_bin.ts +173 -0
  166. package/src/public/index.ts +4 -2
  167. package/src/public/public_db_sources.ts +112 -174
  168. package/src/public/public_processor/guarded_merkle_tree.ts +14 -6
  169. package/src/public/public_processor/public_processor.ts +225 -136
  170. package/src/public/public_processor/public_processor_metrics.ts +28 -44
  171. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +125 -0
  172. package/src/public/public_tx_simulator/dumping_public_tx_simulator.ts +83 -0
  173. package/src/public/public_tx_simulator/factories.ts +44 -0
  174. package/src/public/public_tx_simulator/index.ts +4 -2
  175. package/src/public/public_tx_simulator/public_tx_simulator.ts +153 -500
  176. package/src/public/public_tx_simulator/public_tx_simulator_base.ts +35 -0
  177. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +24 -2
  178. package/src/public/test_executor_metrics.ts +34 -8
  179. package/dest/public/avm/avm_context.d.ts +0 -41
  180. package/dest/public/avm/avm_context.d.ts.map +0 -1
  181. package/dest/public/avm/avm_context.js +0 -44
  182. package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
  183. package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
  184. package/dest/public/avm/avm_contract_call_result.js +0 -54
  185. package/dest/public/avm/avm_execution_environment.d.ts +0 -23
  186. package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
  187. package/dest/public/avm/avm_execution_environment.js +0 -36
  188. package/dest/public/avm/avm_gas.d.ts +0 -44
  189. package/dest/public/avm/avm_gas.d.ts.map +0 -1
  190. package/dest/public/avm/avm_gas.js +0 -195
  191. package/dest/public/avm/avm_machine_state.d.ts +0 -97
  192. package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
  193. package/dest/public/avm/avm_machine_state.js +0 -109
  194. package/dest/public/avm/avm_memory_types.d.ts +0 -275
  195. package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
  196. package/dest/public/avm/avm_memory_types.js +0 -351
  197. package/dest/public/avm/avm_simulator.d.ts +0 -39
  198. package/dest/public/avm/avm_simulator.d.ts.map +0 -1
  199. package/dest/public/avm/avm_simulator.js +0 -190
  200. package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
  201. package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
  202. package/dest/public/avm/avm_simulator_interface.js +0 -3
  203. package/dest/public/avm/errors.d.ts +0 -98
  204. package/dest/public/avm/errors.d.ts.map +0 -1
  205. package/dest/public/avm/errors.js +0 -129
  206. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +0 -22
  207. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  208. package/dest/public/avm/fixtures/avm_simulation_tester.js +0 -74
  209. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  210. package/dest/public/avm/fixtures/initializers.d.ts +0 -43
  211. package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
  212. package/dest/public/avm/fixtures/initializers.js +0 -42
  213. package/dest/public/avm/fixtures/utils.d.ts.map +0 -1
  214. package/dest/public/avm/index.d.ts +0 -2
  215. package/dest/public/avm/index.d.ts.map +0 -1
  216. package/dest/public/avm/index.js +0 -1
  217. package/dest/public/avm/opcodes/accrued_substate.d.ts +0 -75
  218. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
  219. package/dest/public/avm/opcodes/accrued_substate.js +0 -255
  220. package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
  221. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
  222. package/dest/public/avm/opcodes/addressing_mode.js +0 -94
  223. package/dest/public/avm/opcodes/arithmetic.d.ts +0 -47
  224. package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
  225. package/dest/public/avm/opcodes/arithmetic.js +0 -87
  226. package/dest/public/avm/opcodes/bitwise.d.ts +0 -42
  227. package/dest/public/avm/opcodes/bitwise.d.ts.map +0 -1
  228. package/dest/public/avm/opcodes/bitwise.js +0 -99
  229. package/dest/public/avm/opcodes/comparators.d.ts +0 -25
  230. package/dest/public/avm/opcodes/comparators.d.ts.map +0 -1
  231. package/dest/public/avm/opcodes/comparators.js +0 -43
  232. package/dest/public/avm/opcodes/contract.d.ts +0 -20
  233. package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
  234. package/dest/public/avm/opcodes/contract.js +0 -65
  235. package/dest/public/avm/opcodes/control_flow.d.ts +0 -41
  236. package/dest/public/avm/opcodes/control_flow.d.ts.map +0 -1
  237. package/dest/public/avm/opcodes/control_flow.js +0 -107
  238. package/dest/public/avm/opcodes/conversion.d.ts +0 -18
  239. package/dest/public/avm/opcodes/conversion.d.ts.map +0 -1
  240. package/dest/public/avm/opcodes/conversion.js +0 -333
  241. package/dest/public/avm/opcodes/ec_add.d.ts +0 -19
  242. package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
  243. package/dest/public/avm/opcodes/ec_add.js +0 -84
  244. package/dest/public/avm/opcodes/environment_getters.d.ts +0 -28
  245. package/dest/public/avm/opcodes/environment_getters.d.ts.map +0 -1
  246. package/dest/public/avm/opcodes/environment_getters.js +0 -77
  247. package/dest/public/avm/opcodes/external_calls.d.ts +0 -59
  248. package/dest/public/avm/opcodes/external_calls.d.ts.map +0 -1
  249. package/dest/public/avm/opcodes/external_calls.js +0 -209
  250. package/dest/public/avm/opcodes/hashing.d.ts +0 -36
  251. package/dest/public/avm/opcodes/hashing.d.ts.map +0 -1
  252. package/dest/public/avm/opcodes/hashing.js +0 -114
  253. package/dest/public/avm/opcodes/index.d.ts +0 -16
  254. package/dest/public/avm/opcodes/index.d.ts.map +0 -1
  255. package/dest/public/avm/opcodes/index.js +0 -15
  256. package/dest/public/avm/opcodes/instruction.d.ts +0 -74
  257. package/dest/public/avm/opcodes/instruction.d.ts.map +0 -1
  258. package/dest/public/avm/opcodes/instruction.js +0 -95
  259. package/dest/public/avm/opcodes/instruction_impl.d.ts +0 -19
  260. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +0 -1
  261. package/dest/public/avm/opcodes/instruction_impl.js +0 -30
  262. package/dest/public/avm/opcodes/memory.d.ts +0 -74
  263. package/dest/public/avm/opcodes/memory.d.ts.map +0 -1
  264. package/dest/public/avm/opcodes/memory.js +0 -257
  265. package/dest/public/avm/opcodes/misc.d.ts +0 -18
  266. package/dest/public/avm/opcodes/misc.d.ts.map +0 -1
  267. package/dest/public/avm/opcodes/misc.js +0 -73
  268. package/dest/public/avm/opcodes/storage.d.ts +0 -24
  269. package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
  270. package/dest/public/avm/opcodes/storage.js +0 -68
  271. package/dest/public/avm/revert_reason.d.ts +0 -18
  272. package/dest/public/avm/revert_reason.d.ts.map +0 -1
  273. package/dest/public/avm/revert_reason.js +0 -38
  274. package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -26
  275. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +0 -1
  276. package/dest/public/avm/serialization/buffer_cursor.js +0 -99
  277. package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -17
  278. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  279. package/dest/public/avm/serialization/bytecode_serialization.js +0 -333
  280. package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -114
  281. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +0 -1
  282. package/dest/public/avm/serialization/instruction_serialization.js +0 -261
  283. package/dest/public/avm/test_utils.d.ts +0 -15
  284. package/dest/public/avm/test_utils.d.ts.map +0 -1
  285. package/dest/public/avm/test_utils.js +0 -44
  286. package/dest/public/debug_fn_name.d.ts +0 -5
  287. package/dest/public/debug_fn_name.d.ts.map +0 -1
  288. package/dest/public/debug_fn_name.js +0 -9
  289. package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -9
  290. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
  291. package/dest/public/fixtures/custom_bytecode_tests.js +0 -109
  292. package/dest/public/fixtures/minimal_public_tx.d.ts +0 -10
  293. package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
  294. package/dest/public/fixtures/minimal_public_tx.js +0 -29
  295. package/dest/public/hinting_db_sources.d.ts +0 -70
  296. package/dest/public/hinting_db_sources.d.ts.map +0 -1
  297. package/dest/public/hinting_db_sources.js +0 -297
  298. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -41
  299. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +0 -1
  300. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +0 -89
  301. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -24
  302. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +0 -1
  303. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +0 -51
  304. package/dest/public/public_tx_simulator/public_tx_context.d.ts +0 -127
  305. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +0 -1
  306. package/dest/public/public_tx_simulator/public_tx_context.js +0 -292
  307. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +0 -21
  308. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +0 -1
  309. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +0 -39
  310. package/dest/public/side_effect_trace.d.ts +0 -87
  311. package/dest/public/side_effect_trace.d.ts.map +0 -1
  312. package/dest/public/side_effect_trace.js +0 -199
  313. package/dest/public/side_effect_trace_interface.d.ts +0 -23
  314. package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
  315. package/dest/public/side_effect_trace_interface.js +0 -1
  316. package/dest/public/state_manager/index.d.ts +0 -2
  317. package/dest/public/state_manager/index.d.ts.map +0 -1
  318. package/dest/public/state_manager/index.js +0 -1
  319. package/dest/public/state_manager/nullifiers.d.ts +0 -61
  320. package/dest/public/state_manager/nullifiers.d.ts.map +0 -1
  321. package/dest/public/state_manager/nullifiers.js +0 -92
  322. package/dest/public/state_manager/public_storage.d.ts +0 -66
  323. package/dest/public/state_manager/public_storage.d.ts.map +0 -1
  324. package/dest/public/state_manager/public_storage.js +0 -145
  325. package/dest/public/state_manager/state_manager.d.ts +0 -166
  326. package/dest/public/state_manager/state_manager.d.ts.map +0 -1
  327. package/dest/public/state_manager/state_manager.js +0 -391
  328. package/dest/public/tx_contract_cache.d.ts +0 -41
  329. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  330. package/dest/public/tx_contract_cache.js +0 -49
  331. package/src/public/avm/avm_context.ts +0 -61
  332. package/src/public/avm/avm_contract_call_result.ts +0 -67
  333. package/src/public/avm/avm_execution_environment.ts +0 -48
  334. package/src/public/avm/avm_gas.ts +0 -183
  335. package/src/public/avm/avm_machine_state.ts +0 -169
  336. package/src/public/avm/avm_memory_types.ts +0 -436
  337. package/src/public/avm/avm_simulator.ts +0 -274
  338. package/src/public/avm/avm_simulator_interface.ts +0 -8
  339. package/src/public/avm/errors.ts +0 -163
  340. package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -108
  341. package/src/public/avm/fixtures/initializers.ts +0 -104
  342. package/src/public/avm/index.ts +0 -1
  343. package/src/public/avm/opcodes/accrued_substate.ts +0 -288
  344. package/src/public/avm/opcodes/addressing_mode.ts +0 -111
  345. package/src/public/avm/opcodes/arithmetic.ts +0 -117
  346. package/src/public/avm/opcodes/bitwise.ts +0 -113
  347. package/src/public/avm/opcodes/comparators.ts +0 -55
  348. package/src/public/avm/opcodes/contract.ts +0 -75
  349. package/src/public/avm/opcodes/control_flow.ts +0 -123
  350. package/src/public/avm/opcodes/conversion.ts +0 -104
  351. package/src/public/avm/opcodes/ec_add.ts +0 -96
  352. package/src/public/avm/opcodes/environment_getters.ts +0 -87
  353. package/src/public/avm/opcodes/external_calls.ts +0 -260
  354. package/src/public/avm/opcodes/hashing.ts +0 -145
  355. package/src/public/avm/opcodes/index.ts +0 -15
  356. package/src/public/avm/opcodes/instruction.ts +0 -136
  357. package/src/public/avm/opcodes/instruction_impl.ts +0 -36
  358. package/src/public/avm/opcodes/memory.ts +0 -293
  359. package/src/public/avm/opcodes/misc.ts +0 -102
  360. package/src/public/avm/opcodes/storage.ts +0 -87
  361. package/src/public/avm/revert_reason.ts +0 -55
  362. package/src/public/avm/serialization/buffer_cursor.ts +0 -118
  363. package/src/public/avm/serialization/bytecode_serialization.ts +0 -204
  364. package/src/public/avm/serialization/instruction_serialization.ts +0 -249
  365. package/src/public/avm/test_utils.ts +0 -64
  366. package/src/public/debug_fn_name.ts +0 -18
  367. package/src/public/fixtures/custom_bytecode_tests.ts +0 -135
  368. package/src/public/fixtures/minimal_public_tx.ts +0 -36
  369. package/src/public/hinting_db_sources.ts +0 -505
  370. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -128
  371. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -109
  372. package/src/public/public_tx_simulator/public_tx_context.ts +0 -471
  373. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
  374. package/src/public/side_effect_trace.ts +0 -290
  375. package/src/public/side_effect_trace_interface.ts +0 -28
  376. package/src/public/state_manager/index.ts +0 -1
  377. package/src/public/state_manager/nullifiers.ts +0 -103
  378. package/src/public/state_manager/public_storage.ts +0 -174
  379. package/src/public/state_manager/state_manager.ts +0 -560
  380. package/src/public/tx_contract_cache.ts +0 -69
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Fetches an account proof from the Ethereum mainnet and saves it as account_proof.json.
3
+ * This script is not using any Aztec library code, so it's easily portable.
4
+ */
5
+ import fs from 'fs';
6
+ import { dirname, join } from 'path';
7
+ import { fileURLToPath } from 'url';
8
+ import { createPublicClient, fromRlp, hexToBytes, http } from 'viem';
9
+ import { mainnet } from 'viem/chains';
10
+
11
+ const __dirname = dirname(fileURLToPath(import.meta.url));
12
+
13
+ const RPC_URL = process.env.RPC_URL;
14
+ const ADDRESS = (process.env.ADDRESS || '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045') as `0x${string}`;
15
+ const BLOCK_TAG = process.env.BLOCK_NUMBER ? BigInt(process.env.BLOCK_NUMBER) : 'latest';
16
+ const MAX_ACCOUNT_PATH = 15;
17
+
18
+ function padTo(arr: number[], len: number) {
19
+ return [...arr, ...Array(len - arr.length).fill(0)].slice(0, len);
20
+ }
21
+
22
+ function toBytes(hex: `0x${string}`) {
23
+ return Array.from(hexToBytes(hex));
24
+ }
25
+
26
+ function bytesToU64s(bytes: number[]) {
27
+ const paddedBytes = padTo(bytes, 32);
28
+ return Array.from({ length: 4 }, (_, i) => {
29
+ let val = 0n;
30
+ for (let j = 0; j < 8; j++) {
31
+ val += BigInt(paddedBytes[i * 8 + j]) << BigInt(j * 8);
32
+ }
33
+ return val.toString();
34
+ });
35
+ }
36
+
37
+ function toBytesAndLen(val: bigint | number) {
38
+ if (val === 0n || val === 0) {
39
+ return { bytes: [0], length: 0 };
40
+ }
41
+ let hex = val.toString(16);
42
+ if (hex.length % 2) {
43
+ hex = '0' + hex;
44
+ }
45
+ const bytes = toBytes(`0x${hex}`);
46
+ return { bytes, length: bytes.length };
47
+ }
48
+
49
+ function parseNode(rlp: `0x${string}`) {
50
+ // Should be safe when working with branches and extensions without embedded children.
51
+ const decoded = fromRlp(rlp) as `0x${string}`[];
52
+ const node = {
53
+ rows: Array(16)
54
+ .fill(0)
55
+ .map(() => Array(32).fill(0)),
56
+ row_exist: Array(16).fill(false),
57
+ node_type: 0,
58
+ };
59
+
60
+ if (decoded.length === 17) {
61
+ for (let i = 0; i < 16; i++) {
62
+ if (decoded[i] !== '0x') {
63
+ node.row_exist[i] = true;
64
+ node.rows[i] = padTo(toBytes(decoded[i]), 32);
65
+ }
66
+ }
67
+ } else if (decoded.length === 2) {
68
+ const keyBytes = toBytes(decoded[0]);
69
+ const prefix = keyBytes[0];
70
+ if (prefix >> 4 >= 2) {
71
+ throw new Error('Unsupported: leaf node in proof path');
72
+ }
73
+ node.node_type = 1;
74
+ // Extension header format expected by the noir code: check out storage_proof types.nr.
75
+ node.rows[0][0] = prefix >> 4;
76
+ node.rows[0][8] = prefix & 0x0f;
77
+ node.rows[0][16] = keyBytes.length - 1;
78
+
79
+ for (let i = 1; i < keyBytes.length && i < 32; i++) {
80
+ node.rows[1][i - 1] = keyBytes[i];
81
+ }
82
+ node.rows[2] = padTo(toBytes(decoded[1]), 32);
83
+ node.row_exist[0] = node.row_exist[1] = node.row_exist[2] = true;
84
+ }
85
+ return node;
86
+ }
87
+
88
+ function parseProof(proof: `0x${string}`[], maxLen: number) {
89
+ const nodes = proof.slice(0, -1).slice(0, maxLen).map(parseNode);
90
+ while (nodes.length < maxLen) {
91
+ nodes.push({
92
+ rows: Array(16)
93
+ .fill(0)
94
+ .map(() => Array(32).fill(0)),
95
+ row_exist: Array(16).fill(false),
96
+ node_type: 0,
97
+ });
98
+ }
99
+ return nodes;
100
+ }
101
+
102
+ function nodeToLibFormat(node: { rows: number[][]; row_exist: boolean[]; node_type: number }) {
103
+ return {
104
+ rows: node.rows.map(bytesToU64s),
105
+ row_exist: node.row_exist,
106
+ node_type: String(node.node_type),
107
+ };
108
+ }
109
+
110
+ async function main() {
111
+ if (!RPC_URL) {
112
+ throw new Error('RPC_URL is not set');
113
+ }
114
+ console.log(`Fetching account proof for ${ADDRESS}`);
115
+
116
+ const client = createPublicClient({
117
+ chain: mainnet,
118
+ transport: http(RPC_URL),
119
+ });
120
+
121
+ const [blockNumber, proof, block] = await Promise.all([
122
+ client.getBlockNumber(),
123
+ client.getProof({
124
+ address: ADDRESS,
125
+ storageKeys: [],
126
+ blockNumber: BLOCK_TAG === 'latest' ? undefined : BLOCK_TAG,
127
+ }),
128
+ client.getBlock({
129
+ blockNumber: BLOCK_TAG === 'latest' ? undefined : BLOCK_TAG,
130
+ }),
131
+ ]);
132
+
133
+ console.log(`Block: ${blockNumber}, Account nodes: ${proof.accountProof.length}`);
134
+
135
+ // The -1 is because the last node in the proof is the leaf, which is excluded from path verification.
136
+ const accountPathLen = proof.accountProof.length - 1;
137
+ if (accountPathLen > MAX_ACCOUNT_PATH) {
138
+ throw new Error(
139
+ `Account proof path length ${accountPathLen} exceeds MAX_ACCOUNT_PATH ${MAX_ACCOUNT_PATH}. Increase the limit.`,
140
+ );
141
+ }
142
+
143
+ const nonce = toBytesAndLen(proof.nonce);
144
+ const balance = toBytesAndLen(proof.balance);
145
+
146
+ const data = {
147
+ block_number: String(blockNumber),
148
+ node_length: String(accountPathLen),
149
+ root: bytesToU64s(toBytes(block.stateRoot)),
150
+ nodes: parseProof(proof.accountProof, MAX_ACCOUNT_PATH).map(nodeToLibFormat),
151
+ account: {
152
+ address: toBytes(ADDRESS).map(String),
153
+ balance: padTo(balance.bytes, 32).map(String),
154
+ balance_length: String(balance.length),
155
+ code_hash: bytesToU64s(toBytes(proof.codeHash)),
156
+ nonce: padTo(nonce.bytes, 8).map(String),
157
+ nonce_length: String(nonce.length),
158
+ storage_hash: bytesToU64s(toBytes(proof.storageHash)),
159
+ },
160
+ };
161
+
162
+ fs.writeFileSync(join(__dirname, 'account_proof.json'), JSON.stringify(data, null, 2));
163
+ console.log('account_proof.json generated');
164
+ }
165
+
166
+ main().catch(console.error);
@@ -1,10 +1,11 @@
1
1
  import { CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS } from '@aztec/constants';
2
- import { Fr } from '@aztec/foundation/fields';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { createLogger } from '@aztec/foundation/log';
4
4
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
5
- import { getCanonicalAuthRegistry } from '@aztec/protocol-contracts/auth-registry';
5
+ import { getCanonicalClassRegistry } from '@aztec/protocol-contracts/class-registry';
6
6
  import { computeFeePayerBalanceStorageSlot, getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
7
7
  import { getCanonicalInstanceRegistry } from '@aztec/protocol-contracts/instance-registry';
8
+ import { getStandardAuthRegistry } from '@aztec/standard-contracts/auth-registry';
8
9
  import type { ContractArtifact } from '@aztec/stdlib/abi';
9
10
  import { PublicDataWrite } from '@aztec/stdlib/avm';
10
11
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
@@ -91,7 +92,7 @@ export abstract class BaseAvmSimulationTester {
91
92
  }
92
93
 
93
94
  async registerAuthContract(): Promise<ContractInstanceWithAddress> {
94
- const authRegistry = await getCanonicalAuthRegistry();
95
+ const authRegistry = await getStandardAuthRegistry();
95
96
  const authRegistryContractClassPublic = {
96
97
  ...authRegistry.contractClass,
97
98
  privateFunctions: [],
@@ -102,9 +103,28 @@ export abstract class BaseAvmSimulationTester {
102
103
  authRegistryContractClassPublic,
103
104
  authRegistry.instance,
104
105
  );
106
+ // AuthRegistry is a standard contract (not a protocol contract), so the AVM enforces a
107
+ // deployment-nullifier check on every instance retrieval. Insert the nullifier here so
108
+ // calls to AuthRegistry don't EXCEPTIONAL_HALT during simulation.
109
+ await this.insertContractAddressNullifier(authRegistry.instance.address);
105
110
  return authRegistry.instance;
106
111
  }
107
112
 
113
+ async registerClassRegistryContract(): Promise<ContractInstanceWithAddress> {
114
+ const classRegistry = await getCanonicalClassRegistry();
115
+ const classRegistryContractClassPublic = {
116
+ ...classRegistry.contractClass,
117
+ privateFunctions: [],
118
+ utilityFunctions: [],
119
+ };
120
+ await this.contractDataSource.addNewContract(
121
+ classRegistry.artifact,
122
+ classRegistryContractClassPublic,
123
+ classRegistry.instance,
124
+ );
125
+ return classRegistry.instance;
126
+ }
127
+
108
128
  async registerInstanceRegistryContract(): Promise<ContractInstanceWithAddress> {
109
129
  const instanceRegistry = await getCanonicalInstanceRegistry();
110
130
  const instanceRegistryContractClassPublic = {
@@ -1,5 +1,6 @@
1
1
  import { CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS } from '@aztec/constants';
2
- import { Fr } from '@aztec/foundation/fields';
2
+ import { BlockNumber } from '@aztec/foundation/branded-types';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
4
  import {
4
5
  type ContractArtifact,
5
6
  type FunctionAbi,
@@ -13,7 +14,6 @@ import {
13
14
  type ContractInstanceWithAddress,
14
15
  computeInitializationHash,
15
16
  } from '@aztec/stdlib/contract';
16
- import { isNoirCallStackUnresolved } from '@aztec/stdlib/errors';
17
17
  import { siloNullifier } from '@aztec/stdlib/hash';
18
18
  import { deriveKeys } from '@aztec/stdlib/keys';
19
19
  import { makeContractClassPublic, makeContractInstanceFromClassId } from '@aztec/stdlib/testing';
@@ -22,13 +22,9 @@ import type { UInt64 } from '@aztec/stdlib/types';
22
22
  import { strict as assert } from 'assert';
23
23
  import merge from 'lodash.merge';
24
24
 
25
- import { resolveAssertionMessageFromRevertData, traverseCauseChain } from '../../../common/index.js';
26
- import { Field, Uint8, Uint32, Uint64 } from '../avm_memory_types.js';
27
- import type { AvmRevertReason } from '../errors.js';
28
-
29
25
  export const PUBLIC_DISPATCH_FN_NAME = 'public_dispatch';
30
26
  export const DEFAULT_TIMESTAMP: UInt64 = 99833n;
31
- export const DEFAULT_BLOCK_NUMBER = 42;
27
+ export const DEFAULT_BLOCK_NUMBER = BlockNumber(42);
32
28
 
33
29
  /**
34
30
  * Create a new object with all the same properties as the original, except for the ones in the overrides object.
@@ -37,22 +33,6 @@ export function allSameExcept(original: any, overrides: any): any {
37
33
  return merge({}, original, overrides);
38
34
  }
39
35
 
40
- export function randomMemoryBytes(length: number): Uint8[] {
41
- return [...Array(length)].map(_ => new Uint8(Math.floor(Math.random() * 255)));
42
- }
43
-
44
- export function randomMemoryUint32s(length: number): Uint32[] {
45
- return [...Array(length)].map(_ => new Uint32(Math.floor(Math.random() * 255)));
46
- }
47
-
48
- export function randomMemoryUint64s(length: number): Uint64[] {
49
- return [...Array(length)].map(_ => new Uint64(Math.floor(Math.random() * 255)));
50
- }
51
-
52
- export function randomMemoryFields(length: number): Field[] {
53
- return [...Array(length)].map(_ => new Field(Fr.random()));
54
- }
55
-
56
36
  export function getFunctionSelector(
57
37
  functionName: string,
58
38
  contractArtifact: ContractArtifact,
@@ -80,24 +60,6 @@ export function getContractFunctionAbi(
80
60
  );
81
61
  }
82
62
 
83
- export function resolveContractAssertionMessage(
84
- functionName: string,
85
- revertReason: AvmRevertReason,
86
- output: Fr[],
87
- contractArtifact: ContractArtifact,
88
- ): string | undefined {
89
- traverseCauseChain(revertReason, cause => {
90
- revertReason = cause as AvmRevertReason;
91
- });
92
-
93
- const functionArtifact = getAllFunctionAbis(contractArtifact).find(f => f.name === functionName);
94
- if (!functionArtifact || !revertReason.noirCallStack || !isNoirCallStackUnresolved(revertReason.noirCallStack)) {
95
- return undefined;
96
- }
97
-
98
- return resolveAssertionMessageFromRevertData(output, functionArtifact);
99
- }
100
-
101
63
  /**
102
64
  * Create a contract class and instance given constructor args, artifact, etc.
103
65
  * NOTE: This is useful for testing real-ish contract class registration and instance deployment TXs (via logs)
@@ -127,17 +89,20 @@ export async function createContractClassAndInstance(
127
89
  const constructorAbi = getContractFunctionAbi('constructor', contractArtifact);
128
90
  const { publicKeys } = await deriveKeys(new Fr(seed));
129
91
  const initializationHash = await computeInitializationHash(constructorAbi, constructorArgs);
92
+ const immutablesHash = new Fr(seed + 1);
130
93
  const contractInstance =
131
94
  originalContractClassId === undefined
132
95
  ? await makeContractInstanceFromClassId(contractClass.id, seed, {
133
96
  deployer,
134
97
  initializationHash,
98
+ immutablesHash,
135
99
  publicKeys,
136
100
  })
137
101
  : await makeContractInstanceFromClassId(originalContractClassId, seed, {
138
102
  deployer,
139
103
  initializationHash,
140
104
  currentClassId: contractClass.id,
105
+ immutablesHash,
141
106
  publicKeys,
142
107
  });
143
108
 
@@ -0,0 +1,41 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+ import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
4
+
5
+ export class ContractsDbCheckpoint {
6
+ private instances: Map<string, ContractInstanceWithAddress> = new Map();
7
+ private classes: Map<string, ContractClassPublic> = new Map();
8
+ private bytecodeCommitments: Map<string, Fr> = new Map();
9
+
10
+ public addInstance(address: AztecAddress, instance: ContractInstanceWithAddress): void {
11
+ this.instances.set(address.toString(), instance);
12
+ }
13
+
14
+ public addClass(classId: Fr, contractClass: ContractClassPublic): void {
15
+ this.classes.set(classId.toString(), contractClass);
16
+ }
17
+
18
+ public addBytecodeCommitment(classId: Fr, commitment: Fr): void {
19
+ this.bytecodeCommitments.set(classId.toString(), commitment);
20
+ }
21
+
22
+ public getInstance(address: AztecAddress): ContractInstanceWithAddress | undefined {
23
+ return this.instances.get(address.toString());
24
+ }
25
+
26
+ public getClass(classId: Fr): ContractClassPublic | undefined {
27
+ return this.classes.get(classId.toString());
28
+ }
29
+
30
+ public getBytecodeCommitment(classId: Fr): Fr | undefined {
31
+ return this.bytecodeCommitments.get(classId.toString());
32
+ }
33
+
34
+ public fork(): ContractsDbCheckpoint {
35
+ const copy = new ContractsDbCheckpoint();
36
+ this.instances.forEach((value, key) => copy.instances.set(key, value));
37
+ this.classes.forEach((value, key) => copy.classes.set(key, value));
38
+ this.bytecodeCommitments.forEach((value, key) => copy.bytecodeCommitments.set(key, value));
39
+ return copy;
40
+ }
41
+ }
@@ -1,4 +1,4 @@
1
- import type { Fr } from '@aztec/foundation/fields';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import type { FunctionSelector } from '@aztec/stdlib/abi';
3
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
@@ -58,4 +58,19 @@ export interface PublicContractsDBInterface {
58
58
  * @returns The name of the function or undefined if not found.
59
59
  */
60
60
  getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
61
+
62
+ /**
63
+ * Creates a checkpoint of the current contract state.
64
+ */
65
+ createCheckpoint(): void;
66
+
67
+ /**
68
+ * Commits the current checkpoint, merging its state with the parent.
69
+ */
70
+ commitCheckpoint(): void;
71
+
72
+ /**
73
+ * Reverts the current checkpoint, discarding its state.
74
+ */
75
+ revertCheckpoint(): void;
61
76
  }
@@ -1,4 +1,5 @@
1
1
  import type { RevertCode } from '@aztec/stdlib/avm';
2
+ import type { GasUsed } from '@aztec/stdlib/gas';
2
3
  import {
3
4
  Attributes,
4
5
  type Histogram,
@@ -6,7 +7,7 @@ import {
6
7
  type TelemetryClient,
7
8
  type Tracer,
8
9
  type UpDownCounter,
9
- ValueType,
10
+ createUpDownCounterWithDefault,
10
11
  } from '@aztec/telemetry-client';
11
12
 
12
13
  import type { ExecutorMetricsInterface } from './executor_metrics_interface.js';
@@ -25,52 +26,28 @@ export class ExecutorMetrics implements ExecutorMetricsInterface {
25
26
  this.tracer = client.getTracer(name);
26
27
  const meter = client.getMeter(name);
27
28
 
28
- this.fnCount = meter.createUpDownCounter(Metrics.PUBLIC_EXECUTOR_SIMULATION_COUNT, {
29
- description: 'Number of functions executed',
29
+ this.fnCount = createUpDownCounterWithDefault(meter, Metrics.PUBLIC_EXECUTOR_SIMULATION_COUNT, {
30
+ [Attributes.OK]: [true, false],
30
31
  });
31
32
 
32
- this.fnDuration = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_SIMULATION_DURATION, {
33
- description: 'How long it takes to execute a function',
34
- unit: 'ms',
35
- valueType: ValueType.INT,
36
- });
33
+ this.fnDuration = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_SIMULATION_DURATION);
37
34
 
38
- this.manaPerSecond = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_SIMULATION_MANA_PER_SECOND, {
39
- description: 'Mana used per second',
40
- unit: 'mana/s',
41
- valueType: ValueType.INT,
42
- });
35
+ this.manaPerSecond = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_SIMULATION_MANA_PER_SECOND);
43
36
 
44
- this.manaUsed = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_SIMULATION_MANA_USED, {
45
- description: 'Total mana used',
46
- unit: 'mana',
47
- valueType: ValueType.INT,
48
- });
37
+ this.manaUsed = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_SIMULATION_MANA_USED);
49
38
 
50
- this.totalInstructionsExecuted = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_SIMULATION_TOTAL_INSTRUCTIONS, {
51
- description: 'Total number of instructions executed',
52
- unit: '#instructions',
53
- valueType: ValueType.INT,
54
- });
39
+ this.totalInstructionsExecuted = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_SIMULATION_TOTAL_INSTRUCTIONS);
55
40
 
56
- this.txHashing = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_TX_HASHING, {
57
- description: 'Tx hashing time',
58
- unit: 'ms',
59
- valueType: ValueType.INT,
60
- });
41
+ this.txHashing = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_TX_HASHING);
61
42
 
62
- this.privateEffectsInsertions = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_PRIVATE_EFFECTS_INSERTION, {
63
- description: 'Private effects insertion time',
64
- unit: 'us',
65
- valueType: ValueType.INT,
66
- });
43
+ this.privateEffectsInsertions = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_PRIVATE_EFFECTS_INSERTION);
67
44
  }
68
45
 
69
46
  startRecordingTxSimulation(_txLabel: string) {
70
47
  // do nothing (unimplemented)
71
48
  }
72
49
 
73
- stopRecordingTxSimulation(_txLabel: string, _revertedCode?: RevertCode) {
50
+ stopRecordingTxSimulation(_txLabel: string, _gasUsed?: GasUsed, _revertedCode?: RevertCode) {
74
51
  // do nothing (unimplemented)
75
52
  }
76
53
 
@@ -1,8 +1,9 @@
1
1
  import type { RevertCode } from '@aztec/stdlib/avm';
2
+ import type { GasUsed } from '@aztec/stdlib/gas';
2
3
 
3
4
  export interface ExecutorMetricsInterface {
4
5
  startRecordingTxSimulation(txLabel: string): void;
5
- stopRecordingTxSimulation(txLabel: string, revertedCode?: RevertCode): void;
6
+ stopRecordingTxSimulation(txLabel: string, gasUsed?: GasUsed, revertedCode?: RevertCode): void;
6
7
  recordEnqueuedCallSimulation(fnName: string, durationMs: number, manaUsed: number, totalInstructions: number): void;
7
8
  recordEnqueuedCallSimulationFailure(
8
9
  fnName: string,
@@ -1,6 +1,6 @@
1
- import { GeneratorIndex } from '@aztec/constants';
2
- import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto';
3
- import { Fr } from '@aztec/foundation/fields';
1
+ import { DomainSeparator } from '@aztec/constants';
2
+ import { poseidon2HashWithSeparator } from '@aztec/foundation/crypto/poseidon';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import type { Logger } from '@aztec/foundation/log';
5
5
  import { Timer } from '@aztec/foundation/timer';
6
6
  import type { ContractArtifact } from '@aztec/stdlib/abi';
@@ -326,6 +326,6 @@ async function removeLiquidity(
326
326
  async function computePartialNoteValidityCommitment(partialNote: { commitment: Fr }, completer: AztecAddress) {
327
327
  return await poseidon2HashWithSeparator(
328
328
  [partialNote.commitment, completer],
329
- GeneratorIndex.PARTIAL_NOTE_VALIDITY_COMMITMENT,
329
+ DomainSeparator.PARTIAL_NOTE_VALIDITY_COMMITMENT,
330
330
  );
331
331
  }
@@ -1,4 +1,4 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import type { Logger } from '@aztec/foundation/log';
3
3
  import { Timer } from '@aztec/foundation/timer';
4
4
  import type { ContractArtifact } from '@aztec/stdlib/abi';
@@ -25,14 +25,26 @@ export async function bulkTest(
25
25
  // Register multiple different protocol contracts (to ensure we don't dedup bytecode hashing events):
26
26
  await tester.registerAuthContract();
27
27
  await tester.registerInstanceRegistryContract();
28
+ await tester.registerClassRegistryContract();
28
29
 
29
30
  // Get a deployed contract instance to pass to the contract
30
31
  // for it to use as "expected" values when testing contract instance retrieval.
31
32
  const expectContractInstance = avmTestContract;
32
33
  const argsField = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
33
- const argsU8 = [1, 2, 3, 4, 5, 6, 7, 8].map(x => new Fr(x));
34
- argsU8.push(new Fr(2n ** 128n + 9n)); // Trigger truncation from large (> 128 bits) value (canonical decomposition event)
35
- argsU8.push(new Fr(2n ** 125n + 10n)); // Trigger truncation from small (< 128 bits) value (no canonical decomposition event)
34
+ const argsU8 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
35
+ // Pinned grumpkin-Poseidon2 Schnorr signature (mirrors the C++ `pinned_test_vector_large`
36
+ // and noir-lang/schnorr v0.4.0's `pinned_vector_large`). Passing these in as calldata
37
+ // (rather than baking them into Noir as constants) keeps MSM + Poseidon2 from being folded
38
+ // by the Noir compiler.
39
+ const schnorrInputs = [
40
+ Fr.fromHexString('0x065812e335a97c2108ea8cf4ccfe2f9dd6b117a0714f5e18461575be93f61da6'), // pubkey.x
41
+ Fr.fromHexString('0x1a915003e8ec534f9a15d926a7ded478e178468ccc4f28e236e67450a55ac622'), // pubkey.y
42
+ Fr.fromHexString('0xf3bc3b7147acb9c621fd9f72dbf15ffa'), // sig_s.lo
43
+ Fr.fromHexString('0x08599f379f0301dfefdbd0272554454d'), // sig_s.hi
44
+ Fr.fromHexString('0x97065383ebbbd76620398792bd259bc2'), // sig_e.lo
45
+ Fr.fromHexString('0x2ceaee87f45b7a417f0ffb05451a8c92'), // sig_e.hi
46
+ Fr.fromHexString('0x0123456789abcdef0fedcba9876543210123456789abcdef0fedcba987654321'), // message
47
+ ];
36
48
  const args = [
37
49
  argsField,
38
50
  argsU8,
@@ -40,6 +52,8 @@ export async function bulkTest(
40
52
  /*expectedDeployer=*/ expectContractInstance.deployer,
41
53
  /*expectedClassId=*/ expectContractInstance.currentContractClassId,
42
54
  /*expectedInitializationHash=*/ expectContractInstance.initializationHash,
55
+ /*expectedImmutablesHash=*/ expectContractInstance.immutablesHash,
56
+ /*schnorrInputs=*/ schnorrInputs,
43
57
  /*skip_strictly_limited_side_effects=*/ false,
44
58
  ];
45
59
 
@@ -62,7 +76,7 @@ export async function bulkTest(
62
76
  {
63
77
  address: avmTestContract.address,
64
78
  fnName: 'assert_calldata_copy',
65
- args: [argsField.slice(3), /* with_selector: */ true],
79
+ args: [argsField.slice(0, 3), /* with_selector: */ true],
66
80
  },
67
81
  {
68
82
  address: avmTestContract.address,
@@ -118,11 +132,20 @@ export async function megaBulkTest(
118
132
  const argsField2 = [5, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
119
133
  const argsField3 = [7, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
120
134
  const argsField4 = [9, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
121
- const argsField5 = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
122
- const argsField6 = [13, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
123
- const argsField7 = [15, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
124
- const argsField8 = [17, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
135
+ //const argsField5 = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
136
+ //const argsField6 = [13, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
137
+ //const argsField7 = [15, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
138
+ //const argsField8 = [17, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
125
139
  const argsU8 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
140
+ const schnorrInputs = [
141
+ Fr.fromHexString('0x065812e335a97c2108ea8cf4ccfe2f9dd6b117a0714f5e18461575be93f61da6'), // pubkey.x
142
+ Fr.fromHexString('0x1a915003e8ec534f9a15d926a7ded478e178468ccc4f28e236e67450a55ac622'), // pubkey.y
143
+ Fr.fromHexString('0xf3bc3b7147acb9c621fd9f72dbf15ffa'), // sig_s.lo
144
+ Fr.fromHexString('0x08599f379f0301dfefdbd0272554454d'), // sig_s.hi
145
+ Fr.fromHexString('0x97065383ebbbd76620398792bd259bc2'), // sig_e.lo
146
+ Fr.fromHexString('0x2ceaee87f45b7a417f0ffb05451a8c92'), // sig_e.hi
147
+ Fr.fromHexString('0x0123456789abcdef0fedcba9876543210123456789abcdef0fedcba987654321'), // message
148
+ ];
126
149
  const genArgs = (argsField: Fr[]) => [
127
150
  argsField,
128
151
  argsU8,
@@ -130,6 +153,8 @@ export async function megaBulkTest(
130
153
  /*expectedDeployer=*/ expectContractInstance.deployer.toField(),
131
154
  /*expectedClassId=*/ expectContractInstance.currentContractClassId.toField(),
132
155
  /*expectedInitializationHash=*/ expectContractInstance.initializationHash.toField(),
156
+ /*expectedImmutablesHash=*/ expectContractInstance.immutablesHash.toField(),
157
+ /*schnorrInputs=*/ schnorrInputs,
133
158
  // Must skip strictly limited side effects (logs, messages) so we can spam the bulk test several times.
134
159
  /*skip_strictly_limited_side_effects=*/ true,
135
160
  ];
@@ -144,10 +169,10 @@ export async function megaBulkTest(
144
169
  { address: avmTestContract.address, fnName: 'bulk_testing', args: genArgs(argsField2) },
145
170
  { address: avmTestContract.address, fnName: 'bulk_testing', args: genArgs(argsField3) },
146
171
  { address: avmTestContract.address, fnName: 'bulk_testing', args: genArgs(argsField4) },
147
- { address: avmTestContract.address, fnName: 'bulk_testing', args: genArgs(argsField5) },
148
- { address: avmTestContract.address, fnName: 'bulk_testing', args: genArgs(argsField6) },
149
- { address: avmTestContract.address, fnName: 'bulk_testing', args: genArgs(argsField7) },
150
- { address: avmTestContract.address, fnName: 'bulk_testing', args: genArgs(argsField8) },
172
+ //{ address: avmTestContract.address, fnName: 'bulk_testing', args: genArgs(argsField5) },
173
+ //{ address: avmTestContract.address, fnName: 'bulk_testing', args: genArgs(argsField6) },
174
+ //{ address: avmTestContract.address, fnName: 'bulk_testing', args: genArgs(argsField7) },
175
+ //{ address: avmTestContract.address, fnName: 'bulk_testing', args: genArgs(argsField8) },
151
176
  ],
152
177
  /*teardownCall=*/ undefined,
153
178
  /*feePayer*/ undefined,