@aztec/simulator 0.0.1-commit.b6e433891 → 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 (309) hide show
  1. package/dest/private/acvm_wasm.d.ts +1 -1
  2. package/dest/private/acvm_wasm.d.ts.map +1 -1
  3. package/dest/private/acvm_wasm.js +3 -1
  4. package/dest/public/avm/testing/account_proof_fetcher.d.ts +2 -0
  5. package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
  6. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +2 -1
  7. package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +1 -0
  8. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.js +17 -2
  9. package/dest/public/avm/testing/utils.d.ts +32 -0
  10. package/dest/public/avm/testing/utils.d.ts.map +1 -0
  11. package/dest/public/avm/{fixtures → testing}/utils.js +3 -33
  12. package/dest/public/contracts_db_checkpoint.d.ts +2 -2
  13. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -1
  14. package/dest/public/contracts_db_checkpoint.js +1 -1
  15. package/dest/public/fixtures/bulk_test.d.ts +1 -1
  16. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  17. package/dest/public/fixtures/bulk_test.js +31 -4
  18. package/dest/public/fixtures/index.d.ts +1 -4
  19. package/dest/public/fixtures/index.d.ts.map +1 -1
  20. package/dest/public/fixtures/index.js +0 -3
  21. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +3 -3
  22. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  23. package/dest/public/fixtures/public_tx_simulation_tester.js +9 -10
  24. package/dest/public/fixtures/simple_contract_data_source.js +1 -1
  25. package/dest/public/fixtures/utils.d.ts +1 -1
  26. package/dest/public/fixtures/utils.d.ts.map +1 -1
  27. package/dest/public/fixtures/utils.js +14 -15
  28. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +6 -4
  29. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
  30. package/dest/public/fuzzing/avm_fuzzer_simulator.js +12 -7
  31. package/dest/public/fuzzing/avm_simulator_bin.js +4 -4
  32. package/dest/public/index.d.ts +2 -2
  33. package/dest/public/index.d.ts.map +1 -1
  34. package/dest/public/index.js +1 -1
  35. package/dest/public/public_db_sources.d.ts +6 -3
  36. package/dest/public/public_db_sources.d.ts.map +1 -1
  37. package/dest/public/public_db_sources.js +16 -10
  38. package/dest/public/public_processor/guarded_merkle_tree.d.ts +4 -3
  39. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  40. package/dest/public/public_processor/guarded_merkle_tree.js +3 -0
  41. package/dest/public/public_processor/public_processor.d.ts +4 -3
  42. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  43. package/dest/public/public_processor/public_processor.js +60 -35
  44. package/dest/public/public_processor/public_processor_metrics.d.ts +4 -1
  45. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  46. package/dest/public/public_processor/public_processor_metrics.js +8 -0
  47. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +1 -1
  48. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -1
  49. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +3 -2
  50. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +23 -0
  51. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
  52. package/dest/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.js → dumping_public_tx_simulator.js} +2 -2
  53. package/dest/public/public_tx_simulator/factories.d.ts +6 -6
  54. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
  55. package/dest/public/public_tx_simulator/factories.js +6 -6
  56. package/dest/public/public_tx_simulator/index.d.ts +3 -5
  57. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  58. package/dest/public/public_tx_simulator/index.js +2 -4
  59. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +41 -70
  60. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  61. package/dest/public/public_tx_simulator/public_tx_simulator.js +98 -319
  62. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +22 -0
  63. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
  64. package/dest/public/public_tx_simulator/public_tx_simulator_base.js +28 -0
  65. package/package.json +17 -17
  66. package/src/private/acvm_wasm.ts +4 -1
  67. package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +22 -2
  68. package/src/public/avm/{fixtures → testing}/utils.ts +3 -39
  69. package/src/public/contracts_db_checkpoint.ts +1 -1
  70. package/src/public/fixtures/bulk_test.ts +29 -4
  71. package/src/public/fixtures/index.ts +0 -3
  72. package/src/public/fixtures/public_tx_simulation_tester.ts +10 -18
  73. package/src/public/fixtures/simple_contract_data_source.ts +1 -1
  74. package/src/public/fixtures/utils.ts +21 -18
  75. package/src/public/fuzzing/avm_fuzzer_simulator.ts +15 -18
  76. package/src/public/fuzzing/avm_simulator_bin.ts +3 -5
  77. package/src/public/index.ts +3 -3
  78. package/src/public/public_db_sources.ts +21 -14
  79. package/src/public/public_processor/guarded_merkle_tree.ts +5 -2
  80. package/src/public/public_processor/public_processor.ts +78 -42
  81. package/src/public/public_processor/public_processor_metrics.ts +12 -0
  82. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +3 -2
  83. package/src/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.ts → dumping_public_tx_simulator.ts} +2 -2
  84. package/src/public/public_tx_simulator/factories.ts +6 -6
  85. package/src/public/public_tx_simulator/index.ts +2 -4
  86. package/src/public/public_tx_simulator/public_tx_simulator.ts +150 -476
  87. package/src/public/public_tx_simulator/public_tx_simulator_base.ts +35 -0
  88. package/dest/public/avm/avm_context.d.ts +0 -41
  89. package/dest/public/avm/avm_context.d.ts.map +0 -1
  90. package/dest/public/avm/avm_context.js +0 -44
  91. package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
  92. package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
  93. package/dest/public/avm/avm_contract_call_result.js +0 -54
  94. package/dest/public/avm/avm_execution_environment.d.ts +0 -24
  95. package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
  96. package/dest/public/avm/avm_execution_environment.js +0 -33
  97. package/dest/public/avm/avm_gas.d.ts +0 -44
  98. package/dest/public/avm/avm_gas.d.ts.map +0 -1
  99. package/dest/public/avm/avm_gas.js +0 -195
  100. package/dest/public/avm/avm_machine_state.d.ts +0 -98
  101. package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
  102. package/dest/public/avm/avm_machine_state.js +0 -110
  103. package/dest/public/avm/avm_memory_types.d.ts +0 -275
  104. package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
  105. package/dest/public/avm/avm_memory_types.js +0 -354
  106. package/dest/public/avm/avm_simulator.d.ts +0 -41
  107. package/dest/public/avm/avm_simulator.d.ts.map +0 -1
  108. package/dest/public/avm/avm_simulator.js +0 -192
  109. package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
  110. package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
  111. package/dest/public/avm/avm_simulator_interface.js +0 -3
  112. package/dest/public/avm/calldata.d.ts +0 -51
  113. package/dest/public/avm/calldata.d.ts.map +0 -1
  114. package/dest/public/avm/calldata.js +0 -63
  115. package/dest/public/avm/errors.d.ts +0 -104
  116. package/dest/public/avm/errors.d.ts.map +0 -1
  117. package/dest/public/avm/errors.js +0 -141
  118. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +0 -2
  119. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +0 -1
  120. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +0 -22
  121. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  122. package/dest/public/avm/fixtures/avm_simulation_tester.js +0 -84
  123. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  124. package/dest/public/avm/fixtures/initializers.d.ts +0 -42
  125. package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
  126. package/dest/public/avm/fixtures/initializers.js +0 -45
  127. package/dest/public/avm/fixtures/utils.d.ts +0 -39
  128. package/dest/public/avm/fixtures/utils.d.ts.map +0 -1
  129. package/dest/public/avm/index.d.ts +0 -2
  130. package/dest/public/avm/index.d.ts.map +0 -1
  131. package/dest/public/avm/index.js +0 -1
  132. package/dest/public/avm/opcodes/accrued_substate.d.ts +0 -74
  133. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
  134. package/dest/public/avm/opcodes/accrued_substate.js +0 -254
  135. package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
  136. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
  137. package/dest/public/avm/opcodes/addressing_mode.js +0 -94
  138. package/dest/public/avm/opcodes/arithmetic.d.ts +0 -49
  139. package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
  140. package/dest/public/avm/opcodes/arithmetic.js +0 -97
  141. package/dest/public/avm/opcodes/bitwise.d.ts +0 -42
  142. package/dest/public/avm/opcodes/bitwise.d.ts.map +0 -1
  143. package/dest/public/avm/opcodes/bitwise.js +0 -99
  144. package/dest/public/avm/opcodes/comparators.d.ts +0 -25
  145. package/dest/public/avm/opcodes/comparators.d.ts.map +0 -1
  146. package/dest/public/avm/opcodes/comparators.js +0 -43
  147. package/dest/public/avm/opcodes/contract.d.ts +0 -20
  148. package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
  149. package/dest/public/avm/opcodes/contract.js +0 -65
  150. package/dest/public/avm/opcodes/control_flow.d.ts +0 -41
  151. package/dest/public/avm/opcodes/control_flow.d.ts.map +0 -1
  152. package/dest/public/avm/opcodes/control_flow.js +0 -107
  153. package/dest/public/avm/opcodes/conversion.d.ts +0 -18
  154. package/dest/public/avm/opcodes/conversion.d.ts.map +0 -1
  155. package/dest/public/avm/opcodes/conversion.js +0 -333
  156. package/dest/public/avm/opcodes/ec_add.d.ts +0 -19
  157. package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
  158. package/dest/public/avm/opcodes/ec_add.js +0 -93
  159. package/dest/public/avm/opcodes/environment_getters.d.ts +0 -28
  160. package/dest/public/avm/opcodes/environment_getters.d.ts.map +0 -1
  161. package/dest/public/avm/opcodes/environment_getters.js +0 -77
  162. package/dest/public/avm/opcodes/external_calls.d.ts +0 -59
  163. package/dest/public/avm/opcodes/external_calls.d.ts.map +0 -1
  164. package/dest/public/avm/opcodes/external_calls.js +0 -210
  165. package/dest/public/avm/opcodes/hashing.d.ts +0 -36
  166. package/dest/public/avm/opcodes/hashing.d.ts.map +0 -1
  167. package/dest/public/avm/opcodes/hashing.js +0 -119
  168. package/dest/public/avm/opcodes/index.d.ts +0 -16
  169. package/dest/public/avm/opcodes/index.d.ts.map +0 -1
  170. package/dest/public/avm/opcodes/index.js +0 -15
  171. package/dest/public/avm/opcodes/instruction.d.ts +0 -74
  172. package/dest/public/avm/opcodes/instruction.d.ts.map +0 -1
  173. package/dest/public/avm/opcodes/instruction.js +0 -95
  174. package/dest/public/avm/opcodes/instruction_impl.d.ts +0 -19
  175. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +0 -1
  176. package/dest/public/avm/opcodes/instruction_impl.js +0 -30
  177. package/dest/public/avm/opcodes/memory.d.ts +0 -74
  178. package/dest/public/avm/opcodes/memory.d.ts.map +0 -1
  179. package/dest/public/avm/opcodes/memory.js +0 -257
  180. package/dest/public/avm/opcodes/misc.d.ts +0 -18
  181. package/dest/public/avm/opcodes/misc.d.ts.map +0 -1
  182. package/dest/public/avm/opcodes/misc.js +0 -73
  183. package/dest/public/avm/opcodes/storage.d.ts +0 -25
  184. package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
  185. package/dest/public/avm/opcodes/storage.js +0 -78
  186. package/dest/public/avm/revert_reason.d.ts +0 -18
  187. package/dest/public/avm/revert_reason.d.ts.map +0 -1
  188. package/dest/public/avm/revert_reason.js +0 -39
  189. package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -26
  190. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +0 -1
  191. package/dest/public/avm/serialization/buffer_cursor.js +0 -99
  192. package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -17
  193. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  194. package/dest/public/avm/serialization/bytecode_serialization.js +0 -336
  195. package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -114
  196. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +0 -1
  197. package/dest/public/avm/serialization/instruction_serialization.js +0 -261
  198. package/dest/public/avm/test_utils.d.ts +0 -15
  199. package/dest/public/avm/test_utils.d.ts.map +0 -1
  200. package/dest/public/avm/test_utils.js +0 -44
  201. package/dest/public/debug_fn_name.d.ts +0 -18
  202. package/dest/public/debug_fn_name.d.ts.map +0 -1
  203. package/dest/public/debug_fn_name.js +0 -37
  204. package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -12
  205. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
  206. package/dest/public/fixtures/custom_bytecode_tests.js +0 -174
  207. package/dest/public/fixtures/minimal_public_tx.d.ts +0 -4
  208. package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
  209. package/dest/public/fixtures/minimal_public_tx.js +0 -19
  210. package/dest/public/fixtures/opcode_spammer.d.ts +0 -122
  211. package/dest/public/fixtures/opcode_spammer.d.ts.map +0 -1
  212. package/dest/public/fixtures/opcode_spammer.js +0 -1653
  213. package/dest/public/hinting_db_sources.d.ts +0 -80
  214. package/dest/public/hinting_db_sources.d.ts.map +0 -1
  215. package/dest/public/hinting_db_sources.js +0 -356
  216. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -53
  217. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +0 -1
  218. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +0 -131
  219. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +0 -42
  220. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +0 -1
  221. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +0 -86
  222. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +0 -30
  223. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +0 -1
  224. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +0 -171
  225. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +0 -23
  226. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +0 -1
  227. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -31
  228. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +0 -1
  229. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +0 -51
  230. package/dest/public/public_tx_simulator/public_tx_context.d.ts +0 -131
  231. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +0 -1
  232. package/dest/public/public_tx_simulator/public_tx_context.js +0 -300
  233. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +0 -21
  234. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +0 -1
  235. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +0 -415
  236. package/dest/public/side_effect_trace.d.ts +0 -87
  237. package/dest/public/side_effect_trace.d.ts.map +0 -1
  238. package/dest/public/side_effect_trace.js +0 -199
  239. package/dest/public/side_effect_trace_interface.d.ts +0 -22
  240. package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
  241. package/dest/public/side_effect_trace_interface.js +0 -1
  242. package/dest/public/state_manager/index.d.ts +0 -2
  243. package/dest/public/state_manager/index.d.ts.map +0 -1
  244. package/dest/public/state_manager/index.js +0 -1
  245. package/dest/public/state_manager/nullifiers.d.ts +0 -61
  246. package/dest/public/state_manager/nullifiers.d.ts.map +0 -1
  247. package/dest/public/state_manager/nullifiers.js +0 -92
  248. package/dest/public/state_manager/public_storage.d.ts +0 -66
  249. package/dest/public/state_manager/public_storage.d.ts.map +0 -1
  250. package/dest/public/state_manager/public_storage.js +0 -145
  251. package/dest/public/state_manager/state_manager.d.ts +0 -170
  252. package/dest/public/state_manager/state_manager.d.ts.map +0 -1
  253. package/dest/public/state_manager/state_manager.js +0 -402
  254. package/src/public/avm/avm_context.ts +0 -61
  255. package/src/public/avm/avm_contract_call_result.ts +0 -69
  256. package/src/public/avm/avm_execution_environment.ts +0 -51
  257. package/src/public/avm/avm_gas.ts +0 -183
  258. package/src/public/avm/avm_machine_state.ts +0 -170
  259. package/src/public/avm/avm_memory_types.ts +0 -440
  260. package/src/public/avm/avm_simulator.ts +0 -279
  261. package/src/public/avm/avm_simulator_interface.ts +0 -8
  262. package/src/public/avm/calldata.ts +0 -100
  263. package/src/public/avm/errors.ts +0 -177
  264. package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -122
  265. package/src/public/avm/fixtures/initializers.ts +0 -103
  266. package/src/public/avm/index.ts +0 -1
  267. package/src/public/avm/opcodes/accrued_substate.ts +0 -285
  268. package/src/public/avm/opcodes/addressing_mode.ts +0 -111
  269. package/src/public/avm/opcodes/arithmetic.ts +0 -129
  270. package/src/public/avm/opcodes/bitwise.ts +0 -113
  271. package/src/public/avm/opcodes/comparators.ts +0 -55
  272. package/src/public/avm/opcodes/contract.ts +0 -72
  273. package/src/public/avm/opcodes/control_flow.ts +0 -123
  274. package/src/public/avm/opcodes/conversion.ts +0 -104
  275. package/src/public/avm/opcodes/ec_add.ts +0 -105
  276. package/src/public/avm/opcodes/environment_getters.ts +0 -87
  277. package/src/public/avm/opcodes/external_calls.ts +0 -262
  278. package/src/public/avm/opcodes/hashing.ts +0 -151
  279. package/src/public/avm/opcodes/index.ts +0 -15
  280. package/src/public/avm/opcodes/instruction.ts +0 -136
  281. package/src/public/avm/opcodes/instruction_impl.ts +0 -36
  282. package/src/public/avm/opcodes/memory.ts +0 -293
  283. package/src/public/avm/opcodes/misc.ts +0 -102
  284. package/src/public/avm/opcodes/storage.ts +0 -95
  285. package/src/public/avm/revert_reason.ts +0 -58
  286. package/src/public/avm/serialization/buffer_cursor.ts +0 -118
  287. package/src/public/avm/serialization/bytecode_serialization.ts +0 -215
  288. package/src/public/avm/serialization/instruction_serialization.ts +0 -249
  289. package/src/public/avm/test_utils.ts +0 -64
  290. package/src/public/debug_fn_name.ts +0 -52
  291. package/src/public/fixtures/custom_bytecode_tests.ts +0 -228
  292. package/src/public/fixtures/minimal_public_tx.ts +0 -26
  293. package/src/public/fixtures/opcode_spammer.ts +0 -1717
  294. package/src/public/hinting_db_sources.ts +0 -609
  295. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -210
  296. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +0 -134
  297. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +0 -239
  298. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -105
  299. package/src/public/public_tx_simulator/public_tx_context.ts +0 -484
  300. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
  301. package/src/public/side_effect_trace.ts +0 -293
  302. package/src/public/side_effect_trace_interface.ts +0 -28
  303. package/src/public/state_manager/index.ts +0 -1
  304. package/src/public/state_manager/nullifiers.ts +0 -103
  305. package/src/public/state_manager/public_storage.ts +0 -174
  306. package/src/public/state_manager/state_manager.ts +0 -569
  307. /package/dest/public/avm/{fixtures → testing}/account_proof_fetcher.js +0 -0
  308. /package/src/public/avm/{fixtures → testing}/account_proof.json +0 -0
  309. /package/src/public/avm/{fixtures → testing}/account_proof_fetcher.ts +0 -0
@@ -2,9 +2,10 @@ import { CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS } from '@aztec/constants';
2
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 = {
@@ -14,7 +14,6 @@ import {
14
14
  type ContractInstanceWithAddress,
15
15
  computeInitializationHash,
16
16
  } from '@aztec/stdlib/contract';
17
- import { isNoirCallStackUnresolved } from '@aztec/stdlib/errors';
18
17
  import { siloNullifier } from '@aztec/stdlib/hash';
19
18
  import { deriveKeys } from '@aztec/stdlib/keys';
20
19
  import { makeContractClassPublic, makeContractInstanceFromClassId } from '@aztec/stdlib/testing';
@@ -23,10 +22,6 @@ import type { UInt64 } from '@aztec/stdlib/types';
23
22
  import { strict as assert } from 'assert';
24
23
  import merge from 'lodash.merge';
25
24
 
26
- import { resolveAssertionMessageFromRevertData, traverseCauseChain } from '../../../common/index.js';
27
- import { Field, Uint8, Uint32, Uint64 } from '../avm_memory_types.js';
28
- import type { AvmRevertReason } from '../errors.js';
29
-
30
25
  export const PUBLIC_DISPATCH_FN_NAME = 'public_dispatch';
31
26
  export const DEFAULT_TIMESTAMP: UInt64 = 99833n;
32
27
  export const DEFAULT_BLOCK_NUMBER = BlockNumber(42);
@@ -38,22 +33,6 @@ export function allSameExcept(original: any, overrides: any): any {
38
33
  return merge({}, original, overrides);
39
34
  }
40
35
 
41
- export function randomMemoryBytes(length: number): Uint8[] {
42
- return [...Array(length)].map(_ => new Uint8(Math.floor(Math.random() * 255)));
43
- }
44
-
45
- export function randomMemoryUint32s(length: number): Uint32[] {
46
- return [...Array(length)].map(_ => new Uint32(Math.floor(Math.random() * 255)));
47
- }
48
-
49
- export function randomMemoryUint64s(length: number): Uint64[] {
50
- return [...Array(length)].map(_ => new Uint64(Math.floor(Math.random() * 255)));
51
- }
52
-
53
- export function randomMemoryFields(length: number): Field[] {
54
- return [...Array(length)].map(_ => new Field(Fr.random()));
55
- }
56
-
57
36
  export function getFunctionSelector(
58
37
  functionName: string,
59
38
  contractArtifact: ContractArtifact,
@@ -81,24 +60,6 @@ export function getContractFunctionAbi(
81
60
  );
82
61
  }
83
62
 
84
- export function resolveContractAssertionMessage(
85
- functionName: string,
86
- revertReason: AvmRevertReason,
87
- output: Fr[],
88
- contractArtifact: ContractArtifact,
89
- ): string | undefined {
90
- traverseCauseChain(revertReason, cause => {
91
- revertReason = cause as AvmRevertReason;
92
- });
93
-
94
- const functionArtifact = getAllFunctionAbis(contractArtifact).find(f => f.name === functionName);
95
- if (!functionArtifact || !revertReason.noirCallStack || !isNoirCallStackUnresolved(revertReason.noirCallStack)) {
96
- return undefined;
97
- }
98
-
99
- return resolveAssertionMessageFromRevertData(output, functionArtifact);
100
- }
101
-
102
63
  /**
103
64
  * Create a contract class and instance given constructor args, artifact, etc.
104
65
  * NOTE: This is useful for testing real-ish contract class registration and instance deployment TXs (via logs)
@@ -128,17 +89,20 @@ export async function createContractClassAndInstance(
128
89
  const constructorAbi = getContractFunctionAbi('constructor', contractArtifact);
129
90
  const { publicKeys } = await deriveKeys(new Fr(seed));
130
91
  const initializationHash = await computeInitializationHash(constructorAbi, constructorArgs);
92
+ const immutablesHash = new Fr(seed + 1);
131
93
  const contractInstance =
132
94
  originalContractClassId === undefined
133
95
  ? await makeContractInstanceFromClassId(contractClass.id, seed, {
134
96
  deployer,
135
97
  initializationHash,
98
+ immutablesHash,
136
99
  publicKeys,
137
100
  })
138
101
  : await makeContractInstanceFromClassId(originalContractClassId, seed, {
139
102
  deployer,
140
103
  initializationHash,
141
104
  currentClassId: contractClass.id,
105
+ immutablesHash,
142
106
  publicKeys,
143
107
  });
144
108
 
@@ -31,7 +31,7 @@ export class ContractsDbCheckpoint {
31
31
  return this.bytecodeCommitments.get(classId.toString());
32
32
  }
33
33
 
34
- public deepCopy(): ContractsDbCheckpoint {
34
+ public fork(): ContractsDbCheckpoint {
35
35
  const copy = new ContractsDbCheckpoint();
36
36
  this.instances.forEach((value, key) => copy.instances.set(key, value));
37
37
  this.classes.forEach((value, key) => copy.classes.set(key, value));
@@ -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,
@@ -123,6 +137,15 @@ export async function megaBulkTest(
123
137
  //const argsField7 = [15, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(x => new Fr(x));
124
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
  ];
@@ -1,15 +1,12 @@
1
1
  export * from './public_tx_simulation_tester.js';
2
2
  export * from './utils.js';
3
3
  export * from './simple_contract_data_source.js';
4
- export { executeAvmMinimalPublicTx } from './minimal_public_tx.js';
5
4
  export { TestExecutorMetrics } from '../test_executor_metrics.js';
6
5
  export { ammTest } from './amm_test.js';
7
6
  export { bulkTest, megaBulkTest } from './bulk_test.js';
8
7
  export { tokenTest } from './token_test.js';
9
- export * from './custom_bytecode_tests.js';
10
8
  export {
11
9
  deployCustomBytecode,
12
10
  executeCustomBytecode,
13
11
  deployAndExecuteCustomBytecode,
14
12
  } from './custom_bytecode_tester.js';
15
- export { getSpamConfigsPerOpcode, testOpcodeSpamCase } from './opcode_spammer.js';
@@ -1,31 +1,25 @@
1
- import {
2
- DEFAULT_TEARDOWN_DA_GAS_LIMIT,
3
- DEFAULT_TEARDOWN_L2_GAS_LIMIT,
4
- PUBLIC_TX_L2_GAS_OVERHEAD,
5
- TX_DA_GAS_OVERHEAD,
6
- } from '@aztec/constants';
1
+ import { PUBLIC_TX_L2_GAS_OVERHEAD, TX_DA_GAS_OVERHEAD } from '@aztec/constants';
7
2
  import { asyncMap } from '@aztec/foundation/async-map';
8
3
  import { BlockNumber } from '@aztec/foundation/branded-types';
9
4
  import { Fr } from '@aztec/foundation/curves/bn254';
10
5
  import { type ContractArtifact, encodeArguments } from '@aztec/stdlib/abi';
11
6
  import { PublicSimulatorConfig, type PublicTxResult } from '@aztec/stdlib/avm';
12
7
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
13
- import { Gas, GasFees } from '@aztec/stdlib/gas';
8
+ import { FALLBACK_TEARDOWN_DA_GAS_LIMIT, FALLBACK_TEARDOWN_L2_GAS_LIMIT, Gas, GasFees } from '@aztec/stdlib/gas';
14
9
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
15
10
  import { PublicCallRequest } from '@aztec/stdlib/kernel';
16
11
  import { GlobalVariables, PublicCallRequestWithCalldata, type Tx } from '@aztec/stdlib/tx';
17
12
  import { NativeWorldStateService } from '@aztec/world-state';
18
13
 
19
- import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
14
+ import { BaseAvmSimulationTester } from '../avm/testing/base_avm_simulation_tester.js';
20
15
  import {
21
16
  DEFAULT_BLOCK_NUMBER,
22
17
  DEFAULT_TIMESTAMP,
23
18
  getContractFunctionAbi,
24
19
  getFunctionSelector,
25
- } from '../avm/fixtures/utils.js';
20
+ } from '../avm/testing/utils.js';
26
21
  import { PublicContractsDB } from '../public_db_sources.js';
27
- import { MeasuredCppPublicTxSimulator } from '../public_tx_simulator/cpp_public_tx_simulator.js';
28
- import { MeasuredCppVsTsPublicTxSimulator } from '../public_tx_simulator/cpp_vs_ts_public_tx_simulator.js';
22
+ import { MeasuredPublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
29
23
  import type { MeasuredPublicTxSimulatorInterface } from '../public_tx_simulator/public_tx_simulator_interface.js';
30
24
  import { TestExecutorMetrics } from '../test_executor_metrics.js';
31
25
  import { SimpleContractDataSource } from './simple_contract_data_source.js';
@@ -86,7 +80,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
86
80
  if (simulatorFactory) {
87
81
  this.simulator = simulatorFactory(merkleTree, contractsDB, globals, this.metrics, config);
88
82
  } else {
89
- this.simulator = new MeasuredCppPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config);
83
+ this.simulator = new MeasuredPublicTxSimulator(merkleTree, contractsDB, globals, this.metrics, config);
90
84
  }
91
85
  }
92
86
 
@@ -94,14 +88,12 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
94
88
  worldStateService: NativeWorldStateService, // make sure to close this later
95
89
  globals: GlobalVariables = defaultGlobals(),
96
90
  metrics: TestExecutorMetrics = new TestExecutorMetrics(),
97
- useCppSimulator = false,
98
91
  config: PublicSimulatorConfig = defaultConfig,
99
92
  ): Promise<PublicTxSimulationTester> {
100
93
  const contractDataSource = new SimpleContractDataSource();
101
94
  const merkleTree = await worldStateService.fork();
102
- const simulatorFactory: MeasuredSimulatorFactory = useCppSimulator
103
- ? (mt, cdb, g, m, c) => new MeasuredCppPublicTxSimulator(mt, cdb, g, m, c)
104
- : (mt, cdb, g, m, c) => new MeasuredCppVsTsPublicTxSimulator(mt, cdb, g, m, c);
95
+ const simulatorFactory: MeasuredSimulatorFactory = (mt, cdb, g, m, c) =>
96
+ new MeasuredPublicTxSimulator(mt, cdb, g, m, c);
105
97
  return new PublicTxSimulationTester(merkleTree, contractDataSource, globals, metrics, simulatorFactory, config);
106
98
  }
107
99
 
@@ -138,8 +130,8 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
138
130
  feePayer,
139
131
  /*gasUsedByPrivate*/ teardownCall
140
132
  ? new Gas(
141
- DEFAULT_TEARDOWN_DA_GAS_LIMIT + TX_DA_GAS_OVERHEAD,
142
- DEFAULT_TEARDOWN_L2_GAS_LIMIT + PUBLIC_TX_L2_GAS_OVERHEAD,
133
+ FALLBACK_TEARDOWN_DA_GAS_LIMIT + TX_DA_GAS_OVERHEAD,
134
+ FALLBACK_TEARDOWN_L2_GAS_LIMIT + PUBLIC_TX_L2_GAS_OVERHEAD,
143
135
  )
144
136
  : new Gas(TX_DA_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD),
145
137
  defaultGlobals(),
@@ -5,7 +5,7 @@ import type { ContractArtifact, FunctionSelector } from '@aztec/stdlib/abi';
5
5
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
6
6
  import type { ContractClassPublic, ContractDataSource, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
7
7
 
8
- import { getFunctionSelector } from '../avm/fixtures/utils.js';
8
+ import { getFunctionSelector } from '../avm/testing/utils.js';
9
9
 
10
10
  /**
11
11
  * This class is used during public/avm testing to function as a database of
@@ -2,10 +2,8 @@ import {
2
2
  CONTRACT_CLASS_PUBLISHED_MAGIC_VALUE,
3
3
  CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS,
4
4
  CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS,
5
- DEFAULT_DA_GAS_LIMIT,
6
- DEFAULT_L2_GAS_LIMIT,
7
- DEFAULT_TEARDOWN_DA_GAS_LIMIT,
8
- DEFAULT_TEARDOWN_L2_GAS_LIMIT,
5
+ MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT,
6
+ MAX_PROCESSABLE_L2_GAS,
9
7
  PRIVATE_LOG_SIZE_IN_FIELDS,
10
8
  } from '@aztec/constants';
11
9
  import { padArrayEnd } from '@aztec/foundation/collection';
@@ -14,7 +12,13 @@ import { CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG } from '@aztec/protocol-contracts
14
12
  import { bufferAsFields } from '@aztec/stdlib/abi';
15
13
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
16
14
  import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
17
- 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';
18
22
  import { siloNullifier } from '@aztec/stdlib/hash';
19
23
  import {
20
24
  LogHash,
@@ -69,7 +73,7 @@ export async function createTxForPublicCalls(
69
73
  "Can't create public tx with no enqueued calls",
70
74
  );
71
75
  // use max limits
72
- gasLimits = gasLimits ?? new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
76
+ gasLimits = gasLimits ?? new Gas(MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, MAX_PROCESSABLE_L2_GAS);
73
77
 
74
78
  const forPublic = PartialPrivateTailPublicInputsForPublic.empty();
75
79
 
@@ -129,7 +133,7 @@ export async function createTxForPublicCalls(
129
133
 
130
134
  const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
131
135
  const teardownGasLimits = teardownCallRequest
132
- ? new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT)
136
+ ? new Gas(FALLBACK_TEARDOWN_DA_GAS_LIMIT, FALLBACK_TEARDOWN_L2_GAS_LIMIT)
133
137
  : Gas.empty();
134
138
  const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
135
139
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
@@ -164,7 +168,7 @@ export async function createTxForPrivateOnly(
164
168
  gasUsedByPrivate: Gas = new Gas(10, 10),
165
169
  ): Promise<Tx> {
166
170
  // use max limits
167
- const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
171
+ const gasLimits = new Gas(MAX_PROCESSABLE_DA_GAS_PER_CHECKPOINT, MAX_PROCESSABLE_L2_GAS);
168
172
 
169
173
  const forRollup = PartialPrivateTailPublicInputsForRollup.empty();
170
174
 
@@ -229,17 +233,15 @@ export async function addNewContractInstanceToTx(
229
233
  contractInstance: ContractInstanceWithAddress,
230
234
  skipNullifierInsertion = false,
231
235
  ) {
232
- // can't use publicKeys.toFields() because it includes isInfinite which
233
- // is not broadcast in such private logs
236
+ // Only ivpk_m is broadcast as a point (x, y); the other five keys are hashes.
234
237
  const publicKeysAsFields = [
235
- contractInstance.publicKeys.masterNullifierPublicKey.x,
236
- contractInstance.publicKeys.masterNullifierPublicKey.y,
237
- contractInstance.publicKeys.masterIncomingViewingPublicKey.x,
238
- contractInstance.publicKeys.masterIncomingViewingPublicKey.y,
239
- contractInstance.publicKeys.masterOutgoingViewingPublicKey.x,
240
- contractInstance.publicKeys.masterOutgoingViewingPublicKey.y,
241
- contractInstance.publicKeys.masterTaggingPublicKey.x,
242
- 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,
243
245
  ];
244
246
  const logFields = [
245
247
  CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG,
@@ -248,6 +250,7 @@ export async function addNewContractInstanceToTx(
248
250
  new Fr(contractInstance.salt),
249
251
  contractInstance.currentContractClassId,
250
252
  contractInstance.initializationHash,
253
+ contractInstance.immutablesHash,
251
254
  ...publicKeysAsFields,
252
255
  contractInstance.deployer.toField(),
253
256
  ];
@@ -33,7 +33,7 @@ import {
33
33
  } from '@aztec/stdlib/tx';
34
34
  import type { NativeWorldStateService } from '@aztec/world-state';
35
35
 
36
- import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
36
+ import { BaseAvmSimulationTester } from '../avm/testing/base_avm_simulation_tester.js';
37
37
  import { SimpleContractDataSource } from '../fixtures/simple_contract_data_source.js';
38
38
  import { PublicContractsDB } from '../public_db_sources.js';
39
39
  import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
@@ -75,7 +75,7 @@ export class FuzzerSimulationRequest {
75
75
 
76
76
  /**
77
77
  * Creates a TypeScript Tx object from a deserialized C++ Tx (AvmTxHint-like structure).
78
- * This allows using PublicTxSimulator.simulate() with fuzzer-generated transactions.
78
+ * This allows simulating fuzzer-generated transactions with the C++ public tx simulator.
79
79
  */
80
80
  async function createTxFromHint(cppTx: AvmTxHint): Promise<Tx> {
81
81
  // Create TxHash from the C++ tx hash string
@@ -189,6 +189,8 @@ async function createTxFromHint(cppTx: AvmTxHint): Promise<Tx> {
189
189
  /**
190
190
  * A simulator class for the AVM fuzzer that extends BaseAvmSimulationTester.
191
191
  * It provides methods for registering contracts from C++ msgpack data and simulating transactions.
192
+ * The simulation itself runs on the production C++ AVM simulator, so the fuzzer compares brillig
193
+ * execution against the real AVM rather than a TS reference.
192
194
  */
193
195
  export class AvmFuzzerSimulator extends BaseAvmSimulationTester {
194
196
  private simulator: PublicTxSimulator;
@@ -197,23 +199,19 @@ export class AvmFuzzerSimulator extends BaseAvmSimulationTester {
197
199
  merkleTrees: MerkleTreeWriteOperations,
198
200
  contractDataSource: SimpleContractDataSource,
199
201
  globals: GlobalVariables,
200
- protocolContracts: ProtocolContracts,
201
202
  ) {
202
203
  super(contractDataSource, merkleTrees);
203
204
  const contractsDb = new PublicContractsDB(contractDataSource);
204
- this.simulator = new PublicTxSimulator(
205
- merkleTrees,
206
- contractsDb,
207
- globals,
208
- {
209
- skipFeeEnforcement: false,
210
- collectDebugLogs: false,
211
- collectHints: false,
212
- collectStatistics: false,
213
- collectCallMetadata: false,
214
- },
215
- protocolContracts,
216
- );
205
+ // collectPublicInputs and collectCallMetadata are required so the C++ result carries the end
206
+ // tree snapshots and app-logic return values that the fuzzer bin reports back to the harness.
207
+ this.simulator = new PublicTxSimulator(merkleTrees, contractsDb, globals, {
208
+ skipFeeEnforcement: false,
209
+ collectDebugLogs: false,
210
+ collectHints: false,
211
+ collectPublicInputs: true,
212
+ collectStatistics: false,
213
+ collectCallMetadata: true,
214
+ });
217
215
  }
218
216
 
219
217
  /**
@@ -222,11 +220,10 @@ export class AvmFuzzerSimulator extends BaseAvmSimulationTester {
222
220
  public static async create(
223
221
  worldStateService: NativeWorldStateService,
224
222
  globals: GlobalVariables,
225
- protocolContracts: ProtocolContracts,
226
223
  ): Promise<AvmFuzzerSimulator> {
227
224
  const contractDataSource = new SimpleContractDataSource();
228
225
  const merkleTrees = await worldStateService.fork();
229
- return new AvmFuzzerSimulator(merkleTrees, contractDataSource, globals, protocolContracts);
226
+ return new AvmFuzzerSimulator(merkleTrees, contractDataSource, globals);
230
227
  }
231
228
 
232
229
  /**
@@ -7,7 +7,7 @@ import {
7
7
  deserializeFromMessagePack,
8
8
  serializeWithMessagePack,
9
9
  } from '@aztec/stdlib/avm';
10
- import { GlobalVariables, ProtocolContracts, TreeSnapshots } from '@aztec/stdlib/tx';
10
+ import { GlobalVariables, TreeSnapshots } from '@aztec/stdlib/tx';
11
11
  import { NativeWorldStateService } from '@aztec/world-state';
12
12
 
13
13
  import { createInterface } from 'readline';
@@ -58,7 +58,6 @@ async function simulateWithFuzzer(
58
58
  rawContractInstances: [any, any][], // Replace these when we are moving contract instances to TS
59
59
  rawPublicDataWrites: any[], // Public data tree writes to apply before simulation
60
60
  rawNoteHashes: any[], // Note hashes to apply before simulation
61
- protocolContracts: ProtocolContracts, // Protocol contracts mapping from C++
62
61
  ): Promise<{
63
62
  reverted: boolean;
64
63
  output: Fr[];
@@ -68,7 +67,7 @@ async function simulateWithFuzzer(
68
67
  }> {
69
68
  const worldStateService = await openExistingWorldState(dataDir, mapSizeKb);
70
69
 
71
- const simulator = await AvmFuzzerSimulator.create(worldStateService, globals, protocolContracts);
70
+ const simulator = await AvmFuzzerSimulator.create(worldStateService, globals);
72
71
 
73
72
  await simulator.applyNoteHashes(rawNoteHashes);
74
73
 
@@ -108,7 +107,7 @@ async function execute(base64Line: string): Promise<void> {
108
107
  const rawRequest = deserializeFromMessagePack(buffer);
109
108
  const request = FuzzerSimulationRequest.fromPlainObject(rawRequest);
110
109
 
111
- // Run the TS simulation
110
+ // Run the simulation on the C++ AVM simulator
112
111
  const result = await simulateWithFuzzer(
113
112
  request.wsDataDir,
114
113
  request.wsMapSizeKb,
@@ -118,7 +117,6 @@ async function execute(base64Line: string): Promise<void> {
118
117
  request.contractInstances,
119
118
  request.publicDataWrites,
120
119
  request.noteHashes,
121
- request.protocolContracts,
122
120
  );
123
121
 
124
122
  // Serialize the result to msgpack and encode it in base64 for output
@@ -2,11 +2,11 @@ export { PublicContractsDB } from './public_db_sources.js';
2
2
  export { GuardedMerkleTreeOperations } from './public_processor/guarded_merkle_tree.js';
3
3
  export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
4
4
  export {
5
- CppPublicTxSimulator,
5
+ PublicTxSimulator,
6
6
  createPublicTxSimulatorForBlockBuilding,
7
- DumpingCppPublicTxSimulator,
7
+ DumpingPublicTxSimulator,
8
8
  type PublicTxSimulatorInterface,
9
- TelemetryCppPublicTxSimulator,
9
+ TelemetryPublicTxSimulator,
10
10
  } from './public_tx_simulator/index.js';
11
11
  export type { PublicTxResult, PublicSimulatorConfig as PublicTxSimulatorConfig } from '@aztec/stdlib/avm';
12
12
  export { getCallRequestsWithCalldataByPhase } from './utils.js';
@@ -55,10 +55,11 @@ export class PublicContractsDB implements PublicContractsDBInterface {
55
55
  this.log = createLogger('simulator:contracts-data-source', bindings);
56
56
  }
57
57
 
58
- public async addContracts(contractDeploymentData: ContractDeploymentData): Promise<void> {
58
+ /** Parses raw log data from the C++/NAPI bridge and inserts the resulting contracts into the current checkpoint. */
59
+ public addContractsFromLogs(contractDeploymentData: ContractDeploymentData): void {
59
60
  const currentState = this.getCurrentState();
60
61
 
61
- await this.addContractClassesFromEvents(
62
+ this.addContractClassesFromEvents(
62
63
  ContractClassPublishedEvent.extractContractClassEvents(contractDeploymentData.getContractClassLogs()),
63
64
  currentState,
64
65
  );
@@ -69,10 +70,18 @@ export class PublicContractsDB implements PublicContractsDBInterface {
69
70
  );
70
71
  }
71
72
 
72
- public async addNewContracts(tx: Tx): Promise<void> {
73
+ public addNewContracts(tx: Tx): void {
73
74
  const contractDeploymentData = AllContractDeploymentData.fromTx(tx);
74
- await this.addContracts(contractDeploymentData.getNonRevertibleContractDeploymentData());
75
- await this.addContracts(contractDeploymentData.getRevertibleContractDeploymentData());
75
+ this.addContractsFromLogs(contractDeploymentData.getNonRevertibleContractDeploymentData());
76
+ this.addContractsFromLogs(contractDeploymentData.getRevertibleContractDeploymentData());
77
+ }
78
+
79
+ /** Inserts typed contract instances directly into the current checkpoint. */
80
+ public addContracts(contractInstances?: ContractInstanceWithAddress[]): void {
81
+ const currentState = this.getCurrentState();
82
+ for (const instance of contractInstances ?? []) {
83
+ currentState.addInstance(instance.address, instance);
84
+ }
76
85
  }
77
86
 
78
87
  /**
@@ -81,7 +90,7 @@ export class PublicContractsDB implements PublicContractsDBInterface {
81
90
  */
82
91
  public createCheckpoint(): void {
83
92
  const currentState = this.getCurrentState();
84
- const newState = currentState.deepCopy();
93
+ const newState = currentState.fork();
85
94
  this.contractStateStack.push(newState);
86
95
  }
87
96
 
@@ -174,17 +183,15 @@ export class PublicContractsDB implements PublicContractsDBInterface {
174
183
  return await this.dataSource.getDebugFunctionName(address, selector);
175
184
  }
176
185
 
177
- private async addContractClassesFromEvents(
186
+ private addContractClassesFromEvents(
178
187
  contractClassEvents: ContractClassPublishedEvent[],
179
188
  state: ContractsDbCheckpoint,
180
189
  ) {
181
- await Promise.all(
182
- contractClassEvents.map(async (event: ContractClassPublishedEvent) => {
183
- this.log.debug(`Adding class ${event.contractClassId.toString()} to contract state`);
184
- const contractClass = await event.toContractClassPublic();
185
- state.addClass(event.contractClassId, contractClass);
186
- }),
187
- );
190
+ for (const event of contractClassEvents) {
191
+ this.log.debug(`Adding class ${event.contractClassId.toString()} to contract state`);
192
+ const contractClass = event.toContractClassPublic();
193
+ state.addClass(event.contractClassId, contractClass);
194
+ }
188
195
  }
189
196
 
190
197
  private addContractInstancesFromEvents(
@@ -12,7 +12,7 @@ import type {
12
12
  TreeInfo,
13
13
  } from '@aztec/stdlib/trees';
14
14
  import type { BlockHeader, StateReference } from '@aztec/stdlib/tx';
15
- import type { WorldStateRevision, WorldStateRevisionWithHandle } from '@aztec/stdlib/world-state';
15
+ import type { WorldStateRevision } from '@aztec/stdlib/world-state';
16
16
 
17
17
  /**
18
18
  * Wraps an instance of `MerkleTreeWriteOperations` to allow the sequencer to gate access.
@@ -94,9 +94,12 @@ export class GuardedMerkleTreeOperations implements MerkleTreeWriteOperations {
94
94
  getInitialHeader(): BlockHeader {
95
95
  return this.target.getInitialHeader();
96
96
  }
97
- public getRevision(): WorldStateRevision | WorldStateRevisionWithHandle {
97
+ public getRevision(): WorldStateRevision {
98
98
  return this.target.getRevision();
99
99
  }
100
+ public getIpcPath(): string {
101
+ return this.target.getIpcPath();
102
+ }
100
103
  getSiblingPath<ID extends MerkleTreeId>(treeId: ID, index: bigint): Promise<SiblingPath<TreeHeights[ID]>> {
101
104
  return this.guardAndPush(() => this.target.getSiblingPath(treeId, index));
102
105
  }