@aztec/simulator 0.0.0-test.1 → 0.0.1-commit.5daedc8

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 (492) hide show
  1. package/README.md +6 -0
  2. package/dest/client.d.ts +6 -4
  3. package/dest/client.d.ts.map +1 -1
  4. package/dest/client.js +4 -2
  5. package/dest/common/errors.d.ts +5 -14
  6. package/dest/common/errors.d.ts.map +1 -1
  7. package/dest/common/errors.js +51 -32
  8. package/dest/common/index.d.ts +1 -2
  9. package/dest/common/index.d.ts.map +1 -1
  10. package/dest/common/index.js +0 -1
  11. package/dest/common/stats/index.d.ts +1 -1
  12. package/dest/common/stats/stats.d.ts +1 -1
  13. package/dest/private/acvm/acvm.d.ts +12 -6
  14. package/dest/private/acvm/acvm.d.ts.map +1 -1
  15. package/dest/private/acvm/acvm.js +10 -16
  16. package/dest/private/acvm/acvm_types.d.ts +2 -2
  17. package/dest/private/acvm/acvm_types.d.ts.map +1 -1
  18. package/dest/private/acvm/deserialize.d.ts +18 -19
  19. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  20. package/dest/private/acvm/deserialize.js +31 -23
  21. package/dest/private/acvm/index.d.ts +1 -2
  22. package/dest/private/acvm/index.d.ts.map +1 -1
  23. package/dest/private/acvm/index.js +0 -1
  24. package/dest/private/acvm/serialize.d.ts +20 -3
  25. package/dest/private/acvm/serialize.d.ts.map +1 -1
  26. package/dest/private/acvm/serialize.js +53 -0
  27. package/dest/private/acvm_native.d.ts +39 -0
  28. package/dest/private/acvm_native.d.ts.map +1 -0
  29. package/dest/private/{providers/acvm_native.js → acvm_native.js} +26 -20
  30. package/dest/private/acvm_wasm.d.ts +15 -0
  31. package/dest/private/acvm_wasm.d.ts.map +1 -0
  32. package/dest/private/{providers/acvm_wasm.js → acvm_wasm.js} +22 -19
  33. package/dest/private/acvm_wasm_with_blobs.d.ts +20 -0
  34. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -0
  35. package/dest/private/acvm_wasm_with_blobs.js +35 -0
  36. package/dest/private/circuit_recording/circuit_recorder.d.ts +108 -0
  37. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -0
  38. package/dest/private/circuit_recording/circuit_recorder.js +209 -0
  39. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +31 -0
  40. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
  41. package/dest/private/circuit_recording/file_circuit_recorder.js +135 -0
  42. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +5 -0
  43. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
  44. package/dest/private/circuit_recording/memory_circuit_recorder.js +9 -0
  45. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +21 -0
  46. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
  47. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +44 -0
  48. package/dest/private/circuit_simulator.d.ts +35 -0
  49. package/dest/private/circuit_simulator.d.ts.map +1 -0
  50. package/dest/private/circuit_simulator.js +43 -0
  51. package/dest/private/factory.d.ts +12 -0
  52. package/dest/private/factory.d.ts.map +1 -0
  53. package/dest/private/{providers/factory.js → factory.js} +2 -2
  54. package/dest/public/avm/avm_context.d.ts +6 -6
  55. package/dest/public/avm/avm_context.d.ts.map +1 -1
  56. package/dest/public/avm/avm_contract_call_result.d.ts +5 -3
  57. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  58. package/dest/public/avm/avm_contract_call_result.js +11 -7
  59. package/dest/public/avm/avm_execution_environment.d.ts +4 -2
  60. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  61. package/dest/public/avm/avm_execution_environment.js +4 -2
  62. package/dest/public/avm/avm_gas.d.ts +5 -21
  63. package/dest/public/avm/avm_gas.d.ts.map +1 -1
  64. package/dest/public/avm/avm_gas.js +27 -35
  65. package/dest/public/avm/avm_machine_state.d.ts +3 -1
  66. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  67. package/dest/public/avm/avm_machine_state.js +2 -0
  68. package/dest/public/avm/avm_memory_types.d.ts +99 -88
  69. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  70. package/dest/public/avm/avm_memory_types.js +17 -6
  71. package/dest/public/avm/avm_simulator.d.ts +6 -6
  72. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  73. package/dest/public/avm/avm_simulator.js +23 -35
  74. package/dest/public/avm/avm_simulator_interface.d.ts +9 -0
  75. package/dest/public/avm/avm_simulator_interface.d.ts.map +1 -0
  76. package/dest/public/avm/avm_simulator_interface.js +3 -0
  77. package/dest/public/avm/errors.d.ts +7 -31
  78. package/dest/public/avm/errors.d.ts.map +1 -1
  79. package/dest/public/avm/errors.js +7 -57
  80. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +6 -5
  81. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  82. package/dest/public/avm/fixtures/avm_simulation_tester.js +22 -15
  83. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +7 -5
  84. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  85. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +37 -14
  86. package/dest/public/avm/fixtures/initializers.d.ts +42 -0
  87. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
  88. package/dest/public/avm/fixtures/initializers.js +44 -0
  89. package/dest/public/avm/fixtures/utils.d.ts +38 -0
  90. package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
  91. package/dest/public/avm/fixtures/utils.js +95 -0
  92. package/dest/public/avm/index.d.ts +1 -3
  93. package/dest/public/avm/index.d.ts.map +1 -1
  94. package/dest/public/avm/index.js +0 -2
  95. package/dest/public/avm/opcodes/accrued_substate.d.ts +3 -3
  96. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  97. package/dest/public/avm/opcodes/accrued_substate.js +28 -25
  98. package/dest/public/avm/opcodes/addressing_mode.d.ts +12 -8
  99. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
  100. package/dest/public/avm/opcodes/addressing_mode.js +46 -26
  101. package/dest/public/avm/opcodes/arithmetic.d.ts +17 -7
  102. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  103. package/dest/public/avm/opcodes/arithmetic.js +16 -2
  104. package/dest/public/avm/opcodes/bitwise.d.ts +10 -18
  105. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  106. package/dest/public/avm/opcodes/bitwise.js +19 -26
  107. package/dest/public/avm/opcodes/comparators.d.ts +4 -4
  108. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  109. package/dest/public/avm/opcodes/comparators.js +3 -3
  110. package/dest/public/avm/opcodes/contract.d.ts +2 -3
  111. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  112. package/dest/public/avm/opcodes/contract.js +9 -10
  113. package/dest/public/avm/opcodes/control_flow.d.ts +1 -1
  114. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  115. package/dest/public/avm/opcodes/control_flow.js +10 -8
  116. package/dest/public/avm/opcodes/conversion.d.ts +2 -1
  117. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  118. package/dest/public/avm/opcodes/conversion.js +267 -3
  119. package/dest/public/avm/opcodes/ec_add.d.ts +2 -2
  120. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  121. package/dest/public/avm/opcodes/ec_add.js +6 -6
  122. package/dest/public/avm/opcodes/environment_getters.d.ts +3 -3
  123. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  124. package/dest/public/avm/opcodes/environment_getters.js +17 -19
  125. package/dest/public/avm/opcodes/external_calls.d.ts +9 -8
  126. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  127. package/dest/public/avm/opcodes/external_calls.js +39 -34
  128. package/dest/public/avm/opcodes/hashing.d.ts +2 -2
  129. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  130. package/dest/public/avm/opcodes/hashing.js +6 -6
  131. package/dest/public/avm/opcodes/index.d.ts +1 -1
  132. package/dest/public/avm/opcodes/instruction.d.ts +15 -11
  133. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
  134. package/dest/public/avm/opcodes/instruction.js +23 -19
  135. package/dest/public/avm/opcodes/instruction_impl.d.ts +1 -1
  136. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  137. package/dest/public/avm/opcodes/memory.d.ts +6 -6
  138. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  139. package/dest/public/avm/opcodes/memory.js +37 -33
  140. package/dest/public/avm/opcodes/misc.d.ts +3 -2
  141. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  142. package/dest/public/avm/opcodes/misc.js +41 -16
  143. package/dest/public/avm/opcodes/storage.d.ts +3 -3
  144. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  145. package/dest/public/avm/opcodes/storage.js +7 -5
  146. package/dest/public/avm/revert_reason.d.ts +18 -0
  147. package/dest/public/avm/revert_reason.d.ts.map +1 -0
  148. package/dest/public/avm/revert_reason.js +38 -0
  149. package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -3
  150. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
  151. package/dest/public/avm/serialization/bytecode_serialization.d.ts +3 -7
  152. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  153. package/dest/public/avm/serialization/bytecode_serialization.js +70 -69
  154. package/dest/public/avm/serialization/instruction_serialization.d.ts +14 -5
  155. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  156. package/dest/public/avm/serialization/instruction_serialization.js +70 -35
  157. package/dest/public/avm/test_utils.d.ts +11 -14
  158. package/dest/public/avm/test_utils.d.ts.map +1 -1
  159. package/dest/public/avm/test_utils.js +16 -24
  160. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  161. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  162. package/dest/public/contracts_db_checkpoint.js +30 -0
  163. package/dest/public/db_interfaces.d.ts +68 -0
  164. package/dest/public/db_interfaces.d.ts.map +1 -0
  165. package/dest/public/db_interfaces.js +3 -0
  166. package/dest/public/debug_fn_name.d.ts +5 -0
  167. package/dest/public/debug_fn_name.d.ts.map +1 -0
  168. package/dest/public/debug_fn_name.js +9 -0
  169. package/dest/public/executor_metrics.d.ts +12 -4
  170. package/dest/public/executor_metrics.d.ts.map +1 -1
  171. package/dest/public/executor_metrics.js +37 -6
  172. package/dest/public/executor_metrics_interface.d.ts +10 -0
  173. package/dest/public/executor_metrics_interface.d.ts.map +1 -0
  174. package/dest/public/executor_metrics_interface.js +1 -0
  175. package/dest/public/fixtures/amm_test.d.ts +10 -0
  176. package/dest/public/fixtures/amm_test.d.ts.map +1 -0
  177. package/dest/public/fixtures/amm_test.js +213 -0
  178. package/dest/public/fixtures/bulk_test.d.ts +6 -0
  179. package/dest/public/fixtures/bulk_test.d.ts.map +1 -0
  180. package/dest/public/fixtures/bulk_test.js +326 -0
  181. package/dest/public/fixtures/custom_bytecode_tester.d.ts +12 -0
  182. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
  183. package/dest/public/fixtures/custom_bytecode_tester.js +29 -0
  184. package/dest/public/fixtures/custom_bytecode_tests.d.ts +9 -0
  185. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
  186. package/dest/public/fixtures/custom_bytecode_tests.js +109 -0
  187. package/dest/public/fixtures/index.d.ts +8 -1
  188. package/dest/public/fixtures/index.d.ts.map +1 -1
  189. package/dest/public/fixtures/index.js +7 -0
  190. package/dest/public/fixtures/minimal_public_tx.d.ts +9 -0
  191. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
  192. package/dest/public/fixtures/minimal_public_tx.js +29 -0
  193. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +35 -14
  194. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  195. package/dest/public/fixtures/public_tx_simulation_tester.js +100 -71
  196. package/dest/public/fixtures/simple_contract_data_source.d.ts +35 -0
  197. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -0
  198. package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.js +31 -10
  199. package/dest/public/fixtures/token_test.d.ts +8 -0
  200. package/dest/public/fixtures/token_test.d.ts.map +1 -0
  201. package/dest/public/fixtures/token_test.js +94 -0
  202. package/dest/public/fixtures/utils.d.ts +17 -4
  203. package/dest/public/fixtures/utils.d.ts.map +1 -1
  204. package/dest/public/fixtures/utils.js +100 -58
  205. package/dest/public/hinting_db_sources.d.ts +78 -0
  206. package/dest/public/hinting_db_sources.d.ts.map +1 -0
  207. package/dest/public/hinting_db_sources.js +350 -0
  208. package/dest/public/index.d.ts +6 -9
  209. package/dest/public/index.d.ts.map +1 -1
  210. package/dest/public/index.js +4 -7
  211. package/dest/public/public_db_sources.d.ts +51 -101
  212. package/dest/public/public_db_sources.d.ts.map +1 -1
  213. package/dest/public/public_db_sources.js +219 -192
  214. package/dest/public/public_errors.d.ts +12 -0
  215. package/dest/public/public_errors.d.ts.map +1 -0
  216. package/dest/public/public_errors.js +13 -0
  217. package/dest/public/public_processor/guarded_merkle_tree.d.ts +49 -0
  218. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
  219. package/dest/public/public_processor/guarded_merkle_tree.js +108 -0
  220. package/dest/public/public_processor/public_processor.d.ts +25 -37
  221. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  222. package/dest/public/public_processor/public_processor.js +154 -111
  223. package/dest/public/public_processor/public_processor_metrics.d.ts +3 -3
  224. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  225. package/dest/public/public_processor/public_processor_metrics.js +1 -1
  226. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +30 -0
  227. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
  228. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +133 -0
  229. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +66 -0
  230. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -0
  231. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +210 -0
  232. package/dest/public/public_tx_simulator/index.d.ts +5 -0
  233. package/dest/public/public_tx_simulator/index.d.ts.map +1 -0
  234. package/dest/public/public_tx_simulator/index.js +2 -0
  235. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +31 -0
  236. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -0
  237. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +51 -0
  238. package/dest/public/public_tx_simulator/public_tx_context.d.ts +23 -30
  239. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  240. package/dest/public/public_tx_simulator/public_tx_context.js +71 -91
  241. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +36 -58
  242. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  243. package/dest/public/public_tx_simulator/public_tx_simulator.js +208 -206
  244. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +9 -0
  245. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -0
  246. package/dest/public/public_tx_simulator/public_tx_simulator_interface.js +1 -0
  247. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +21 -0
  248. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -0
  249. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +39 -0
  250. package/dest/public/side_effect_errors.d.ts +42 -2
  251. package/dest/public/side_effect_errors.d.ts.map +1 -1
  252. package/dest/public/side_effect_errors.js +70 -1
  253. package/dest/public/side_effect_trace.d.ts +21 -67
  254. package/dest/public/side_effect_trace.d.ts.map +1 -1
  255. package/dest/public/side_effect_trace.js +71 -121
  256. package/dest/public/side_effect_trace_interface.d.ts +12 -24
  257. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  258. package/dest/public/state_manager/index.d.ts +2 -0
  259. package/dest/public/state_manager/index.d.ts.map +1 -0
  260. package/dest/public/state_manager/index.js +1 -0
  261. package/dest/public/{avm/journal → state_manager}/nullifiers.d.ts +3 -6
  262. package/dest/public/state_manager/nullifiers.d.ts.map +1 -0
  263. package/dest/public/{avm/journal → state_manager}/nullifiers.js +3 -8
  264. package/dest/public/{avm/journal → state_manager}/public_storage.d.ts +3 -3
  265. package/dest/public/state_manager/public_storage.d.ts.map +1 -0
  266. package/dest/public/state_manager/state_manager.d.ts +159 -0
  267. package/dest/public/state_manager/state_manager.d.ts.map +1 -0
  268. package/dest/public/state_manager/state_manager.js +392 -0
  269. package/dest/public/test_executor_metrics.d.ts +55 -0
  270. package/dest/public/test_executor_metrics.d.ts.map +1 -0
  271. package/dest/public/test_executor_metrics.js +307 -0
  272. package/dest/public/unique_class_ids.d.ts +1 -1
  273. package/dest/public/unique_class_ids.d.ts.map +1 -1
  274. package/dest/public/utils.d.ts +3 -5
  275. package/dest/public/utils.d.ts.map +1 -1
  276. package/dest/public/utils.js +4 -21
  277. package/dest/server.d.ts +7 -4
  278. package/dest/server.d.ts.map +1 -1
  279. package/dest/server.js +5 -2
  280. package/dest/testing.d.ts +2 -0
  281. package/dest/testing.d.ts.map +1 -0
  282. package/dest/testing.js +1 -0
  283. package/package.json +39 -33
  284. package/src/client.ts +5 -3
  285. package/src/common/errors.ts +79 -44
  286. package/src/common/index.ts +0 -1
  287. package/src/private/acvm/acvm.ts +17 -32
  288. package/src/private/acvm/acvm_types.ts +1 -1
  289. package/src/private/acvm/deserialize.ts +35 -29
  290. package/src/private/acvm/index.ts +0 -1
  291. package/src/private/acvm/serialize.ts +63 -0
  292. package/src/private/{providers/acvm_native.ts → acvm_native.ts} +47 -24
  293. package/src/private/acvm_wasm.ts +72 -0
  294. package/src/private/acvm_wasm_with_blobs.ts +54 -0
  295. package/src/private/circuit_recording/circuit_recorder.ts +260 -0
  296. package/src/private/circuit_recording/file_circuit_recorder.ts +158 -0
  297. package/src/private/circuit_recording/memory_circuit_recorder.ts +11 -0
  298. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +91 -0
  299. package/src/private/circuit_simulator.ts +90 -0
  300. package/src/private/{providers/factory.ts → factory.ts} +6 -6
  301. package/src/public/avm/avm_context.ts +4 -4
  302. package/src/public/avm/avm_contract_call_result.ts +17 -5
  303. package/src/public/avm/avm_execution_environment.ts +8 -1
  304. package/src/public/avm/avm_gas.ts +23 -35
  305. package/src/public/avm/avm_machine_state.ts +5 -0
  306. package/src/public/avm/avm_memory_types.ts +19 -6
  307. package/src/public/avm/avm_simulator.ts +43 -54
  308. package/src/public/avm/avm_simulator_interface.ts +8 -0
  309. package/src/public/avm/errors.ts +8 -77
  310. package/src/public/avm/fixtures/avm_simulation_tester.ts +32 -21
  311. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +45 -12
  312. package/src/public/avm/fixtures/initializers.ts +102 -0
  313. package/src/public/avm/fixtures/utils.ts +150 -0
  314. package/src/public/avm/index.ts +0 -2
  315. package/src/public/avm/opcodes/accrued_substate.ts +64 -29
  316. package/src/public/avm/opcodes/addressing_mode.ts +56 -32
  317. package/src/public/avm/opcodes/arithmetic.ts +24 -2
  318. package/src/public/avm/opcodes/bitwise.ts +33 -29
  319. package/src/public/avm/opcodes/comparators.ts +6 -3
  320. package/src/public/avm/opcodes/contract.ts +10 -7
  321. package/src/public/avm/opcodes/control_flow.ts +19 -10
  322. package/src/public/avm/opcodes/conversion.ts +27 -3
  323. package/src/public/avm/opcodes/ec_add.ts +9 -6
  324. package/src/public/avm/opcodes/environment_getters.ts +27 -22
  325. package/src/public/avm/opcodes/external_calls.ts +61 -29
  326. package/src/public/avm/opcodes/hashing.ts +28 -8
  327. package/src/public/avm/opcodes/instruction.ts +31 -21
  328. package/src/public/avm/opcodes/memory.ts +71 -32
  329. package/src/public/avm/opcodes/misc.ts +60 -18
  330. package/src/public/avm/opcodes/storage.ts +22 -6
  331. package/src/public/avm/revert_reason.ts +55 -0
  332. package/src/public/avm/serialization/buffer_cursor.ts +4 -1
  333. package/src/public/avm/serialization/bytecode_serialization.ts +72 -74
  334. package/src/public/avm/serialization/instruction_serialization.ts +75 -34
  335. package/src/public/avm/test_utils.ts +24 -41
  336. package/src/public/contracts_db_checkpoint.ts +41 -0
  337. package/src/public/db_interfaces.ts +76 -0
  338. package/src/{common → public}/debug_fn_name.ts +7 -7
  339. package/src/public/executor_metrics.ts +56 -6
  340. package/src/public/executor_metrics_interface.ts +15 -0
  341. package/src/public/fixtures/amm_test.ts +331 -0
  342. package/src/public/fixtures/bulk_test.ts +169 -0
  343. package/src/public/fixtures/custom_bytecode_tester.ts +49 -0
  344. package/src/public/fixtures/custom_bytecode_tests.ts +135 -0
  345. package/src/public/fixtures/index.ts +7 -0
  346. package/src/public/fixtures/minimal_public_tx.ts +35 -0
  347. package/src/public/fixtures/public_tx_simulation_tester.ts +166 -113
  348. package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +36 -18
  349. package/src/public/fixtures/token_test.ts +139 -0
  350. package/src/public/fixtures/utils.ts +141 -68
  351. package/src/public/hinting_db_sources.ts +602 -0
  352. package/src/public/index.ts +5 -8
  353. package/src/public/public_db_sources.ts +278 -258
  354. package/src/public/public_errors.ts +14 -0
  355. package/src/public/public_processor/guarded_merkle_tree.ts +153 -0
  356. package/src/public/public_processor/public_processor.ts +212 -164
  357. package/src/public/public_processor/public_processor_metrics.ts +2 -2
  358. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +162 -0
  359. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +306 -0
  360. package/src/public/public_tx_simulator/index.ts +4 -0
  361. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +105 -0
  362. package/src/public/public_tx_simulator/public_tx_context.ts +167 -194
  363. package/src/public/public_tx_simulator/public_tx_simulator.ts +292 -265
  364. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +10 -0
  365. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +63 -0
  366. package/src/public/side_effect_errors.ts +91 -1
  367. package/src/public/side_effect_trace.ts +94 -320
  368. package/src/public/side_effect_trace_interface.ts +10 -58
  369. package/src/public/state_manager/index.ts +1 -0
  370. package/src/public/{avm/journal → state_manager}/nullifiers.ts +5 -11
  371. package/src/public/{avm/journal → state_manager}/public_storage.ts +2 -2
  372. package/src/public/state_manager/state_manager.ts +553 -0
  373. package/src/public/test_executor_metrics.ts +397 -0
  374. package/src/public/utils.ts +5 -21
  375. package/src/server.ts +6 -3
  376. package/src/testing.ts +1 -0
  377. package/dest/common/db_interfaces.d.ts +0 -80
  378. package/dest/common/db_interfaces.d.ts.map +0 -1
  379. package/dest/common/db_interfaces.js +0 -1
  380. package/dest/common/debug_fn_name.d.ts +0 -5
  381. package/dest/common/debug_fn_name.d.ts.map +0 -1
  382. package/dest/common/debug_fn_name.js +0 -6
  383. package/dest/common/message_load_oracle_inputs.d.ts +0 -15
  384. package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
  385. package/dest/common/message_load_oracle_inputs.js +0 -15
  386. package/dest/private/acvm/oracle/index.d.ts +0 -14
  387. package/dest/private/acvm/oracle/index.d.ts.map +0 -1
  388. package/dest/private/acvm/oracle/index.js +0 -2
  389. package/dest/private/acvm/oracle/oracle.d.ts +0 -49
  390. package/dest/private/acvm/oracle/oracle.d.ts.map +0 -1
  391. package/dest/private/acvm/oracle/oracle.js +0 -263
  392. package/dest/private/acvm/oracle/typed_oracle.d.ts +0 -83
  393. package/dest/private/acvm/oracle/typed_oracle.d.ts.map +0 -1
  394. package/dest/private/acvm/oracle/typed_oracle.js +0 -132
  395. package/dest/private/execution_data_provider.d.ts +0 -261
  396. package/dest/private/execution_data_provider.d.ts.map +0 -1
  397. package/dest/private/execution_data_provider.js +0 -14
  398. package/dest/private/execution_note_cache.d.ts +0 -93
  399. package/dest/private/execution_note_cache.d.ts.map +0 -1
  400. package/dest/private/execution_note_cache.js +0 -180
  401. package/dest/private/hashed_values_cache.d.ts +0 -28
  402. package/dest/private/hashed_values_cache.d.ts.map +0 -1
  403. package/dest/private/hashed_values_cache.js +0 -46
  404. package/dest/private/index.d.ts +0 -13
  405. package/dest/private/index.d.ts.map +0 -1
  406. package/dest/private/index.js +0 -12
  407. package/dest/private/pick_notes.d.ts +0 -85
  408. package/dest/private/pick_notes.d.ts.map +0 -1
  409. package/dest/private/pick_notes.js +0 -51
  410. package/dest/private/private_execution.d.ts +0 -25
  411. package/dest/private/private_execution.d.ts.map +0 -1
  412. package/dest/private/private_execution.js +0 -92
  413. package/dest/private/private_execution_oracle.d.ts +0 -215
  414. package/dest/private/private_execution_oracle.d.ts.map +0 -1
  415. package/dest/private/private_execution_oracle.js +0 -382
  416. package/dest/private/providers/acvm_native.d.ts +0 -40
  417. package/dest/private/providers/acvm_native.d.ts.map +0 -1
  418. package/dest/private/providers/acvm_wasm.d.ts +0 -15
  419. package/dest/private/providers/acvm_wasm.d.ts.map +0 -1
  420. package/dest/private/providers/acvm_wasm_with_blobs.d.ts +0 -19
  421. package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
  422. package/dest/private/providers/acvm_wasm_with_blobs.js +0 -32
  423. package/dest/private/providers/factory.d.ts +0 -12
  424. package/dest/private/providers/factory.d.ts.map +0 -1
  425. package/dest/private/providers/simulation_provider.d.ts +0 -19
  426. package/dest/private/providers/simulation_provider.d.ts.map +0 -1
  427. package/dest/private/providers/simulation_provider.js +0 -24
  428. package/dest/private/simulator.d.ts +0 -34
  429. package/dest/private/simulator.d.ts.map +0 -1
  430. package/dest/private/simulator.js +0 -76
  431. package/dest/private/unconstrained_execution.d.ts +0 -10
  432. package/dest/private/unconstrained_execution.d.ts.map +0 -1
  433. package/dest/private/unconstrained_execution.js +0 -27
  434. package/dest/private/unconstrained_execution_oracle.d.ts +0 -161
  435. package/dest/private/unconstrained_execution_oracle.d.ts.map +0 -1
  436. package/dest/private/unconstrained_execution_oracle.js +0 -258
  437. package/dest/public/avm/bytecode_utils.d.ts +0 -5
  438. package/dest/public/avm/bytecode_utils.d.ts.map +0 -1
  439. package/dest/public/avm/bytecode_utils.js +0 -17
  440. package/dest/public/avm/fixtures/index.d.ts +0 -84
  441. package/dest/public/avm/fixtures/index.d.ts.map +0 -1
  442. package/dest/public/avm/fixtures/index.js +0 -175
  443. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts +0 -35
  444. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
  445. package/dest/public/avm/journal/index.d.ts +0 -2
  446. package/dest/public/avm/journal/index.d.ts.map +0 -1
  447. package/dest/public/avm/journal/index.js +0 -1
  448. package/dest/public/avm/journal/journal.d.ts +0 -209
  449. package/dest/public/avm/journal/journal.d.ts.map +0 -1
  450. package/dest/public/avm/journal/journal.js +0 -486
  451. package/dest/public/avm/journal/nullifiers.d.ts.map +0 -1
  452. package/dest/public/avm/journal/public_storage.d.ts.map +0 -1
  453. package/dest/public/bytecode_errors.d.ts +0 -4
  454. package/dest/public/bytecode_errors.d.ts.map +0 -1
  455. package/dest/public/bytecode_errors.js +0 -6
  456. package/dest/public/execution.d.ts +0 -108
  457. package/dest/public/execution.d.ts.map +0 -1
  458. package/dest/public/execution.js +0 -9
  459. package/dest/public/tx_contract_cache.d.ts +0 -41
  460. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  461. package/dest/public/tx_contract_cache.js +0 -49
  462. package/dest/test/utils.d.ts +0 -13
  463. package/dest/test/utils.d.ts.map +0 -1
  464. package/dest/test/utils.js +0 -22
  465. package/src/common/db_interfaces.ts +0 -94
  466. package/src/common/message_load_oracle_inputs.ts +0 -15
  467. package/src/private/acvm/oracle/index.ts +0 -16
  468. package/src/private/acvm/oracle/oracle.ts +0 -455
  469. package/src/private/acvm/oracle/typed_oracle.ts +0 -259
  470. package/src/private/execution_data_provider.ts +0 -323
  471. package/src/private/execution_note_cache.ts +0 -217
  472. package/src/private/hashed_values_cache.ts +0 -55
  473. package/src/private/index.ts +0 -16
  474. package/src/private/pick_notes.ts +0 -141
  475. package/src/private/private_execution.ts +0 -151
  476. package/src/private/private_execution_oracle.ts +0 -614
  477. package/src/private/providers/acvm_wasm.ts +0 -63
  478. package/src/private/providers/acvm_wasm_with_blobs.ts +0 -50
  479. package/src/private/providers/simulation_provider.ts +0 -45
  480. package/src/private/simulator.ts +0 -147
  481. package/src/private/unconstrained_execution.ts +0 -50
  482. package/src/private/unconstrained_execution_oracle.ts +0 -373
  483. package/src/public/avm/bytecode_utils.ts +0 -17
  484. package/src/public/avm/fixtures/index.ts +0 -296
  485. package/src/public/avm/journal/index.ts +0 -1
  486. package/src/public/avm/journal/journal.ts +0 -742
  487. package/src/public/avm/opcodes/.eslintrc.cjs +0 -8
  488. package/src/public/bytecode_errors.ts +0 -6
  489. package/src/public/execution.ts +0 -140
  490. package/src/public/tx_contract_cache.ts +0 -69
  491. package/src/test/utils.ts +0 -36
  492. /package/dest/public/{avm/journal → state_manager}/public_storage.js +0 -0
@@ -0,0 +1,42 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import { GlobalVariables } from '@aztec/stdlib/tx';
3
+ import type { UInt64 } from '@aztec/stdlib/types';
4
+ import type { PublicContractsDB, PublicTreesDB } from '../../public_db_sources.js';
5
+ import type { PublicSideEffectTraceInterface } from '../../side_effect_trace_interface.js';
6
+ import { NullifierManager } from '../../state_manager/nullifiers.js';
7
+ import { PublicStorage } from '../../state_manager/public_storage.js';
8
+ import { PublicPersistableStateManager } from '../../state_manager/state_manager.js';
9
+ import { AvmContext } from '../avm_context.js';
10
+ import { AvmExecutionEnvironment } from '../avm_execution_environment.js';
11
+ import { AvmMachineState } from '../avm_machine_state.js';
12
+ /**
13
+ * Create a new AVM context with default values.
14
+ */
15
+ export declare function initContext(overrides?: {
16
+ persistableState?: PublicPersistableStateManager;
17
+ env?: AvmExecutionEnvironment;
18
+ machineState?: AvmMachineState;
19
+ }): AvmContext;
20
+ /** Creates an empty state manager with mocked host storage. */
21
+ export declare function initPersistableStateManager(overrides?: {
22
+ treesDB?: PublicTreesDB;
23
+ contractsDB?: PublicContractsDB;
24
+ trace?: PublicSideEffectTraceInterface;
25
+ publicStorage?: PublicStorage;
26
+ nullifiers?: NullifierManager;
27
+ firstNullifier?: Fr;
28
+ timestamp?: UInt64;
29
+ }): PublicPersistableStateManager;
30
+ /**
31
+ * Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
32
+ */
33
+ export declare function initExecutionEnvironment(overrides?: Partial<AvmExecutionEnvironment>): AvmExecutionEnvironment;
34
+ /**
35
+ * Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
36
+ */
37
+ export declare function initGlobalVariables(overrides?: Partial<GlobalVariables>): GlobalVariables;
38
+ /**
39
+ * Create an empty instance of the Machine State where all values are set to a large enough amount, unless overridden in the overrides object
40
+ */
41
+ export declare function initMachineState(overrides?: Partial<AvmMachineState>): AvmMachineState;
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZXJzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHVibGljL2F2bS9maXh0dXJlcy9pbml0aWFsaXplcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUlsRCxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRixPQUFPLEtBQUssRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzNGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSTFEOztHQUVHO0FBQ0gsd0JBQWdCLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRTtJQUN0QyxnQkFBZ0IsQ0FBQyxFQUFFLDZCQUE2QixDQUFDO0lBQ2pELEdBQUcsQ0FBQyxFQUFFLHVCQUF1QixDQUFDO0lBQzlCLFlBQVksQ0FBQyxFQUFFLGVBQWUsQ0FBQztDQUNoQyxHQUFHLFVBQVUsQ0FRYjtBQUVELCtEQUErRDtBQUMvRCx3QkFBZ0IsMkJBQTJCLENBQUMsU0FBUyxDQUFDLEVBQUU7SUFDdEQsT0FBTyxDQUFDLEVBQUUsYUFBYSxDQUFDO0lBQ3hCLFdBQVcsQ0FBQyxFQUFFLGlCQUFpQixDQUFDO0lBQ2hDLEtBQUssQ0FBQyxFQUFFLDhCQUE4QixDQUFDO0lBQ3ZDLGFBQWEsQ0FBQyxFQUFFLGFBQWEsQ0FBQztJQUM5QixVQUFVLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztJQUM5QixjQUFjLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDcEIsU0FBUyxDQUFDLEVBQUUsTUFBTSxDQUFDO0NBQ3BCLEdBQUcsNkJBQTZCLENBVWhDO0FBRUQ7O0dBRUc7QUFDSCx3QkFBZ0Isd0JBQXdCLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsdUJBQXVCLENBVzlHO0FBRUQ7O0dBRUc7QUFDSCx3QkFBZ0IsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxHQUFHLGVBQWUsQ0FXekY7QUFFRDs7R0FFRztBQUNILHdCQUFnQixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsZUFBZSxDQUt0RiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initializers.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/initializers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAIlD,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAI1D;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,CAAC,EAAE;IACtC,gBAAgB,CAAC,EAAE,6BAA6B,CAAC;IACjD,GAAG,CAAC,EAAE,uBAAuB,CAAC;IAC9B,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC,GAAG,UAAU,CAQb;AAED,+DAA+D;AAC/D,wBAAgB,2BAA2B,CAAC,SAAS,CAAC,EAAE;IACtD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,KAAK,CAAC,EAAE,8BAA8B,CAAC;IACvC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,cAAc,CAAC,EAAE,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,6BAA6B,CAUhC;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,uBAAuB,CAW9G;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAWzF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAKtF"}
@@ -0,0 +1,44 @@
1
+ import { AVM_MAX_PROCESSABLE_L2_GAS } from '@aztec/constants';
2
+ import { SlotNumber } from '@aztec/foundation/branded-types';
3
+ import { EthAddress } from '@aztec/foundation/eth-address';
4
+ import { Fr } from '@aztec/foundation/fields';
5
+ import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
6
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
7
+ import { GasFees } from '@aztec/stdlib/gas';
8
+ import { GlobalVariables } from '@aztec/stdlib/tx';
9
+ import { mock } from 'jest-mock-extended';
10
+ import { PublicPersistableStateManager } from '../../state_manager/state_manager.js';
11
+ import { AvmContext } from '../avm_context.js';
12
+ import { AvmExecutionEnvironment } from '../avm_execution_environment.js';
13
+ import { AvmMachineState } from '../avm_machine_state.js';
14
+ import { AvmSimulator } from '../avm_simulator.js';
15
+ import { DEFAULT_TIMESTAMP } from './utils.js';
16
+ /**
17
+ * Create a new AVM context with default values.
18
+ */ export function initContext(overrides) {
19
+ const ctx = new AvmContext(overrides?.persistableState || initPersistableStateManager(), overrides?.env || initExecutionEnvironment(), overrides?.machineState || initMachineState());
20
+ ctx.provideSimulator = AvmSimulator.build;
21
+ return ctx;
22
+ }
23
+ /** Creates an empty state manager with mocked host storage. */ export function initPersistableStateManager(overrides) {
24
+ const treesDB = overrides?.treesDB || mock();
25
+ return new PublicPersistableStateManager(treesDB, overrides?.contractsDB || mock(), overrides?.trace || mock(), overrides?.firstNullifier || new Fr(27), overrides?.timestamp || DEFAULT_TIMESTAMP, /*doMerkleOperations=*/ false);
26
+ }
27
+ /**
28
+ * Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
29
+ */ export function initExecutionEnvironment(overrides) {
30
+ return new AvmExecutionEnvironment(overrides?.address ?? AztecAddress.zero(), overrides?.sender ?? AztecAddress.zero(), overrides?.contractCallDepth ?? Fr.zero(), overrides?.transactionFee ?? Fr.zero(), overrides?.globals ?? GlobalVariables.empty(), overrides?.isStaticCall ?? false, overrides?.calldata ?? [], overrides?.config ?? PublicSimulatorConfig.empty());
31
+ }
32
+ /**
33
+ * Create an empty instance of the Execution Environment where all values are zero, unless overridden in the overrides object
34
+ */ export function initGlobalVariables(overrides) {
35
+ return new GlobalVariables(overrides?.chainId ?? Fr.zero(), overrides?.version ?? Fr.zero(), overrides?.blockNumber ?? 0, overrides?.slotNumber ?? SlotNumber.ZERO, overrides?.timestamp ?? 0n, overrides?.coinbase ?? EthAddress.ZERO, overrides?.feeRecipient ?? AztecAddress.zero(), overrides?.gasFees ?? GasFees.empty());
36
+ }
37
+ /**
38
+ * Create an empty instance of the Machine State where all values are set to a large enough amount, unless overridden in the overrides object
39
+ */ export function initMachineState(overrides) {
40
+ return AvmMachineState.fromState({
41
+ l2GasLeft: overrides?.l2GasLeft ?? AVM_MAX_PROCESSABLE_L2_GAS,
42
+ daGasLeft: overrides?.daGasLeft ?? 1e8
43
+ });
44
+ }
@@ -0,0 +1,38 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import { type ContractArtifact, type FunctionAbi, type FunctionArtifact, FunctionSelector } from '@aztec/stdlib/abi';
3
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import { type ContractClassPublic, type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
5
+ import type { UInt64 } from '@aztec/stdlib/types';
6
+ import { Field, Uint8, Uint32, Uint64 } from '../avm_memory_types.js';
7
+ import type { AvmRevertReason } from '../errors.js';
8
+ export declare const PUBLIC_DISPATCH_FN_NAME = "public_dispatch";
9
+ export declare const DEFAULT_TIMESTAMP: UInt64;
10
+ export declare const DEFAULT_BLOCK_NUMBER = 42;
11
+ /**
12
+ * Create a new object with all the same properties as the original, except for the ones in the overrides object.
13
+ */
14
+ export declare function allSameExcept(original: any, overrides: any): any;
15
+ export declare function randomMemoryBytes(length: number): Uint8[];
16
+ export declare function randomMemoryUint32s(length: number): Uint32[];
17
+ export declare function randomMemoryUint64s(length: number): Uint64[];
18
+ export declare function randomMemoryFields(length: number): Field[];
19
+ export declare function getFunctionSelector(functionName: string, contractArtifact: ContractArtifact): Promise<FunctionSelector>;
20
+ export declare function getContractFunctionArtifact(functionName: string, contractArtifact: ContractArtifact): FunctionArtifact | undefined;
21
+ export declare function getContractFunctionAbi(functionName: string, contractArtifact: ContractArtifact): FunctionAbi | undefined;
22
+ export declare function resolveContractAssertionMessage(functionName: string, revertReason: AvmRevertReason, output: Fr[], contractArtifact: ContractArtifact): string | undefined;
23
+ /**
24
+ * Create a contract class and instance given constructor args, artifact, etc.
25
+ * NOTE: This is useful for testing real-ish contract class registration and instance deployment TXs (via logs)
26
+ * @param constructorArgs - The constructor arguments for the contract.
27
+ * @param deployer - The deployer of the contract.
28
+ * @param contractArtifact - The contract artifact for the contract.
29
+ * @param seed - The seed for the contract.
30
+ * @param originalContractClassId - The original contract class ID (if upgraded)
31
+ * @returns The contract class, instance, and contract address nullifier.
32
+ */
33
+ export declare function createContractClassAndInstance(constructorArgs: any[], deployer: AztecAddress, contractArtifact: ContractArtifact, seed?: number, contractClassSeed?: number, originalContractClassId?: Fr): Promise<{
34
+ contractClass: ContractClassPublic;
35
+ contractInstance: ContractInstanceWithAddress;
36
+ contractAddressNullifier: Fr;
37
+ }>;
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wdWJsaWMvYXZtL2ZpeHR1cmVzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5QyxPQUFPLEVBQ0wsS0FBSyxnQkFBZ0IsRUFDckIsS0FBSyxXQUFXLEVBQ2hCLEtBQUssZ0JBQWdCLEVBQ3JCLGdCQUFnQixFQUVqQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsS0FBSyxtQkFBbUIsRUFDeEIsS0FBSywyQkFBMkIsRUFFakMsTUFBTSx3QkFBd0IsQ0FBQztBQUtoQyxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQU1sRCxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXBELGVBQU8sTUFBTSx1QkFBdUIsb0JBQW9CLENBQUM7QUFDekQsZUFBTyxNQUFNLGlCQUFpQixFQUFFLE1BQWUsQ0FBQztBQUNoRCxlQUFPLE1BQU0sb0JBQW9CLEtBQUssQ0FBQztBQUV2Qzs7R0FFRztBQUNILHdCQUFnQixhQUFhLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FFaEU7QUFFRCx3QkFBZ0IsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FFekQ7QUFFRCx3QkFBZ0IsbUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FFNUQ7QUFFRCx3QkFBZ0IsbUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FFNUQ7QUFFRCx3QkFBZ0Isa0JBQWtCLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FFMUQ7QUFFRCx3QkFBZ0IsbUJBQW1CLENBQ2pDLFlBQVksRUFBRSxNQUFNLEVBQ3BCLGdCQUFnQixFQUFFLGdCQUFnQixHQUNqQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FLM0I7QUFFRCx3QkFBZ0IsMkJBQTJCLENBQ3pDLFlBQVksRUFBRSxNQUFNLEVBQ3BCLGdCQUFnQixFQUFFLGdCQUFnQixHQUNqQyxnQkFBZ0IsR0FBRyxTQUFTLENBRTlCO0FBRUQsd0JBQWdCLHNCQUFzQixDQUNwQyxZQUFZLEVBQUUsTUFBTSxFQUNwQixnQkFBZ0IsRUFBRSxnQkFBZ0IsR0FDakMsV0FBVyxHQUFHLFNBQVMsQ0FLekI7QUFFRCx3QkFBZ0IsK0JBQStCLENBQzdDLFlBQVksRUFBRSxNQUFNLEVBQ3BCLFlBQVksRUFBRSxlQUFlLEVBQzdCLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFDWixnQkFBZ0IsRUFBRSxnQkFBZ0IsR0FDakMsTUFBTSxHQUFHLFNBQVMsQ0FXcEI7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCx3QkFBc0IsOEJBQThCLENBQ2xELGVBQWUsRUFBRSxHQUFHLEVBQUUsRUFDdEIsUUFBUSxFQUFFLFlBQVksRUFDdEIsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQ2xDLElBQUksU0FBSSxFQUNSLGlCQUFpQixTQUFPLEVBQ3hCLHVCQUF1QixDQUFDLEVBQUUsRUFBRSxHQUMzQixPQUFPLENBQUM7SUFDVCxhQUFhLEVBQUUsbUJBQW1CLENBQUM7SUFDbkMsZ0JBQWdCLEVBQUUsMkJBQTJCLENBQUM7SUFDOUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO0NBQzlCLENBQUMsQ0E0QkQifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/fixtures/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,gBAAgB,EAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAEjC,MAAM,wBAAwB,CAAC;AAKhC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAMlD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AACzD,eAAO,MAAM,iBAAiB,EAAE,MAAe,CAAC;AAChD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,GAAG,GAAG,CAEhE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAEzD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE5D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAE5D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,CAE1D;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAK3B;AAED,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,GACjC,gBAAgB,GAAG,SAAS,CAE9B;AAED,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,GACjC,WAAW,GAAG,SAAS,CAKzB;AAED,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,eAAe,EAC7B,MAAM,EAAE,EAAE,EAAE,EACZ,gBAAgB,EAAE,gBAAgB,GACjC,MAAM,GAAG,SAAS,CAWpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,8BAA8B,CAClD,eAAe,EAAE,GAAG,EAAE,EACtB,QAAQ,EAAE,YAAY,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,SAAI,EACR,iBAAiB,SAAO,EACxB,uBAAuB,CAAC,EAAE,EAAE,GAC3B,OAAO,CAAC;IACT,aAAa,EAAE,mBAAmB,CAAC;IACnC,gBAAgB,EAAE,2BAA2B,CAAC;IAC9C,wBAAwB,EAAE,EAAE,CAAC;CAC9B,CAAC,CA4BD"}
@@ -0,0 +1,95 @@
1
+ import { CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS } from '@aztec/constants';
2
+ import { Fr } from '@aztec/foundation/fields';
3
+ import { FunctionSelector, getAllFunctionAbis } from '@aztec/stdlib/abi';
4
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
+ import { computeInitializationHash } from '@aztec/stdlib/contract';
6
+ import { isNoirCallStackUnresolved } from '@aztec/stdlib/errors';
7
+ import { siloNullifier } from '@aztec/stdlib/hash';
8
+ import { deriveKeys } from '@aztec/stdlib/keys';
9
+ import { makeContractClassPublic, makeContractInstanceFromClassId } from '@aztec/stdlib/testing';
10
+ import { strict as assert } from 'assert';
11
+ import merge from 'lodash.merge';
12
+ import { resolveAssertionMessageFromRevertData, traverseCauseChain } from '../../../common/index.js';
13
+ import { Field, Uint8, Uint32, Uint64 } from '../avm_memory_types.js';
14
+ export const PUBLIC_DISPATCH_FN_NAME = 'public_dispatch';
15
+ export const DEFAULT_TIMESTAMP = 99833n;
16
+ export const DEFAULT_BLOCK_NUMBER = 42;
17
+ /**
18
+ * Create a new object with all the same properties as the original, except for the ones in the overrides object.
19
+ */ export function allSameExcept(original, overrides) {
20
+ return merge({}, original, overrides);
21
+ }
22
+ export function randomMemoryBytes(length) {
23
+ return [
24
+ ...Array(length)
25
+ ].map((_)=>new Uint8(Math.floor(Math.random() * 255)));
26
+ }
27
+ export function randomMemoryUint32s(length) {
28
+ return [
29
+ ...Array(length)
30
+ ].map((_)=>new Uint32(Math.floor(Math.random() * 255)));
31
+ }
32
+ export function randomMemoryUint64s(length) {
33
+ return [
34
+ ...Array(length)
35
+ ].map((_)=>new Uint64(Math.floor(Math.random() * 255)));
36
+ }
37
+ export function randomMemoryFields(length) {
38
+ return [
39
+ ...Array(length)
40
+ ].map((_)=>new Field(Fr.random()));
41
+ }
42
+ export function getFunctionSelector(functionName, contractArtifact) {
43
+ const fnArtifact = getAllFunctionAbis(contractArtifact).find((f)=>f.name === functionName);
44
+ assert(!!fnArtifact, `Function ${functionName} not found in ${contractArtifact.name}`);
45
+ const params = fnArtifact.parameters;
46
+ return FunctionSelector.fromNameAndParameters(fnArtifact.name, params);
47
+ }
48
+ export function getContractFunctionArtifact(functionName, contractArtifact) {
49
+ return contractArtifact.functions.find((f)=>f.name === functionName);
50
+ }
51
+ export function getContractFunctionAbi(functionName, contractArtifact) {
52
+ return contractArtifact.functions.find((f)=>f.name === functionName) ?? contractArtifact.nonDispatchPublicFunctions.find((f)=>f.name === functionName);
53
+ }
54
+ export function resolveContractAssertionMessage(functionName, revertReason, output, contractArtifact) {
55
+ traverseCauseChain(revertReason, (cause)=>{
56
+ revertReason = cause;
57
+ });
58
+ const functionArtifact = getAllFunctionAbis(contractArtifact).find((f)=>f.name === functionName);
59
+ if (!functionArtifact || !revertReason.noirCallStack || !isNoirCallStackUnresolved(revertReason.noirCallStack)) {
60
+ return undefined;
61
+ }
62
+ return resolveAssertionMessageFromRevertData(output, functionArtifact);
63
+ }
64
+ /**
65
+ * Create a contract class and instance given constructor args, artifact, etc.
66
+ * NOTE: This is useful for testing real-ish contract class registration and instance deployment TXs (via logs)
67
+ * @param constructorArgs - The constructor arguments for the contract.
68
+ * @param deployer - The deployer of the contract.
69
+ * @param contractArtifact - The contract artifact for the contract.
70
+ * @param seed - The seed for the contract.
71
+ * @param originalContractClassId - The original contract class ID (if upgraded)
72
+ * @returns The contract class, instance, and contract address nullifier.
73
+ */ export async function createContractClassAndInstance(constructorArgs, deployer, contractArtifact, seed = 0, contractClassSeed = seed, originalContractClassId) {
74
+ const bytecode = getContractFunctionArtifact(PUBLIC_DISPATCH_FN_NAME, contractArtifact).bytecode;
75
+ const contractClass = await makeContractClassPublic(contractClassSeed, bytecode);
76
+ const constructorAbi = getContractFunctionAbi('constructor', contractArtifact);
77
+ const { publicKeys } = await deriveKeys(new Fr(seed));
78
+ const initializationHash = await computeInitializationHash(constructorAbi, constructorArgs);
79
+ const contractInstance = originalContractClassId === undefined ? await makeContractInstanceFromClassId(contractClass.id, seed, {
80
+ deployer,
81
+ initializationHash,
82
+ publicKeys
83
+ }) : await makeContractInstanceFromClassId(originalContractClassId, seed, {
84
+ deployer,
85
+ initializationHash,
86
+ currentClassId: contractClass.id,
87
+ publicKeys
88
+ });
89
+ const contractAddressNullifier = await siloNullifier(AztecAddress.fromNumber(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS), contractInstance.address.toField());
90
+ return {
91
+ contractClass,
92
+ contractInstance,
93
+ contractAddressNullifier
94
+ };
95
+ }
@@ -1,4 +1,2 @@
1
1
  export * from './avm_simulator.js';
2
- export * from './journal/index.js';
3
- export * from './fixtures/simple_contract_data_source.js';
4
- //# sourceMappingURL=index.d.ts.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvYXZtL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/public/avm/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2CAA2C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/public/avm/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -1,3 +1 @@
1
1
  export * from './avm_simulator.js';
2
- export * from './journal/index.js';
3
- export * from './fixtures/simple_contract_data_source.js';
@@ -54,12 +54,12 @@ export declare class L1ToL2MessageExists extends Instruction {
54
54
  }
55
55
  export declare class EmitUnencryptedLog extends Instruction {
56
56
  private indirect;
57
- private logOffset;
58
57
  private logSizeOffset;
58
+ private logOffset;
59
59
  static type: string;
60
60
  static readonly opcode: Opcode;
61
61
  static readonly wireFormat: OperandType[];
62
- constructor(indirect: number, logOffset: number, logSizeOffset: number);
62
+ constructor(indirect: number, logSizeOffset: number, logOffset: number);
63
63
  execute(context: AvmContext): Promise<void>;
64
64
  }
65
65
  export declare class SendL2ToL1Message extends Instruction {
@@ -72,4 +72,4 @@ export declare class SendL2ToL1Message extends Instruction {
72
72
  constructor(indirect: number, recipientOffset: number, contentOffset: number);
73
73
  execute(context: AvmContext): Promise<void>;
74
74
  }
75
- //# sourceMappingURL=accrued_substate.d.ts.map
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjcnVlZF9zdWJzdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vb3Bjb2Rlcy9hY2NydWVkX3N1YnN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLHFCQUFhLGNBQWUsU0FBUSxXQUFXO0lBYTNDLE9BQU8sQ0FBQyxRQUFRO0lBQ2hCLE9BQU8sQ0FBQyxjQUFjO0lBQ3RCLE9BQU8sQ0FBQyxlQUFlO0lBQ3ZCLE9BQU8sQ0FBQyxZQUFZO0lBZnRCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFvQjtJQUN2QyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQXlCO0lBRXZELE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxnQkFNeEI7SUFFRixZQUNVLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLGVBQWUsRUFBRSxNQUFNLEVBQ3ZCLFlBQVksRUFBRSxNQUFNLEVBRzdCO0lBRVksT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQWtCdkQ7Q0FDRjtBQUVELHFCQUFhLFlBQWEsU0FBUSxXQUFXO0lBT3pDLE9BQU8sQ0FBQyxRQUFRO0lBQ2hCLE9BQU8sQ0FBQyxjQUFjO0lBUHhCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFrQjtJQUNyQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQXVCO0lBRXJELE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxnQkFBOEQ7SUFFeEYsWUFDVSxRQUFRLEVBQUUs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
@@ -1 +1 @@
1
- {"version":3,"file":"accrued_substate.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/accrued_substate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accrued_substate.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/accrued_substate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,cAAe,SAAQ,WAAW;IAa3C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,YAAY;IAftB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAoB;IACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAyB;IAEvD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAMxB;IAEF,YACU,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,EAG7B;IAEY,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBvD;CACF;AAED,qBAAa,YAAa,SAAQ,WAAW;IAOzC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,cAAc;IAPxB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAkB;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAuB;IAErD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAA8D;IAExF,YACU,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EAG/B;IAEY,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBvD;CACF;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAa5C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,YAAY;IAftB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAqB;IACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAA0B;IAExD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAMxB;IAEF,YACU,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EAG7B;IAEY,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBvD;CACF;AAED,qBAAa,aAAc,SAAQ,WAAW;IAO1C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IAPzB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAmB;IACtC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAwB;IAEtD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAA8D;IAExF,YACU,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EAGhC;IAEY,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BvD;CACF;AAED,qBAAa,mBAAoB,SAAQ,WAAW;IAahD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,YAAY;IAftB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAqB;IACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAA0B;IAExD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAMxB;IAEF,YACU,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,EAC1B,YAAY,EAAE,MAAM,EAG7B;IAEY,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBvD;CACF;AAED,qBAAa,kBAAmB,SAAQ,WAAW;IAQ/C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,SAAS;IARnB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAwB;IAC3C,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAA6B;IAE3D,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAkF;IAE5G,YACU,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EAG1B;IAEY,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBvD;CACF;AAED,qBAAa,iBAAkB,SAAQ,WAAW;IAO9C,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,aAAa;IARvB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAmB;IACtC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAwB;IAEtD,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAkF;IAE5G,YACU,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EAG9B;IAEY,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBvD;CACF"}
@@ -1,6 +1,6 @@
1
+ import { NullifierCollisionError } from '../../side_effect_errors.js';
1
2
  import { TypeTag, Uint1 } from '../avm_memory_types.js';
2
3
  import { InstructionExecutionError, StaticCallAlterationError } from '../errors.js';
3
- import { NullifierCollisionError } from '../journal/nullifiers.js';
4
4
  import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
5
5
  import { Addressing } from './addressing_mode.js';
6
6
  import { Instruction } from './instruction.js';
@@ -24,18 +24,19 @@ export class NoteHashExists extends Instruction {
24
24
  }
25
25
  async execute(context) {
26
26
  const memory = context.machineState.memory;
27
- context.machineState.consumeGas(this.gasCost());
27
+ const addressing = Addressing.fromWire(this.indirect);
28
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
28
29
  const operands = [
29
30
  this.noteHashOffset,
30
31
  this.leafIndexOffset,
31
32
  this.existsOffset
32
33
  ];
33
- const addressing = Addressing.fromWire(this.indirect, operands.length);
34
34
  const [noteHashOffset, leafIndexOffset, existsOffset] = addressing.resolve(operands, memory);
35
- memory.checkTags(TypeTag.FIELD, noteHashOffset, leafIndexOffset);
35
+ memory.checkTag(TypeTag.FIELD, noteHashOffset);
36
+ memory.checkTag(TypeTag.UINT64, leafIndexOffset);
36
37
  // Note that this instruction accepts any type in memory, and converts to Field.
37
38
  const noteHash = memory.get(noteHashOffset).toFr();
38
- const leafIndex = memory.get(leafIndexOffset).toFr();
39
+ const leafIndex = memory.get(leafIndexOffset).toBigInt();
39
40
  const exists = await context.persistableState.checkNoteHashExists(context.environment.address, noteHash, leafIndex);
40
41
  memory.set(existsOffset, exists ? new Uint1(1) : new Uint1(0));
41
42
  }
@@ -56,11 +57,11 @@ export class EmitNoteHash extends Instruction {
56
57
  }
57
58
  async execute(context) {
58
59
  const memory = context.machineState.memory;
59
- context.machineState.consumeGas(this.gasCost());
60
+ const addressing = Addressing.fromWire(this.indirect);
61
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
60
62
  const operands = [
61
63
  this.noteHashOffset
62
64
  ];
63
- const addressing = Addressing.fromWire(this.indirect, operands.length);
64
65
  const [noteHashOffset] = addressing.resolve(operands, memory);
65
66
  memory.checkTag(TypeTag.FIELD, noteHashOffset);
66
67
  if (context.environment.isStaticCall) {
@@ -90,13 +91,13 @@ export class NullifierExists extends Instruction {
90
91
  }
91
92
  async execute(context) {
92
93
  const memory = context.machineState.memory;
93
- context.machineState.consumeGas(this.gasCost());
94
+ const addressing = Addressing.fromWire(this.indirect);
95
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
94
96
  const operands = [
95
97
  this.nullifierOffset,
96
98
  this.addressOffset,
97
99
  this.existsOffset
98
100
  ];
99
- const addressing = Addressing.fromWire(this.indirect, operands.length);
100
101
  const [nullifierOffset, addressOffset, existsOffset] = addressing.resolve(operands, memory);
101
102
  memory.checkTags(TypeTag.FIELD, nullifierOffset, addressOffset);
102
103
  const nullifier = memory.get(nullifierOffset).toFr();
@@ -124,11 +125,11 @@ export class EmitNullifier extends Instruction {
124
125
  throw new StaticCallAlterationError();
125
126
  }
126
127
  const memory = context.machineState.memory;
127
- context.machineState.consumeGas(this.gasCost());
128
+ const addressing = Addressing.fromWire(this.indirect);
129
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
128
130
  const operands = [
129
131
  this.nullifierOffset
130
132
  ];
131
- const addressing = Addressing.fromWire(this.indirect, operands.length);
132
133
  const [nullifierOffset] = addressing.resolve(operands, memory);
133
134
  memory.checkTag(TypeTag.FIELD, nullifierOffset);
134
135
  const nullifier = memory.get(nullifierOffset).toFr();
@@ -164,25 +165,26 @@ export class L1ToL2MessageExists extends Instruction {
164
165
  }
165
166
  async execute(context) {
166
167
  const memory = context.machineState.memory;
167
- context.machineState.consumeGas(this.gasCost());
168
+ const addressing = Addressing.fromWire(this.indirect);
169
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
168
170
  const operands = [
169
171
  this.msgHashOffset,
170
172
  this.msgLeafIndexOffset,
171
173
  this.existsOffset
172
174
  ];
173
- const addressing = Addressing.fromWire(this.indirect, operands.length);
174
175
  const [msgHashOffset, msgLeafIndexOffset, existsOffset] = addressing.resolve(operands, memory);
175
- memory.checkTags(TypeTag.FIELD, msgHashOffset, msgLeafIndexOffset);
176
+ memory.checkTag(TypeTag.FIELD, msgHashOffset);
177
+ memory.checkTag(TypeTag.UINT64, msgLeafIndexOffset);
176
178
  const msgHash = memory.get(msgHashOffset).toFr();
177
179
  const msgLeafIndex = memory.get(msgLeafIndexOffset).toFr();
178
- const exists = await context.persistableState.checkL1ToL2MessageExists(context.environment.address, msgHash, msgLeafIndex);
180
+ const exists = await context.persistableState.checkL1ToL2MessageExists(msgHash, msgLeafIndex);
179
181
  memory.set(existsOffset, exists ? new Uint1(1) : new Uint1(0));
180
182
  }
181
183
  }
182
184
  export class EmitUnencryptedLog extends Instruction {
183
185
  indirect;
184
- logOffset;
185
186
  logSizeOffset;
187
+ logOffset;
186
188
  // TODO(#11124): rename unencrypted -> public
187
189
  static type = 'EMITUNENCRYPTEDLOG';
188
190
  static opcode = Opcode.EMITUNENCRYPTEDLOG;
@@ -193,25 +195,26 @@ export class EmitUnencryptedLog extends Instruction {
193
195
  OperandType.UINT16,
194
196
  OperandType.UINT16
195
197
  ];
196
- constructor(indirect, logOffset, logSizeOffset){
197
- super(), this.indirect = indirect, this.logOffset = logOffset, this.logSizeOffset = logSizeOffset;
198
+ constructor(indirect, logSizeOffset, logOffset){
199
+ super(), this.indirect = indirect, this.logSizeOffset = logSizeOffset, this.logOffset = logOffset;
198
200
  }
199
201
  async execute(context) {
200
202
  if (context.environment.isStaticCall) {
201
203
  throw new StaticCallAlterationError();
202
204
  }
203
205
  const memory = context.machineState.memory;
206
+ const addressing = Addressing.fromWire(this.indirect);
207
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
204
208
  const operands = [
205
- this.logOffset,
206
- this.logSizeOffset
209
+ this.logSizeOffset,
210
+ this.logOffset
207
211
  ];
208
- const addressing = Addressing.fromWire(this.indirect, operands.length);
209
- const [logOffset, logSizeOffset] = addressing.resolve(operands, memory);
212
+ const [logSizeOffset, logOffset] = addressing.resolve(operands, memory);
210
213
  memory.checkTag(TypeTag.UINT32, logSizeOffset);
211
214
  const logSize = memory.get(logSizeOffset).toNumber();
212
215
  memory.checkTagsRange(TypeTag.FIELD, logOffset, logSize);
213
216
  const contractAddress = context.environment.address;
214
- context.machineState.consumeGas(this.gasCost(logSize));
217
+ context.machineState.consumeGas(this.dynamicGasCost(logSize));
215
218
  const log = memory.getSlice(logOffset, logSize).map((f)=>f.toFr());
216
219
  context.persistableState.writePublicLog(contractAddress, log);
217
220
  }
@@ -237,12 +240,12 @@ export class SendL2ToL1Message extends Instruction {
237
240
  throw new StaticCallAlterationError();
238
241
  }
239
242
  const memory = context.machineState.memory;
240
- context.machineState.consumeGas(this.gasCost());
243
+ const addressing = Addressing.fromWire(this.indirect);
244
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
241
245
  const operands = [
242
246
  this.recipientOffset,
243
247
  this.contentOffset
244
248
  ];
245
- const addressing = Addressing.fromWire(this.indirect, operands.length);
246
249
  const [recipientOffset, contentOffset] = addressing.resolve(operands, memory);
247
250
  memory.checkTags(TypeTag.FIELD, recipientOffset, contentOffset);
248
251
  const recipient = memory.get(recipientOffset).toFr();
@@ -1,3 +1,5 @@
1
+ import { AVM_MAX_OPERANDS } from '@aztec/constants';
2
+ import type { Tuple } from '@aztec/foundation/serialize';
1
3
  import { type TaggedMemoryInterface } from '../avm_memory_types.js';
2
4
  export declare enum AddressingMode {
3
5
  DIRECT = 0,
@@ -7,21 +9,23 @@ export declare enum AddressingMode {
7
9
  }
8
10
  /** A class to represent the addressing mode of an instruction. */
9
11
  export declare class Addressing {
10
- /** The addressing mode for each operand. The length of this array is the number of operands of the instruction. */
12
+ /** The addressing mode for each possible operand. */
11
13
  private readonly modePerOperand;
12
14
  constructor(
13
- /** The addressing mode for each operand. The length of this array is the number of operands of the instruction. */
14
- modePerOperand: AddressingMode[]);
15
- static fromWire(wireModes: number, numOperands?: number): Addressing;
15
+ /** The addressing mode for each possible operand. */
16
+ modePerOperand: Tuple<AddressingMode, typeof AVM_MAX_OPERANDS>);
17
+ static fromModes(modes: AddressingMode[]): Addressing;
18
+ static fromWire(wireModes: number): Addressing;
16
19
  toWire(): number;
17
- /** Returns how many operands use the given addressing mode. */
18
- count(mode: AddressingMode): number;
20
+ indirectOperandsCount(): number;
21
+ relativeOperandsCount(): number;
19
22
  /**
20
23
  * Resolves the offsets using the addressing mode.
21
24
  * @param offsets The offsets to resolve.
22
25
  * @param mem The memory to use for resolution.
23
- * @returns The resolved offsets. The length of the returned array is the same as the length of the input array.
26
+ * @returns The resolved offsets. The length of the returned array is the same as the length of the input array and the resolved offsets are guaranteed to be valid addresses.
27
+ * @throws An error if any step failed. Should be treated as a black box.
24
28
  */
25
29
  resolve(offsets: number[], mem: TaggedMemoryInterface): number[];
26
30
  }
27
- //# sourceMappingURL=addressing_mode.d.ts.map
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc2luZ19tb2RlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHVibGljL2F2bS9vcGNvZGVzL2FkZHJlc3NpbmdfbW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUl6RCxPQUFPLEVBQTZCLEtBQUsscUJBQXFCLEVBQVcsTUFBTSx3QkFBd0IsQ0FBQztBQUd4RyxvQkFBWSxjQUFjO0lBQ3hCLE1BQU0sSUFBSTtJQUNWLFFBQVEsSUFBSTtJQUNaLFFBQVEsSUFBSTtJQUNaLGlCQUFpQixJQUFJO0NBQ3RCO0FBRUQsa0VBQWtFO0FBQ2xFLHFCQUFhLFVBQVU7SUFFbkIscURBQXFEO0lBQ3JELE9BQU8sQ0FBQyxRQUFRLENBQUMsY0FBYztJQUZqQztJQUNFLHFEQUFxRDtJQUNwQyxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWMsRUFBRSxPQUFPLGdCQUFnQixDQUFDLEVBQzdFO0lBRUosT0FBYyxTQUFTLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxHQUFHLFVBQVUsQ0FHM0Q7SUFFRCxPQUFjLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxHQUFHLFVBQVUsQ0FXcEQ7SUFFTSxNQUFNLElBQUksTUFBTSxDQWF0QjtJQUVNLHFCQUFxQixJQUFJLE1BQU0sQ0FFckM7SUFFTSxxQkFBcUIsSUFBSSxNQUFNLENBRXJDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUscUJBQXFCLEdBQUcsTUFBTSxFQUFFLENBc0N0RTtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"addressing_mode.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/addressing_mode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAGlF,oBAAY,cAAc;IACxB,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,iBAAiB,IAAI;CACtB;AAED,kEAAkE;AAClE,qBAAa,UAAU;IAEnB,mHAAmH;IACnH,OAAO,CAAC,QAAQ,CAAC,cAAc;;IAD/B,mHAAmH;IAClG,cAAc,EAAE,cAAc,EAAE;WAIrC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,GAAE,MAAU,GAAG,UAAU;IAYvE,MAAM,IAAI,MAAM;IAevB,+DAA+D;IACxD,KAAK,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM;IAI1C;;;;;OAKG;IACI,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,qBAAqB,GAAG,MAAM,EAAE;CA4BxE"}
1
+ {"version":3,"file":"addressing_mode.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/addressing_mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAIzD,OAAO,EAA6B,KAAK,qBAAqB,EAAW,MAAM,wBAAwB,CAAC;AAGxG,oBAAY,cAAc;IACxB,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,iBAAiB,IAAI;CACtB;AAED,kEAAkE;AAClE,qBAAa,UAAU;IAEnB,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc;IAFjC;IACE,qDAAqD;IACpC,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,gBAAgB,CAAC,EAC7E;IAEJ,OAAc,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,UAAU,CAG3D;IAED,OAAc,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAWpD;IAEM,MAAM,IAAI,MAAM,CAatB;IAEM,qBAAqB,IAAI,MAAM,CAErC;IAEM,qBAAqB,IAAI,MAAM,CAErC;IAED;;;;;;OAMG;IACI,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,qBAAqB,GAAG,MAAM,EAAE,CAsCtE;CACF"}
@@ -1,6 +1,8 @@
1
+ import { AVM_MAX_OPERANDS } from '@aztec/constants';
2
+ import { padArrayEnd } from '@aztec/foundation/collection';
1
3
  import { strict as assert } from 'assert';
2
- import { TaggedMemory } from '../avm_memory_types.js';
3
- import { RelativeAddressOutOfRangeError } from '../errors.js';
4
+ import { TaggedMemory, TypeTag } from '../avm_memory_types.js';
5
+ import { RelativeAddressOutOfRangeError, TagCheckError } from '../errors.js';
4
6
  export var AddressingMode = /*#__PURE__*/ function(AddressingMode) {
5
7
  AddressingMode[AddressingMode["DIRECT"] = 0] = "DIRECT";
6
8
  AddressingMode[AddressingMode["INDIRECT"] = 1] = "INDIRECT";
@@ -10,17 +12,21 @@ export var AddressingMode = /*#__PURE__*/ function(AddressingMode) {
10
12
  }({});
11
13
  /** A class to represent the addressing mode of an instruction. */ export class Addressing {
12
14
  modePerOperand;
13
- constructor(/** The addressing mode for each operand. The length of this array is the number of operands of the instruction. */ modePerOperand){
15
+ constructor(/** The addressing mode for each possible operand. */ modePerOperand){
14
16
  this.modePerOperand = modePerOperand;
15
17
  }
16
- // TODO(facundo): 8 for backwards compatibility.
17
- static fromWire(wireModes, numOperands = 8) {
18
- // The modes are stored in the wire format as a byte, with each bit representing the mode for an operand.
19
- // The least significant bit represents the zeroth operand, and the most significant bit represents the last operand.
20
- const modes = new Array(numOperands);
21
- for(let i = 0; i < numOperands; i++){
22
- modes[i] = (wireModes >> i & 1) * 1 | (wireModes >> i + numOperands & 1) * 2;
18
+ static fromModes(modes) {
19
+ assert(modes.length <= AVM_MAX_OPERANDS, 'Too many operands for addressing mode');
20
+ return new Addressing(padArrayEnd(modes, 0, AVM_MAX_OPERANDS));
21
+ }
22
+ static fromWire(wireModes) {
23
+ // The modes are stored in the wire format as one or two bytes, with each two bits representing the modes for an operand.
24
+ // Even bits are indirect, odd bits are relative.
25
+ const modes = new Array(AVM_MAX_OPERANDS);
26
+ for(let i = 0; i < AVM_MAX_OPERANDS; i++){
27
+ modes[i] = (wireModes >> i * 2 & 1) * 1 | (wireModes >> i * 2 + 1 & 1) * 2;
23
28
  }
29
+ // Casting the array to tuple since it should be more performant than using makeTuple
24
30
  return new Addressing(modes);
25
31
  }
26
32
  toWire() {
@@ -29,44 +35,58 @@ export var AddressingMode = /*#__PURE__*/ function(AddressingMode) {
29
35
  let wire = 0;
30
36
  for(let i = 0; i < this.modePerOperand.length; i++){
31
37
  if (this.modePerOperand[i] & 1) {
32
- wire |= 1 << i;
38
+ wire |= 1 << i * 2;
33
39
  }
34
40
  if (this.modePerOperand[i] & 2) {
35
- wire |= 1 << this.modePerOperand.length + i;
41
+ wire |= 1 << i * 2 + 1;
36
42
  }
37
43
  }
38
44
  return wire;
39
45
  }
40
- /** Returns how many operands use the given addressing mode. */ count(mode) {
41
- return this.modePerOperand.filter((m)=>(m & mode) !== 0).length;
46
+ indirectOperandsCount() {
47
+ return this.modePerOperand.filter((mode)=>mode & 1).length;
48
+ }
49
+ relativeOperandsCount() {
50
+ return this.modePerOperand.filter((mode)=>mode & 2).length;
42
51
  }
43
52
  /**
44
53
  * Resolves the offsets using the addressing mode.
45
54
  * @param offsets The offsets to resolve.
46
55
  * @param mem The memory to use for resolution.
47
- * @returns The resolved offsets. The length of the returned array is the same as the length of the input array.
56
+ * @returns The resolved offsets. The length of the returned array is the same as the length of the input array and the resolved offsets are guaranteed to be valid addresses.
57
+ * @throws An error if any step failed. Should be treated as a black box.
48
58
  */ resolve(offsets, mem) {
49
- assert(offsets.length <= this.modePerOperand.length);
50
59
  const resolved = new Array(offsets.length);
51
- let didRelativeOnce = false;
52
- let baseAddr = 0;
60
+ // These will be read (once) if we have any relative operands.
61
+ let baseAddr;
53
62
  for (const [i, offset] of offsets.entries()){
54
63
  const mode = this.modePerOperand[i];
64
+ // The given offsets are assumed to be valid addresses.
55
65
  resolved[i] = offset;
56
66
  if (mode & 2) {
57
- if (!didRelativeOnce) {
58
- mem.checkIsValidMemoryOffsetTag(0);
59
- baseAddr = Number(mem.get(0).toBigInt());
60
- didRelativeOnce = true;
67
+ if (!baseAddr) {
68
+ baseAddr = mem.get(0);
69
+ const baseAddrTag = baseAddr.getTag();
70
+ if (!TaggedMemory.isValidMemoryAddressTag(baseAddrTag)) {
71
+ throw TagCheckError.forOffset(0, TypeTag[baseAddrTag], TypeTag[TypeTag.UINT32]);
72
+ }
61
73
  }
62
- resolved[i] += baseAddr;
74
+ // Here we know that resolved[i] is at most 32 bits and baseAddr is at most 32 bits.
75
+ // Therefore, the addition is safe since the `number` type fits more than 33 bits.
76
+ resolved[i] += Number(baseAddr.toBigInt());
63
77
  if (resolved[i] >= TaggedMemory.MAX_MEMORY_SIZE) {
64
- throw new RelativeAddressOutOfRangeError(baseAddr, offset);
78
+ throw new RelativeAddressOutOfRangeError(Number(baseAddr.toBigInt()), offset);
65
79
  }
66
80
  }
67
81
  if (mode & 1) {
68
- mem.checkIsValidMemoryOffsetTag(resolved[i]);
69
- resolved[i] = Number(mem.get(resolved[i]).toBigInt());
82
+ // At this point we know that resolved[i] is a valid memory address.
83
+ const resolvedValue = mem.get(resolved[i]);
84
+ const resolvedTag = resolvedValue.getTag();
85
+ // Final check.
86
+ if (!TaggedMemory.isValidMemoryAddressTag(resolvedTag)) {
87
+ throw TagCheckError.forOffset(resolved[i], TypeTag[resolvedTag], TypeTag[TypeTag.UINT32]);
88
+ }
89
+ resolved[i] = Number(resolvedValue.toBigInt());
70
90
  }
71
91
  }
72
92
  return resolved;