@aztec/simulator 0.0.0-test.0 → 0.0.1-commit.0208eb9

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 (528) hide show
  1. package/README.md +8 -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 +6 -9
  6. package/dest/common/errors.d.ts.map +1 -1
  7. package/dest/common/errors.js +51 -32
  8. package/dest/common/index.d.ts +1 -2
  9. package/dest/common/index.d.ts.map +1 -1
  10. package/dest/common/index.js +0 -1
  11. package/dest/common/stats/index.d.ts +1 -1
  12. package/dest/common/stats/stats.d.ts +1 -1
  13. package/dest/private/acvm/acvm.d.ts +15 -7
  14. package/dest/private/acvm/acvm.d.ts.map +1 -1
  15. package/dest/private/acvm/acvm.js +14 -19
  16. package/dest/private/acvm/acvm_types.d.ts +2 -2
  17. package/dest/private/acvm/acvm_types.d.ts.map +1 -1
  18. package/dest/private/acvm/deserialize.d.ts +19 -20
  19. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  20. package/dest/private/acvm/deserialize.js +32 -24
  21. package/dest/private/acvm/index.d.ts +1 -2
  22. package/dest/private/acvm/index.d.ts.map +1 -1
  23. package/dest/private/acvm/index.js +0 -1
  24. package/dest/private/acvm/serialize.d.ts +21 -4
  25. package/dest/private/acvm/serialize.d.ts.map +1 -1
  26. package/dest/private/acvm/serialize.js +54 -1
  27. package/dest/private/acvm_native.d.ts +41 -0
  28. package/dest/private/acvm_native.d.ts.map +1 -0
  29. package/dest/private/{providers/acvm_native.js → acvm_native.js} +34 -26
  30. package/dest/private/acvm_wasm.d.ts +16 -0
  31. package/dest/private/acvm_wasm.d.ts.map +1 -0
  32. package/dest/private/acvm_wasm.js +65 -0
  33. package/dest/private/acvm_wasm_with_blobs.d.ts +20 -0
  34. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -0
  35. package/dest/private/acvm_wasm_with_blobs.js +35 -0
  36. package/dest/private/circuit_recording/circuit_recorder.d.ts +109 -0
  37. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -0
  38. package/dest/private/circuit_recording/circuit_recorder.js +212 -0
  39. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +32 -0
  40. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
  41. package/dest/private/circuit_recording/file_circuit_recorder.js +135 -0
  42. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +10 -0
  43. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
  44. package/dest/private/circuit_recording/memory_circuit_recorder.js +9 -0
  45. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +21 -0
  46. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
  47. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +44 -0
  48. package/dest/private/circuit_simulator.d.ts +35 -0
  49. package/dest/private/circuit_simulator.d.ts.map +1 -0
  50. package/dest/private/circuit_simulator.js +43 -0
  51. package/dest/private/factory.d.ts +12 -0
  52. package/dest/private/factory.d.ts.map +1 -0
  53. package/dest/private/{providers/factory.js → factory.js} +8 -5
  54. package/dest/public/avm/avm_context.d.ts +8 -8
  55. package/dest/public/avm/avm_context.d.ts.map +1 -1
  56. package/dest/public/avm/avm_contract_call_result.d.ts +8 -6
  57. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  58. package/dest/public/avm/avm_contract_call_result.js +12 -8
  59. package/dest/public/avm/avm_execution_environment.d.ts +9 -6
  60. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  61. package/dest/public/avm/avm_execution_environment.js +5 -3
  62. package/dest/public/avm/avm_gas.d.ts +5 -21
  63. package/dest/public/avm/avm_gas.d.ts.map +1 -1
  64. package/dest/public/avm/avm_gas.js +27 -35
  65. package/dest/public/avm/avm_machine_state.d.ts +9 -6
  66. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  67. package/dest/public/avm/avm_machine_state.js +5 -2
  68. package/dest/public/avm/avm_memory_types.d.ts +100 -89
  69. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  70. package/dest/public/avm/avm_memory_types.js +21 -7
  71. package/dest/public/avm/avm_simulator.d.ts +8 -7
  72. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  73. package/dest/public/avm/avm_simulator.js +32 -42
  74. package/dest/public/avm/avm_simulator_interface.d.ts +9 -0
  75. package/dest/public/avm/avm_simulator_interface.d.ts.map +1 -0
  76. package/dest/public/avm/avm_simulator_interface.js +3 -0
  77. package/dest/public/avm/calldata.d.ts +51 -0
  78. package/dest/public/avm/calldata.d.ts.map +1 -0
  79. package/dest/public/avm/calldata.js +63 -0
  80. package/dest/public/avm/errors.d.ts +11 -29
  81. package/dest/public/avm/errors.d.ts.map +1 -1
  82. package/dest/public/avm/errors.js +19 -57
  83. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +6 -5
  84. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  85. package/dest/public/avm/fixtures/avm_simulation_tester.js +26 -18
  86. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +8 -6
  87. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  88. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +38 -15
  89. package/dest/public/avm/fixtures/initializers.d.ts +42 -0
  90. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
  91. package/dest/public/avm/fixtures/initializers.js +45 -0
  92. package/dest/public/avm/fixtures/utils.d.ts +39 -0
  93. package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
  94. package/dest/public/avm/fixtures/utils.js +96 -0
  95. package/dest/public/avm/index.d.ts +1 -3
  96. package/dest/public/avm/index.d.ts.map +1 -1
  97. package/dest/public/avm/index.js +0 -2
  98. package/dest/public/avm/opcodes/accrued_substate.d.ts +17 -18
  99. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  100. package/dest/public/avm/opcodes/accrued_substate.js +58 -55
  101. package/dest/public/avm/opcodes/addressing_mode.d.ts +12 -8
  102. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
  103. package/dest/public/avm/opcodes/addressing_mode.js +46 -26
  104. package/dest/public/avm/opcodes/arithmetic.d.ts +14 -2
  105. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  106. package/dest/public/avm/opcodes/arithmetic.js +27 -3
  107. package/dest/public/avm/opcodes/bitwise.d.ts +8 -16
  108. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  109. package/dest/public/avm/opcodes/bitwise.js +22 -29
  110. package/dest/public/avm/opcodes/comparators.d.ts +1 -1
  111. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  112. package/dest/public/avm/opcodes/comparators.js +3 -3
  113. package/dest/public/avm/opcodes/contract.d.ts +3 -4
  114. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  115. package/dest/public/avm/opcodes/contract.js +11 -12
  116. package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
  117. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  118. package/dest/public/avm/opcodes/control_flow.js +13 -11
  119. package/dest/public/avm/opcodes/conversion.d.ts +4 -3
  120. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  121. package/dest/public/avm/opcodes/conversion.js +270 -6
  122. package/dest/public/avm/opcodes/ec_add.d.ts +3 -3
  123. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  124. package/dest/public/avm/opcodes/ec_add.js +21 -12
  125. package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
  126. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  127. package/dest/public/avm/opcodes/environment_getters.js +20 -22
  128. package/dest/public/avm/opcodes/external_calls.d.ts +14 -13
  129. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  130. package/dest/public/avm/opcodes/external_calls.js +52 -46
  131. package/dest/public/avm/opcodes/hashing.d.ts +7 -7
  132. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  133. package/dest/public/avm/opcodes/hashing.js +24 -19
  134. package/dest/public/avm/opcodes/index.d.ts +1 -1
  135. package/dest/public/avm/opcodes/instruction.d.ts +15 -11
  136. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
  137. package/dest/public/avm/opcodes/instruction.js +23 -19
  138. package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
  139. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  140. package/dest/public/avm/opcodes/instruction_impl.js +4 -4
  141. package/dest/public/avm/opcodes/memory.d.ts +15 -15
  142. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  143. package/dest/public/avm/opcodes/memory.js +52 -48
  144. package/dest/public/avm/opcodes/misc.d.ts +4 -3
  145. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  146. package/dest/public/avm/opcodes/misc.js +42 -17
  147. package/dest/public/avm/opcodes/storage.d.ts +14 -13
  148. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  149. package/dest/public/avm/opcodes/storage.js +39 -27
  150. package/dest/public/avm/revert_reason.d.ts +18 -0
  151. package/dest/public/avm/revert_reason.d.ts.map +1 -0
  152. package/dest/public/avm/revert_reason.js +39 -0
  153. package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -3
  154. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
  155. package/dest/public/avm/serialization/bytecode_serialization.d.ts +3 -7
  156. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  157. package/dest/public/avm/serialization/bytecode_serialization.js +79 -75
  158. package/dest/public/avm/serialization/instruction_serialization.d.ts +14 -5
  159. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  160. package/dest/public/avm/serialization/instruction_serialization.js +70 -35
  161. package/dest/public/avm/test_utils.d.ts +12 -15
  162. package/dest/public/avm/test_utils.d.ts.map +1 -1
  163. package/dest/public/avm/test_utils.js +17 -25
  164. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  165. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  166. package/dest/public/contracts_db_checkpoint.js +30 -0
  167. package/dest/public/db_interfaces.d.ts +68 -0
  168. package/dest/public/db_interfaces.d.ts.map +1 -0
  169. package/dest/public/db_interfaces.js +3 -0
  170. package/dest/public/debug_fn_name.d.ts +18 -0
  171. package/dest/public/debug_fn_name.d.ts.map +1 -0
  172. package/dest/public/debug_fn_name.js +37 -0
  173. package/dest/public/executor_metrics.d.ts +12 -4
  174. package/dest/public/executor_metrics.d.ts.map +1 -1
  175. package/dest/public/executor_metrics.js +33 -23
  176. package/dest/public/executor_metrics_interface.d.ts +10 -0
  177. package/dest/public/executor_metrics_interface.d.ts.map +1 -0
  178. package/dest/public/executor_metrics_interface.js +1 -0
  179. package/dest/public/fixtures/amm_test.d.ts +10 -0
  180. package/dest/public/fixtures/amm_test.d.ts.map +1 -0
  181. package/dest/public/fixtures/amm_test.js +213 -0
  182. package/dest/public/fixtures/bulk_test.d.ts +6 -0
  183. package/dest/public/fixtures/bulk_test.d.ts.map +1 -0
  184. package/dest/public/fixtures/bulk_test.js +262 -0
  185. package/dest/public/fixtures/custom_bytecode_tester.d.ts +34 -0
  186. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
  187. package/dest/public/fixtures/custom_bytecode_tester.js +53 -0
  188. package/dest/public/fixtures/custom_bytecode_tests.d.ts +12 -0
  189. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
  190. package/dest/public/fixtures/custom_bytecode_tests.js +174 -0
  191. package/dest/public/fixtures/index.d.ts +10 -1
  192. package/dest/public/fixtures/index.d.ts.map +1 -1
  193. package/dest/public/fixtures/index.js +9 -0
  194. package/dest/public/fixtures/minimal_public_tx.d.ts +4 -0
  195. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
  196. package/dest/public/fixtures/minimal_public_tx.js +19 -0
  197. package/dest/public/fixtures/opcode_spammer.d.ts +122 -0
  198. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
  199. package/dest/public/fixtures/opcode_spammer.js +1653 -0
  200. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +55 -15
  201. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  202. package/dest/public/fixtures/public_tx_simulation_tester.js +138 -72
  203. package/dest/public/fixtures/simple_contract_data_source.d.ts +36 -0
  204. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -0
  205. package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.js +31 -10
  206. package/dest/public/fixtures/token_test.d.ts +12 -0
  207. package/dest/public/fixtures/token_test.d.ts.map +1 -0
  208. package/dest/public/fixtures/token_test.js +96 -0
  209. package/dest/public/fixtures/utils.d.ts +18 -5
  210. package/dest/public/fixtures/utils.d.ts.map +1 -1
  211. package/dest/public/fixtures/utils.js +102 -59
  212. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +60 -0
  213. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  214. package/dest/public/fuzzing/avm_fuzzer_simulator.js +171 -0
  215. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  216. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  217. package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
  218. package/dest/public/hinting_db_sources.d.ts +80 -0
  219. package/dest/public/hinting_db_sources.d.ts.map +1 -0
  220. package/dest/public/hinting_db_sources.js +355 -0
  221. package/dest/public/index.d.ts +6 -9
  222. package/dest/public/index.d.ts.map +1 -1
  223. package/dest/public/index.js +4 -7
  224. package/dest/public/public_db_sources.d.ts +54 -103
  225. package/dest/public/public_db_sources.d.ts.map +1 -1
  226. package/dest/public/public_db_sources.js +222 -195
  227. package/dest/public/public_errors.d.ts +12 -0
  228. package/dest/public/public_errors.d.ts.map +1 -0
  229. package/dest/public/public_errors.js +13 -0
  230. package/dest/public/public_processor/guarded_merkle_tree.d.ts +51 -0
  231. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
  232. package/dest/public/public_processor/guarded_merkle_tree.js +113 -0
  233. package/dest/public/public_processor/public_processor.d.ts +28 -38
  234. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  235. package/dest/public/public_processor/public_processor.js +576 -136
  236. package/dest/public/public_processor/public_processor_metrics.d.ts +4 -4
  237. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  238. package/dest/public/public_processor/public_processor_metrics.js +29 -46
  239. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +19 -0
  240. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
  241. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +98 -0
  242. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +53 -0
  243. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -0
  244. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +132 -0
  245. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +42 -0
  246. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -0
  247. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +86 -0
  248. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +30 -0
  249. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -0
  250. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +171 -0
  251. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +23 -0
  252. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
  253. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
  254. package/dest/public/public_tx_simulator/factories.d.ts +14 -0
  255. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  256. package/dest/public/public_tx_simulator/factories.js +28 -0
  257. package/dest/public/public_tx_simulator/index.d.ts +8 -0
  258. package/dest/public/public_tx_simulator/index.d.ts.map +1 -0
  259. package/dest/public/public_tx_simulator/index.js +5 -0
  260. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +31 -0
  261. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -0
  262. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +51 -0
  263. package/dest/public/public_tx_simulator/public_tx_context.d.ts +25 -31
  264. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  265. package/dest/public/public_tx_simulator/public_tx_context.js +75 -95
  266. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +38 -58
  267. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  268. package/dest/public/public_tx_simulator/public_tx_simulator.js +220 -207
  269. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +32 -0
  270. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -0
  271. package/dest/public/public_tx_simulator/public_tx_simulator_interface.js +1 -0
  272. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +21 -0
  273. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -0
  274. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +415 -0
  275. package/dest/public/side_effect_errors.d.ts +42 -2
  276. package/dest/public/side_effect_errors.d.ts.map +1 -1
  277. package/dest/public/side_effect_errors.js +70 -1
  278. package/dest/public/side_effect_trace.d.ts +24 -69
  279. package/dest/public/side_effect_trace.d.ts.map +1 -1
  280. package/dest/public/side_effect_trace.js +74 -124
  281. package/dest/public/side_effect_trace_interface.d.ts +13 -25
  282. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  283. package/dest/public/state_manager/index.d.ts +2 -0
  284. package/dest/public/state_manager/index.d.ts.map +1 -0
  285. package/dest/public/state_manager/index.js +1 -0
  286. package/dest/public/{avm/journal → state_manager}/nullifiers.d.ts +4 -7
  287. package/dest/public/state_manager/nullifiers.d.ts.map +1 -0
  288. package/dest/public/{avm/journal → state_manager}/nullifiers.js +3 -8
  289. package/dest/public/{avm/journal → state_manager}/public_storage.d.ts +4 -4
  290. package/dest/public/state_manager/public_storage.d.ts.map +1 -0
  291. package/dest/public/{avm/journal → state_manager}/public_storage.js +1 -1
  292. package/dest/public/state_manager/state_manager.d.ts +170 -0
  293. package/dest/public/state_manager/state_manager.d.ts.map +1 -0
  294. package/dest/public/state_manager/state_manager.js +402 -0
  295. package/dest/public/test_executor_metrics.d.ts +56 -0
  296. package/dest/public/test_executor_metrics.d.ts.map +1 -0
  297. package/dest/public/test_executor_metrics.js +307 -0
  298. package/dest/public/unique_class_ids.d.ts +1 -1
  299. package/dest/public/unique_class_ids.d.ts.map +1 -1
  300. package/dest/public/utils.d.ts +3 -5
  301. package/dest/public/utils.d.ts.map +1 -1
  302. package/dest/public/utils.js +4 -21
  303. package/dest/server.d.ts +7 -4
  304. package/dest/server.d.ts.map +1 -1
  305. package/dest/server.js +5 -2
  306. package/dest/testing.d.ts +2 -0
  307. package/dest/testing.d.ts.map +1 -0
  308. package/dest/testing.js +1 -0
  309. package/package.json +39 -33
  310. package/src/client.ts +5 -3
  311. package/src/common/errors.ts +80 -45
  312. package/src/common/index.ts +0 -1
  313. package/src/private/acvm/acvm.ts +21 -35
  314. package/src/private/acvm/acvm_types.ts +1 -1
  315. package/src/private/acvm/deserialize.ts +36 -30
  316. package/src/private/acvm/index.ts +0 -1
  317. package/src/private/acvm/serialize.ts +64 -1
  318. package/src/private/{providers/acvm_native.ts → acvm_native.ts} +57 -28
  319. package/src/private/acvm_wasm.ts +76 -0
  320. package/src/private/acvm_wasm_with_blobs.ts +54 -0
  321. package/src/private/circuit_recording/circuit_recorder.ts +263 -0
  322. package/src/private/circuit_recording/file_circuit_recorder.ts +163 -0
  323. package/src/private/circuit_recording/memory_circuit_recorder.ts +13 -0
  324. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +91 -0
  325. package/src/private/circuit_simulator.ts +90 -0
  326. package/src/private/{providers/factory.ts → factory.ts} +13 -10
  327. package/src/public/avm/avm_context.ts +6 -6
  328. package/src/public/avm/avm_contract_call_result.ts +23 -9
  329. package/src/public/avm/avm_execution_environment.ts +17 -5
  330. package/src/public/avm/avm_gas.ts +26 -38
  331. package/src/public/avm/avm_machine_state.ts +12 -6
  332. package/src/public/avm/avm_memory_types.ts +24 -7
  333. package/src/public/avm/avm_simulator.ts +57 -62
  334. package/src/public/avm/avm_simulator_interface.ts +8 -0
  335. package/src/public/avm/calldata.ts +100 -0
  336. package/src/public/avm/errors.ts +20 -75
  337. package/src/public/avm/fixtures/avm_simulation_tester.ts +41 -24
  338. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +46 -13
  339. package/src/public/avm/fixtures/initializers.ts +103 -0
  340. package/src/public/avm/fixtures/utils.ts +151 -0
  341. package/src/public/avm/index.ts +0 -2
  342. package/src/public/avm/opcodes/accrued_substate.ts +81 -48
  343. package/src/public/avm/opcodes/addressing_mode.ts +56 -32
  344. package/src/public/avm/opcodes/arithmetic.ts +37 -3
  345. package/src/public/avm/opcodes/bitwise.ts +33 -29
  346. package/src/public/avm/opcodes/comparators.ts +6 -3
  347. package/src/public/avm/opcodes/contract.ts +10 -10
  348. package/src/public/avm/opcodes/control_flow.ts +19 -10
  349. package/src/public/avm/opcodes/conversion.ts +29 -5
  350. package/src/public/avm/opcodes/ec_add.ts +22 -10
  351. package/src/public/avm/opcodes/environment_getters.ts +28 -23
  352. package/src/public/avm/opcodes/external_calls.ts +70 -36
  353. package/src/public/avm/opcodes/hashing.ts +39 -13
  354. package/src/public/avm/opcodes/instruction.ts +31 -21
  355. package/src/public/avm/opcodes/instruction_impl.ts +2 -2
  356. package/src/public/avm/opcodes/memory.ts +81 -42
  357. package/src/public/avm/opcodes/misc.ts +61 -19
  358. package/src/public/avm/opcodes/storage.ts +47 -23
  359. package/src/public/avm/revert_reason.ts +58 -0
  360. package/src/public/avm/serialization/buffer_cursor.ts +4 -1
  361. package/src/public/avm/serialization/bytecode_serialization.ts +89 -80
  362. package/src/public/avm/serialization/instruction_serialization.ts +75 -34
  363. package/src/public/avm/test_utils.ts +25 -42
  364. package/src/public/contracts_db_checkpoint.ts +41 -0
  365. package/src/public/db_interfaces.ts +76 -0
  366. package/src/public/debug_fn_name.ts +52 -0
  367. package/src/public/executor_metrics.ts +49 -23
  368. package/src/public/executor_metrics_interface.ts +15 -0
  369. package/src/public/fixtures/amm_test.ts +331 -0
  370. package/src/public/fixtures/bulk_test.ts +169 -0
  371. package/src/public/fixtures/custom_bytecode_tester.ts +83 -0
  372. package/src/public/fixtures/custom_bytecode_tests.ts +228 -0
  373. package/src/public/fixtures/index.ts +13 -0
  374. package/src/public/fixtures/minimal_public_tx.ts +26 -0
  375. package/src/public/fixtures/opcode_spammer.ts +1721 -0
  376. package/src/public/fixtures/public_tx_simulation_tester.ts +223 -114
  377. package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +37 -20
  378. package/src/public/fixtures/token_test.ts +148 -0
  379. package/src/public/fixtures/utils.ts +141 -69
  380. package/src/public/fuzzing/avm_fuzzer_simulator.ts +288 -0
  381. package/src/public/fuzzing/avm_simulator_bin.ts +175 -0
  382. package/src/public/hinting_db_sources.ts +607 -0
  383. package/src/public/index.ts +11 -8
  384. package/src/public/public_db_sources.ts +290 -260
  385. package/src/public/public_errors.ts +14 -0
  386. package/src/public/public_processor/guarded_merkle_tree.ts +158 -0
  387. package/src/public/public_processor/public_processor.ts +257 -179
  388. package/src/public/public_processor/public_processor_metrics.ts +18 -46
  389. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +124 -0
  390. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +211 -0
  391. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +134 -0
  392. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +239 -0
  393. package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +83 -0
  394. package/src/public/public_tx_simulator/factories.ts +43 -0
  395. package/src/public/public_tx_simulator/index.ts +7 -0
  396. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +105 -0
  397. package/src/public/public_tx_simulator/public_tx_context.ts +179 -199
  398. package/src/public/public_tx_simulator/public_tx_simulator.ts +316 -263
  399. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +33 -0
  400. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +63 -0
  401. package/src/public/side_effect_errors.ts +91 -1
  402. package/src/public/side_effect_trace.ts +99 -322
  403. package/src/public/side_effect_trace_interface.ts +11 -59
  404. package/src/public/state_manager/index.ts +1 -0
  405. package/src/public/{avm/journal → state_manager}/nullifiers.ts +6 -12
  406. package/src/public/{avm/journal → state_manager}/public_storage.ts +3 -3
  407. package/src/public/state_manager/state_manager.ts +569 -0
  408. package/src/public/test_executor_metrics.ts +397 -0
  409. package/src/public/utils.ts +5 -21
  410. package/src/server.ts +6 -3
  411. package/src/testing.ts +1 -0
  412. package/dest/common/db_interfaces.d.ts +0 -80
  413. package/dest/common/db_interfaces.d.ts.map +0 -1
  414. package/dest/common/db_interfaces.js +0 -1
  415. package/dest/common/debug_fn_name.d.ts +0 -5
  416. package/dest/common/debug_fn_name.d.ts.map +0 -1
  417. package/dest/common/debug_fn_name.js +0 -6
  418. package/dest/common/message_load_oracle_inputs.d.ts +0 -15
  419. package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
  420. package/dest/common/message_load_oracle_inputs.js +0 -15
  421. package/dest/private/acvm/oracle/index.d.ts +0 -14
  422. package/dest/private/acvm/oracle/index.d.ts.map +0 -1
  423. package/dest/private/acvm/oracle/index.js +0 -2
  424. package/dest/private/acvm/oracle/oracle.d.ts +0 -49
  425. package/dest/private/acvm/oracle/oracle.d.ts.map +0 -1
  426. package/dest/private/acvm/oracle/oracle.js +0 -263
  427. package/dest/private/acvm/oracle/typed_oracle.d.ts +0 -83
  428. package/dest/private/acvm/oracle/typed_oracle.d.ts.map +0 -1
  429. package/dest/private/acvm/oracle/typed_oracle.js +0 -132
  430. package/dest/private/execution_data_provider.d.ts +0 -261
  431. package/dest/private/execution_data_provider.d.ts.map +0 -1
  432. package/dest/private/execution_data_provider.js +0 -14
  433. package/dest/private/execution_note_cache.d.ts +0 -93
  434. package/dest/private/execution_note_cache.d.ts.map +0 -1
  435. package/dest/private/execution_note_cache.js +0 -180
  436. package/dest/private/hashed_values_cache.d.ts +0 -28
  437. package/dest/private/hashed_values_cache.d.ts.map +0 -1
  438. package/dest/private/hashed_values_cache.js +0 -46
  439. package/dest/private/index.d.ts +0 -13
  440. package/dest/private/index.d.ts.map +0 -1
  441. package/dest/private/index.js +0 -12
  442. package/dest/private/pick_notes.d.ts +0 -85
  443. package/dest/private/pick_notes.d.ts.map +0 -1
  444. package/dest/private/pick_notes.js +0 -51
  445. package/dest/private/private_execution.d.ts +0 -25
  446. package/dest/private/private_execution.d.ts.map +0 -1
  447. package/dest/private/private_execution.js +0 -92
  448. package/dest/private/private_execution_oracle.d.ts +0 -215
  449. package/dest/private/private_execution_oracle.d.ts.map +0 -1
  450. package/dest/private/private_execution_oracle.js +0 -382
  451. package/dest/private/providers/acvm_native.d.ts +0 -40
  452. package/dest/private/providers/acvm_native.d.ts.map +0 -1
  453. package/dest/private/providers/acvm_wasm.d.ts +0 -15
  454. package/dest/private/providers/acvm_wasm.d.ts.map +0 -1
  455. package/dest/private/providers/acvm_wasm.js +0 -62
  456. package/dest/private/providers/acvm_wasm_with_blobs.d.ts +0 -19
  457. package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
  458. package/dest/private/providers/acvm_wasm_with_blobs.js +0 -32
  459. package/dest/private/providers/factory.d.ts +0 -12
  460. package/dest/private/providers/factory.d.ts.map +0 -1
  461. package/dest/private/providers/simulation_provider.d.ts +0 -19
  462. package/dest/private/providers/simulation_provider.d.ts.map +0 -1
  463. package/dest/private/providers/simulation_provider.js +0 -24
  464. package/dest/private/simulator.d.ts +0 -34
  465. package/dest/private/simulator.d.ts.map +0 -1
  466. package/dest/private/simulator.js +0 -76
  467. package/dest/private/unconstrained_execution.d.ts +0 -10
  468. package/dest/private/unconstrained_execution.d.ts.map +0 -1
  469. package/dest/private/unconstrained_execution.js +0 -27
  470. package/dest/private/unconstrained_execution_oracle.d.ts +0 -161
  471. package/dest/private/unconstrained_execution_oracle.d.ts.map +0 -1
  472. package/dest/private/unconstrained_execution_oracle.js +0 -258
  473. package/dest/public/avm/bytecode_utils.d.ts +0 -5
  474. package/dest/public/avm/bytecode_utils.d.ts.map +0 -1
  475. package/dest/public/avm/bytecode_utils.js +0 -17
  476. package/dest/public/avm/fixtures/index.d.ts +0 -84
  477. package/dest/public/avm/fixtures/index.d.ts.map +0 -1
  478. package/dest/public/avm/fixtures/index.js +0 -175
  479. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts +0 -35
  480. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
  481. package/dest/public/avm/journal/index.d.ts +0 -2
  482. package/dest/public/avm/journal/index.d.ts.map +0 -1
  483. package/dest/public/avm/journal/index.js +0 -1
  484. package/dest/public/avm/journal/journal.d.ts +0 -209
  485. package/dest/public/avm/journal/journal.d.ts.map +0 -1
  486. package/dest/public/avm/journal/journal.js +0 -486
  487. package/dest/public/avm/journal/nullifiers.d.ts.map +0 -1
  488. package/dest/public/avm/journal/public_storage.d.ts.map +0 -1
  489. package/dest/public/bytecode_errors.d.ts +0 -4
  490. package/dest/public/bytecode_errors.d.ts.map +0 -1
  491. package/dest/public/bytecode_errors.js +0 -6
  492. package/dest/public/execution.d.ts +0 -108
  493. package/dest/public/execution.d.ts.map +0 -1
  494. package/dest/public/execution.js +0 -9
  495. package/dest/public/tx_contract_cache.d.ts +0 -41
  496. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  497. package/dest/public/tx_contract_cache.js +0 -49
  498. package/dest/test/utils.d.ts +0 -13
  499. package/dest/test/utils.d.ts.map +0 -1
  500. package/dest/test/utils.js +0 -22
  501. package/src/common/db_interfaces.ts +0 -94
  502. package/src/common/debug_fn_name.ts +0 -18
  503. package/src/common/message_load_oracle_inputs.ts +0 -15
  504. package/src/private/acvm/oracle/index.ts +0 -16
  505. package/src/private/acvm/oracle/oracle.ts +0 -455
  506. package/src/private/acvm/oracle/typed_oracle.ts +0 -259
  507. package/src/private/execution_data_provider.ts +0 -323
  508. package/src/private/execution_note_cache.ts +0 -217
  509. package/src/private/hashed_values_cache.ts +0 -55
  510. package/src/private/index.ts +0 -16
  511. package/src/private/pick_notes.ts +0 -141
  512. package/src/private/private_execution.ts +0 -151
  513. package/src/private/private_execution_oracle.ts +0 -614
  514. package/src/private/providers/acvm_wasm.ts +0 -63
  515. package/src/private/providers/acvm_wasm_with_blobs.ts +0 -50
  516. package/src/private/providers/simulation_provider.ts +0 -45
  517. package/src/private/simulator.ts +0 -147
  518. package/src/private/unconstrained_execution.ts +0 -50
  519. package/src/private/unconstrained_execution_oracle.ts +0 -373
  520. package/src/public/avm/bytecode_utils.ts +0 -17
  521. package/src/public/avm/fixtures/index.ts +0 -296
  522. package/src/public/avm/journal/index.ts +0 -1
  523. package/src/public/avm/journal/journal.ts +0 -742
  524. package/src/public/avm/opcodes/.eslintrc.cjs +0 -8
  525. package/src/public/bytecode_errors.ts +0 -6
  526. package/src/public/execution.ts +0 -140
  527. package/src/public/tx_contract_cache.ts +0 -69
  528. package/src/test/utils.ts +0 -36
@@ -3,10 +3,12 @@ import { StaticCallAlterationError } from '../errors.js';
3
3
  import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
4
4
  import { Addressing } from './addressing_mode.js';
5
5
  import { Instruction } from './instruction.js';
6
- class BaseStorageInstruction extends Instruction {
7
- indirect;
8
- aOffset;
9
- bOffset;
6
+ export class SStore extends Instruction {
7
+ addressingMode;
8
+ srcOffset;
9
+ slotOffset;
10
+ static type = 'SSTORE';
11
+ static opcode = Opcode.SSTORE;
10
12
  // Informs (de)serialization. See Instruction.deserialize.
11
13
  static wireFormat = [
12
14
  OperandType.UINT8,
@@ -14,53 +16,63 @@ class BaseStorageInstruction extends Instruction {
14
16
  OperandType.UINT16,
15
17
  OperandType.UINT16
16
18
  ];
17
- constructor(indirect, aOffset, bOffset){
18
- super(), this.indirect = indirect, this.aOffset = aOffset, this.bOffset = bOffset;
19
- }
20
- }
21
- export class SStore extends BaseStorageInstruction {
22
- static type = 'SSTORE';
23
- static opcode = Opcode.SSTORE;
24
- constructor(indirect, srcOffset, slotOffset){
25
- super(indirect, srcOffset, slotOffset);
19
+ constructor(addressingMode, srcOffset, slotOffset){
20
+ super(), this.addressingMode = addressingMode, this.srcOffset = srcOffset, this.slotOffset = slotOffset;
26
21
  }
27
22
  async execute(context) {
28
23
  if (context.environment.isStaticCall) {
29
24
  throw new StaticCallAlterationError();
30
25
  }
31
26
  const memory = context.machineState.memory;
32
- context.machineState.consumeGas(this.gasCost());
27
+ const addressing = Addressing.fromWire(this.addressingMode);
28
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
33
29
  const operands = [
34
- this.aOffset,
35
- this.bOffset
30
+ this.srcOffset,
31
+ this.slotOffset
36
32
  ];
37
- const addressing = Addressing.fromWire(this.indirect, operands.length);
38
33
  const [srcOffset, slotOffset] = addressing.resolve(operands, memory);
34
+ // We read before tag checking since it's needed for gas cost calculation
35
+ const slot = memory.get(slotOffset).toFr();
36
+ context.machineState.consumeGas(this.dynamicGasCost(Number(context.persistableState.isStorageCold(context.environment.address, slot))));
39
37
  memory.checkTag(TypeTag.FIELD, slotOffset);
40
38
  memory.checkTag(TypeTag.FIELD, srcOffset);
41
- const slot = memory.get(slotOffset).toFr();
42
39
  const value = memory.get(srcOffset).toFr();
43
40
  await context.persistableState.writeStorage(context.environment.address, slot, value);
44
41
  }
45
42
  }
46
- export class SLoad extends BaseStorageInstruction {
43
+ export class SLoad extends Instruction {
44
+ addressingMode;
45
+ slotOffset;
46
+ contractAddressOffset;
47
+ dstOffset;
47
48
  static type = 'SLOAD';
48
49
  static opcode = Opcode.SLOAD;
49
- constructor(indirect, slotOffset, dstOffset){
50
- super(indirect, slotOffset, dstOffset);
50
+ // Informs (de)serialization. See Instruction.deserialize.
51
+ static wireFormat = [
52
+ OperandType.UINT8,
53
+ OperandType.UINT8,
54
+ OperandType.UINT16,
55
+ OperandType.UINT16,
56
+ OperandType.UINT16
57
+ ];
58
+ constructor(addressingMode, slotOffset, contractAddressOffset, dstOffset){
59
+ super(), this.addressingMode = addressingMode, this.slotOffset = slotOffset, this.contractAddressOffset = contractAddressOffset, this.dstOffset = dstOffset;
51
60
  }
52
61
  async execute(context) {
53
62
  const memory = context.machineState.memory;
54
- context.machineState.consumeGas(this.gasCost());
63
+ const addressing = Addressing.fromWire(this.addressingMode);
64
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
55
65
  const operands = [
56
- this.aOffset,
57
- this.bOffset
66
+ this.slotOffset,
67
+ this.contractAddressOffset,
68
+ this.dstOffset
58
69
  ];
59
- const addressing = Addressing.fromWire(this.indirect, operands.length);
60
- const [slotOffset, dstOffset] = addressing.resolve(operands, memory);
70
+ const [slotOffset, contractAddressOffset, dstOffset] = addressing.resolve(operands, memory);
61
71
  memory.checkTag(TypeTag.FIELD, slotOffset);
72
+ memory.checkTag(TypeTag.FIELD, contractAddressOffset);
62
73
  const slot = memory.get(slotOffset).toFr();
63
- const value = await context.persistableState.readStorage(context.environment.address, slot);
74
+ const contractAddress = memory.get(contractAddressOffset).toAztecAddress();
75
+ const value = await context.persistableState.readStorage(contractAddress, slot);
64
76
  memory.set(dstOffset, new Field(value));
65
77
  }
66
78
  }
@@ -0,0 +1,18 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { AvmContext } from './avm_context.js';
3
+ import { type AvmExecutionError, AvmRevertReason } from './errors.js';
4
+ /**
5
+ * Create a "revert reason" error for an exceptional halt.
6
+ *
7
+ * @param haltingError - the lower-level error causing the exceptional halt
8
+ * @param context - the context of the AVM execution used to extract the failingFunction and noirCallStack
9
+ */
10
+ export declare function revertReasonFromExceptionalHalt(haltingError: AvmExecutionError, context: AvmContext): Promise<AvmRevertReason>;
11
+ /**
12
+ * Create a "revert reason" error for an explicit revert (a root cause).
13
+ *
14
+ * @param revertData - output data of the explicit REVERT instruction
15
+ * @param context - the context of the AVM execution used to extract the failingFunction and noirCallStack
16
+ */
17
+ export declare function revertReasonFromExplicitRevert(revertData: Fr[], context: AvmContext): Promise<AvmRevertReason>;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2ZXJ0X3JlYXNvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vcmV2ZXJ0X3JlYXNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFpQ3RFOzs7OztHQUtHO0FBQ0gsd0JBQXNCLCtCQUErQixDQUNuRCxZQUFZLEVBQUUsaUJBQWlCLEVBQy9CLE9BQU8sRUFBRSxVQUFVLEdBQ2xCLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FFMUI7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFzQiw4QkFBOEIsQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBRXBIIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revert_reason.d.ts","sourceRoot":"","sources":["../../../src/public/avm/revert_reason.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAiCtE;;;;;GAKG;AACH,wBAAsB,+BAA+B,CACnD,YAAY,EAAE,iBAAiB,EAC/B,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAEpH"}
@@ -0,0 +1,39 @@
1
+ import { AvmRevertReason } from './errors.js';
2
+ async function createRevertReason(message, revertData, context) {
3
+ // We drop the returnPc information.
4
+ const internalCallStack = context.machineState.internalCallStack.map((entry)=>entry.callPc);
5
+ // If we are reverting due to the same error that we have been tracking, we use the nested error as the cause.
6
+ let nestedError = undefined;
7
+ const revertDataEquals = (a, b)=>a.length === b.length && a.every((v, i)=>v.equals(b[i]));
8
+ if (context.machineState.collectedRevertInfo && revertDataEquals(context.machineState.collectedRevertInfo.revertDataRepresentative, revertData)) {
9
+ nestedError = context.machineState.collectedRevertInfo.recursiveRevertReason;
10
+ message = context.machineState.collectedRevertInfo.recursiveRevertReason.message;
11
+ }
12
+ const { functionSelector, functionName } = await context.persistableState.getPublicFunctionSelectorAndName(context.environment);
13
+ return new AvmRevertReason(message, /*failingFunction=*/ {
14
+ contractAddress: context.environment.address,
15
+ functionSelector,
16
+ functionName
17
+ }, /*noirCallStack=*/ [
18
+ ...internalCallStack,
19
+ context.machineState.pc
20
+ ].map((pc)=>`0.${pc}`), /*options=*/ {
21
+ cause: nestedError
22
+ });
23
+ }
24
+ /**
25
+ * Create a "revert reason" error for an exceptional halt.
26
+ *
27
+ * @param haltingError - the lower-level error causing the exceptional halt
28
+ * @param context - the context of the AVM execution used to extract the failingFunction and noirCallStack
29
+ */ export async function revertReasonFromExceptionalHalt(haltingError, context) {
30
+ return await createRevertReason(haltingError.message, [], context);
31
+ }
32
+ /**
33
+ * Create a "revert reason" error for an explicit revert (a root cause).
34
+ *
35
+ * @param revertData - output data of the explicit REVERT instruction
36
+ * @param context - the context of the AVM execution used to extract the failingFunction and noirCallStack
37
+ */ export async function revertReasonFromExplicitRevert(revertData, context) {
38
+ return await createRevertReason('Assertion failed: ', revertData, context);
39
+ }
@@ -1,5 +1,3 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
1
  export declare class BufferCursor {
4
2
  private _buffer;
5
3
  private _position;
@@ -25,4 +23,4 @@ export declare class BufferCursor {
25
23
  writeBigInt64LE(v: bigint): number;
26
24
  writeBigInt64BE(v: bigint): number;
27
25
  }
28
- //# sourceMappingURL=buffer_cursor.d.ts.map
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyX2N1cnNvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vc2VyaWFsaXphdGlvbi9idWZmZXJfY3Vyc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLHFCQUFhLFlBQVk7SUFFckIsT0FBTyxDQUFDLE9BQU87SUFDZixPQUFPLENBQUMsU0FBUztJQUZuQixZQUNVLE9BQU8sRUFBRSxNQUFNLEVBQ2YsU0FBUyxHQUFFLE1BQVUsRUFDM0I7SUFFRyxRQUFRLElBQUksTUFBTSxDQUV4QjtJQUVNLE1BQU0sSUFBSSxNQUFNLENBRXRCO0lBRU0sR0FBRyxJQUFJLE9BQU8sQ0FFcEI7SUFFTSxnQkFBZ0IsSUFBSSxNQUFNLENBRWhDO0lBRU0sT0FBTyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUU5QjtJQUVNLFNBQVMsSUFBSSxNQUFNLENBR3pCO0lBRU0sU0FBUyxJQUFJLE1BQU0sQ0FJekI7SUFFTSxZQUFZLElBQUksTUFBTSxDQUk1QjtJQUVNLFlBQVksSUFBSSxNQUFNLENBSTVCO0lBRU0sWUFBWSxJQUFJLE1BQU0sQ0FJNUI7SUFFTSxZQUFZLElBQUksTUFBTSxDQUk1QjtJQUVNLGNBQWMsSUFBSSxNQUFNLENBSTlCO0lBRU0sY0FBYyxJQUFJLE1BQU0sQ0FJOUI7SUFFTSxVQUFVLENBQUMsQ0FBQyxFQUFFLE1BQU0sVUFJMUI7SUFFTSxhQUFhLENBQUMsQ0FBQyxFQUFFLE1BQU0sVUFJN0I7SUFFTSxhQUFhLENBQUMsQ0FBQyxFQUFFLE1BQU0sVUFJN0I7SUFFTSxhQUFhLENBQUMsQ0FBQyxFQUFFLE1BQU0sVUFJN0I7SUFFTSxhQUFhLENBQUMsQ0FBQyxFQUFFLE1BQU0sVUFJN0I7SUFFTSxlQUFlLENBQUMsQ0FBQyxFQUFFLE1BQU0sVUFJL0I7SUFFTSxlQUFlLENBQUMsQ0FBQyxFQUFFLE1BQU0sVUFJL0I7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"buffer_cursor.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/serialization/buffer_cursor.ts"],"names":[],"mappings":";;AAGA,qBAAa,YAAY;IACX,OAAO,CAAC,OAAO;IAAU,OAAO,CAAC,SAAS;gBAAlC,OAAO,EAAE,MAAM,EAAU,SAAS,GAAE,MAAU;IAE3D,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,MAAM;IAIhB,GAAG,IAAI,OAAO;IAId,gBAAgB,IAAI,MAAM;IAI1B,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAIxB,SAAS,IAAI,MAAM;IAKnB,SAAS,IAAI,MAAM;IAMnB,YAAY,IAAI,MAAM;IAMtB,YAAY,IAAI,MAAM;IAMtB,YAAY,IAAI,MAAM;IAMtB,YAAY,IAAI,MAAM;IAMtB,cAAc,IAAI,MAAM;IAMxB,cAAc,IAAI,MAAM;IAMxB,UAAU,CAAC,CAAC,EAAE,MAAM;IAMpB,aAAa,CAAC,CAAC,EAAE,MAAM;IAMvB,aAAa,CAAC,CAAC,EAAE,MAAM;IAMvB,aAAa,CAAC,CAAC,EAAE,MAAM;IAMvB,aAAa,CAAC,CAAC,EAAE,MAAM;IAMvB,eAAe,CAAC,CAAC,EAAE,MAAM;IAMzB,eAAe,CAAC,CAAC,EAAE,MAAM;CAKjC"}
1
+ {"version":3,"file":"buffer_cursor.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/serialization/buffer_cursor.ts"],"names":[],"mappings":"AAGA,qBAAa,YAAY;IAErB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,SAAS;IAFnB,YACU,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAU,EAC3B;IAEG,QAAQ,IAAI,MAAM,CAExB;IAEM,MAAM,IAAI,MAAM,CAEtB;IAEM,GAAG,IAAI,OAAO,CAEpB;IAEM,gBAAgB,IAAI,MAAM,CAEhC;IAEM,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAE9B;IAEM,SAAS,IAAI,MAAM,CAGzB;IAEM,SAAS,IAAI,MAAM,CAIzB;IAEM,YAAY,IAAI,MAAM,CAI5B;IAEM,YAAY,IAAI,MAAM,CAI5B;IAEM,YAAY,IAAI,MAAM,CAI5B;IAEM,YAAY,IAAI,MAAM,CAI5B;IAEM,cAAc,IAAI,MAAM,CAI9B;IAEM,cAAc,IAAI,MAAM,CAI9B;IAEM,UAAU,CAAC,CAAC,EAAE,MAAM,UAI1B;IAEM,aAAa,CAAC,CAAC,EAAE,MAAM,UAI7B;IAEM,aAAa,CAAC,CAAC,EAAE,MAAM,UAI7B;IAEM,aAAa,CAAC,CAAC,EAAE,MAAM,UAI7B;IAEM,aAAa,CAAC,CAAC,EAAE,MAAM,UAI7B;IAEM,eAAe,CAAC,CAAC,EAAE,MAAM,UAI/B;IAEM,eAAe,CAAC,CAAC,EAAE,MAAM,UAI/B;CACF"}
@@ -1,12 +1,8 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
1
+ import { type Bufferable } from '@aztec/foundation/serialize';
3
2
  import { Instruction } from '../opcodes/index.js';
4
3
  import { BufferCursor } from './buffer_cursor.js';
5
4
  import { Opcode } from './instruction_serialization.js';
6
5
  export type InstructionDeserializer = (buf: BufferCursor | Buffer) => Instruction;
7
- export interface Serializable {
8
- serialize(): Buffer;
9
- }
10
6
  export interface Deserializable {
11
7
  deserialize: InstructionDeserializer;
12
8
  }
@@ -15,7 +11,7 @@ export declare const INSTRUCTION_SET: Map<Opcode, InstructionDeserializer>;
15
11
  /**
16
12
  * Serializes an array of instructions to bytecode.
17
13
  */
18
- export declare function encodeToBytecode(instructions: Serializable[]): Buffer;
14
+ export declare function encodeToBytecode(instructions: Bufferable[]): Buffer;
19
15
  export declare function decodeFromBytecode(bytecode: Buffer, instructionSet?: InstructionSet): Instruction[];
20
16
  export declare function decodeInstructionFromBytecode(bytecode: Buffer, pc: number, instructionSet?: InstructionSet): [Instruction, number];
21
- //# sourceMappingURL=bytecode_serialization.d.ts.map
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZWNvZGVfc2VyaWFsaXphdGlvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vc2VyaWFsaXphdGlvbi9ieXRlY29kZV9zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQVVqRixPQUFPLEVBZ0JMLFdBQVcsRUFnQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFvQixNQUFNLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUxRSxNQUFNLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsWUFBWSxHQUFHLE1BQU0sS0FBSyxXQUFXLENBQUM7QUFFbEYsTUFBTSxXQUFXLGNBQWM7SUFDN0IsV0FBVyxFQUFFLHVCQUF1QixDQUFDO0NBQ3RDO0FBRUQsTUFBTSxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFDbEUsZUFBTyxNQUFNLGVBQWUsc0NBb0YxQixDQUFDO0FBRUg7O0dBRUc7QUFDSCx3QkFBZ0IsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FFbkU7QUFHRCx3QkFBZ0Isa0JBQWtCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxjQUFjLEdBQUUsY0FBZ0MsR0FBRyxXQUFXLEVBQUUsQ0FTcEg7QUFHRCx3QkFBZ0IsNkJBQTZCLENBQzNDLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLEVBQUUsRUFBRSxNQUFNLEVBQ1YsY0FBYyxHQUFFLGNBQWdDLEdBQy9DLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQW1DdkIifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"bytecode_serialization.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/serialization/bytecode_serialization.ts"],"names":[],"mappings":";;AACA,OAAO,EAgBL,WAAW,EAgCZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAoB,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAE1E,MAAM,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,KAAK,WAAW,CAAC;AAElF,MAAM,WAAW,YAAY;IAC3B,SAAS,IAAI,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,uBAAuB,CAAC;CACtC;AAED,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAClE,eAAO,MAAM,eAAe,sCAoF1B,CAAC;AAEH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,MAAM,CAErE;AAGD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,GAAE,cAAgC,GAAG,WAAW,EAAE,CASpH;AAGD,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,cAAc,GAAE,cAAgC,GAC/C,CAAC,WAAW,EAAE,MAAM,CAAC,CA+BvB"}
1
+ {"version":3,"file":"bytecode_serialization.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/serialization/bytecode_serialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAqB,MAAM,6BAA6B,CAAC;AAUjF,OAAO,EAgBL,WAAW,EAgCZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAoB,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAE1E,MAAM,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,KAAK,WAAW,CAAC;AAElF,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,uBAAuB,CAAC;CACtC;AAED,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAClE,eAAO,MAAM,eAAe,sCAoF1B,CAAC;AAEH;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,MAAM,CAEnE;AAGD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,GAAE,cAAgC,GAAG,WAAW,EAAE,CASpH;AAGD,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,cAAc,GAAE,cAAgC,GAC/C,CAAC,WAAW,EAAE,MAAM,CAAC,CAmCvB"}
@@ -1,293 +1,294 @@
1
- import { AvmExecutionError, AvmParsingError, InvalidOpcodeError, InvalidProgramCounterError } from '../errors.js';
1
+ import { serializeToBuffer } from '@aztec/foundation/serialize';
2
+ import { AvmExecutionError, AvmParsingError, InvalidOpcodeError, InvalidProgramCounterError, InvalidTagValueError, duringInstrFetch } from '../errors.js';
2
3
  import { Add, And, Call, CalldataCopy, Cast, DebugLog, Div, EcAdd, EmitNoteHash, EmitNullifier, EmitUnencryptedLog, Eq, FieldDiv, GetContractInstance, GetEnvVar, Instruction, InternalCall, InternalReturn, Jump, JumpI, KeccakF1600, L1ToL2MessageExists, Lt, Lte, Mov, Mul, Not, NoteHashExists, NullifierExists, Or, Poseidon2, Return, ReturndataCopy, ReturndataSize, Revert, SLoad, SStore, SendL2ToL1Message, Set, Sha256Compression, Shl, Shr, StaticCall, Sub, SuccessCopy, ToRadixBE, Xor } from '../opcodes/index.js';
3
4
  import { BufferCursor } from './buffer_cursor.js';
4
5
  import { MAX_OPCODE_VALUE, Opcode } from './instruction_serialization.js';
5
6
  export const INSTRUCTION_SET = new Map([
6
7
  [
7
8
  Opcode.ADD_8,
8
- Add.as(Add.wireFormat8).deserialize
9
+ Add.as(Add.wireFormat8).fromBuffer
9
10
  ],
10
11
  [
11
12
  Opcode.ADD_16,
12
- Add.as(Add.wireFormat16).deserialize
13
+ Add.as(Add.wireFormat16).fromBuffer
13
14
  ],
14
15
  [
15
16
  Opcode.SUB_8,
16
- Sub.as(Sub.wireFormat8).deserialize
17
+ Sub.as(Sub.wireFormat8).fromBuffer
17
18
  ],
18
19
  [
19
20
  Opcode.SUB_16,
20
- Sub.as(Sub.wireFormat16).deserialize
21
+ Sub.as(Sub.wireFormat16).fromBuffer
21
22
  ],
22
23
  [
23
24
  Opcode.MUL_8,
24
- Mul.as(Mul.wireFormat8).deserialize
25
+ Mul.as(Mul.wireFormat8).fromBuffer
25
26
  ],
26
27
  [
27
28
  Opcode.MUL_16,
28
- Mul.as(Mul.wireFormat16).deserialize
29
+ Mul.as(Mul.wireFormat16).fromBuffer
29
30
  ],
30
31
  [
31
32
  Opcode.DIV_8,
32
- Div.as(Div.wireFormat8).deserialize
33
+ Div.as(Div.wireFormat8).fromBuffer
33
34
  ],
34
35
  [
35
36
  Opcode.DIV_16,
36
- Div.as(Div.wireFormat16).deserialize
37
+ Div.as(Div.wireFormat16).fromBuffer
37
38
  ],
38
39
  [
39
40
  Opcode.FDIV_8,
40
- FieldDiv.as(FieldDiv.wireFormat8).deserialize
41
+ FieldDiv.as(FieldDiv.wireFormat8).fromBuffer
41
42
  ],
42
43
  [
43
44
  Opcode.FDIV_16,
44
- FieldDiv.as(FieldDiv.wireFormat16).deserialize
45
+ FieldDiv.as(FieldDiv.wireFormat16).fromBuffer
45
46
  ],
46
47
  [
47
48
  Opcode.EQ_8,
48
- Eq.as(Eq.wireFormat8).deserialize
49
+ Eq.as(Eq.wireFormat8).fromBuffer
49
50
  ],
50
51
  [
51
52
  Opcode.EQ_16,
52
- Eq.as(Eq.wireFormat16).deserialize
53
+ Eq.as(Eq.wireFormat16).fromBuffer
53
54
  ],
54
55
  [
55
56
  Opcode.LT_8,
56
- Lt.as(Lt.wireFormat8).deserialize
57
+ Lt.as(Lt.wireFormat8).fromBuffer
57
58
  ],
58
59
  [
59
60
  Opcode.LT_16,
60
- Lt.as(Lt.wireFormat16).deserialize
61
+ Lt.as(Lt.wireFormat16).fromBuffer
61
62
  ],
62
63
  [
63
64
  Opcode.LTE_8,
64
- Lte.as(Lte.wireFormat8).deserialize
65
+ Lte.as(Lte.wireFormat8).fromBuffer
65
66
  ],
66
67
  [
67
68
  Opcode.LTE_16,
68
- Lte.as(Lte.wireFormat16).deserialize
69
+ Lte.as(Lte.wireFormat16).fromBuffer
69
70
  ],
70
71
  [
71
72
  Opcode.AND_8,
72
- And.as(And.wireFormat8).deserialize
73
+ And.as(And.wireFormat8).fromBuffer
73
74
  ],
74
75
  [
75
76
  Opcode.AND_16,
76
- And.as(And.wireFormat16).deserialize
77
+ And.as(And.wireFormat16).fromBuffer
77
78
  ],
78
79
  [
79
80
  Opcode.OR_8,
80
- Or.as(Or.wireFormat8).deserialize
81
+ Or.as(Or.wireFormat8).fromBuffer
81
82
  ],
82
83
  [
83
84
  Opcode.OR_16,
84
- Or.as(Or.wireFormat16).deserialize
85
+ Or.as(Or.wireFormat16).fromBuffer
85
86
  ],
86
87
  [
87
88
  Opcode.XOR_8,
88
- Xor.as(Xor.wireFormat8).deserialize
89
+ Xor.as(Xor.wireFormat8).fromBuffer
89
90
  ],
90
91
  [
91
92
  Opcode.XOR_16,
92
- Xor.as(Xor.wireFormat16).deserialize
93
+ Xor.as(Xor.wireFormat16).fromBuffer
93
94
  ],
94
95
  [
95
96
  Opcode.NOT_8,
96
- Not.as(Not.wireFormat8).deserialize
97
+ Not.as(Not.wireFormat8).fromBuffer
97
98
  ],
98
99
  [
99
100
  Opcode.NOT_16,
100
- Not.as(Not.wireFormat16).deserialize
101
+ Not.as(Not.wireFormat16).fromBuffer
101
102
  ],
102
103
  [
103
104
  Opcode.SHL_8,
104
- Shl.as(Shl.wireFormat8).deserialize
105
+ Shl.as(Shl.wireFormat8).fromBuffer
105
106
  ],
106
107
  [
107
108
  Opcode.SHL_16,
108
- Shl.as(Shl.wireFormat16).deserialize
109
+ Shl.as(Shl.wireFormat16).fromBuffer
109
110
  ],
110
111
  [
111
112
  Opcode.SHR_8,
112
- Shr.as(Shr.wireFormat8).deserialize
113
+ Shr.as(Shr.wireFormat8).fromBuffer
113
114
  ],
114
115
  [
115
116
  Opcode.SHR_16,
116
- Shr.as(Shr.wireFormat16).deserialize
117
+ Shr.as(Shr.wireFormat16).fromBuffer
117
118
  ],
118
119
  [
119
120
  Opcode.CAST_8,
120
- Cast.as(Cast.wireFormat8).deserialize
121
+ Cast.as(Cast.wireFormat8).fromBuffer
121
122
  ],
122
123
  [
123
124
  Opcode.CAST_16,
124
- Cast.as(Cast.wireFormat16).deserialize
125
+ Cast.as(Cast.wireFormat16).fromBuffer
125
126
  ],
126
127
  // Execution Environment
127
128
  [
128
129
  Opcode.GETENVVAR_16,
129
- GetEnvVar.as(GetEnvVar.wireFormat16).deserialize
130
+ GetEnvVar.as(GetEnvVar.wireFormat16).fromBuffer
130
131
  ],
131
132
  [
132
133
  CalldataCopy.opcode,
133
- Instruction.deserialize.bind(CalldataCopy)
134
+ Instruction.fromBuffer.bind(CalldataCopy)
134
135
  ],
135
136
  [
136
137
  SuccessCopy.opcode,
137
- Instruction.deserialize.bind(SuccessCopy)
138
+ Instruction.fromBuffer.bind(SuccessCopy)
138
139
  ],
139
140
  [
140
141
  Opcode.RETURNDATASIZE,
141
- Instruction.deserialize.bind(ReturndataSize)
142
+ Instruction.fromBuffer.bind(ReturndataSize)
142
143
  ],
143
144
  [
144
145
  Opcode.RETURNDATACOPY,
145
- Instruction.deserialize.bind(ReturndataCopy)
146
+ Instruction.fromBuffer.bind(ReturndataCopy)
146
147
  ],
147
148
  // Machine State - Internal Control Flow
148
149
  [
149
150
  Jump.opcode,
150
- Instruction.deserialize.bind(Jump)
151
+ Instruction.fromBuffer.bind(Jump)
151
152
  ],
152
153
  [
153
154
  JumpI.opcode,
154
- Instruction.deserialize.bind(JumpI)
155
+ Instruction.fromBuffer.bind(JumpI)
155
156
  ],
156
157
  [
157
158
  InternalCall.opcode,
158
- Instruction.deserialize.bind(InternalCall)
159
+ Instruction.fromBuffer.bind(InternalCall)
159
160
  ],
160
161
  [
161
162
  InternalReturn.opcode,
162
- Instruction.deserialize.bind(InternalReturn)
163
+ Instruction.fromBuffer.bind(InternalReturn)
163
164
  ],
164
165
  [
165
166
  Opcode.SET_8,
166
- Set.as(Set.wireFormat8).deserialize
167
+ Set.as(Set.wireFormat8).fromBuffer
167
168
  ],
168
169
  [
169
170
  Opcode.SET_16,
170
- Set.as(Set.wireFormat16).deserialize
171
+ Set.as(Set.wireFormat16).fromBuffer
171
172
  ],
172
173
  [
173
174
  Opcode.SET_32,
174
- Set.as(Set.wireFormat32).deserialize
175
+ Set.as(Set.wireFormat32).fromBuffer
175
176
  ],
176
177
  [
177
178
  Opcode.SET_64,
178
- Set.as(Set.wireFormat64).deserialize
179
+ Set.as(Set.wireFormat64).fromBuffer
179
180
  ],
180
181
  [
181
182
  Opcode.SET_128,
182
- Set.as(Set.wireFormat128).deserialize
183
+ Set.as(Set.wireFormat128).fromBuffer
183
184
  ],
184
185
  [
185
186
  Opcode.SET_FF,
186
- Set.as(Set.wireFormatFF).deserialize
187
+ Set.as(Set.wireFormatFF).fromBuffer
187
188
  ],
188
189
  [
189
190
  Opcode.MOV_8,
190
- Mov.as(Mov.wireFormat8).deserialize
191
+ Mov.as(Mov.wireFormat8).fromBuffer
191
192
  ],
192
193
  [
193
194
  Opcode.MOV_16,
194
- Mov.as(Mov.wireFormat16).deserialize
195
+ Mov.as(Mov.wireFormat16).fromBuffer
195
196
  ],
196
197
  // World State
197
198
  [
198
199
  SLoad.opcode,
199
- Instruction.deserialize.bind(SLoad)
200
+ Instruction.fromBuffer.bind(SLoad)
200
201
  ],
201
202
  [
202
203
  SStore.opcode,
203
- Instruction.deserialize.bind(SStore)
204
+ Instruction.fromBuffer.bind(SStore)
204
205
  ],
205
206
  [
206
207
  NoteHashExists.opcode,
207
- Instruction.deserialize.bind(NoteHashExists)
208
+ Instruction.fromBuffer.bind(NoteHashExists)
208
209
  ],
209
210
  [
210
211
  EmitNoteHash.opcode,
211
- Instruction.deserialize.bind(EmitNoteHash)
212
+ Instruction.fromBuffer.bind(EmitNoteHash)
212
213
  ],
213
214
  [
214
215
  NullifierExists.opcode,
215
- Instruction.deserialize.bind(NullifierExists)
216
+ Instruction.fromBuffer.bind(NullifierExists)
216
217
  ],
217
218
  [
218
219
  EmitNullifier.opcode,
219
- Instruction.deserialize.bind(EmitNullifier)
220
+ Instruction.fromBuffer.bind(EmitNullifier)
220
221
  ],
221
222
  [
222
223
  L1ToL2MessageExists.opcode,
223
- Instruction.deserialize.bind(L1ToL2MessageExists)
224
+ Instruction.fromBuffer.bind(L1ToL2MessageExists)
224
225
  ],
225
226
  // Accrued Substate
226
227
  [
227
228
  EmitUnencryptedLog.opcode,
228
- Instruction.deserialize.bind(EmitUnencryptedLog)
229
+ Instruction.fromBuffer.bind(EmitUnencryptedLog)
229
230
  ],
230
231
  [
231
232
  SendL2ToL1Message.opcode,
232
- Instruction.deserialize.bind(SendL2ToL1Message)
233
+ Instruction.fromBuffer.bind(SendL2ToL1Message)
233
234
  ],
234
235
  [
235
236
  GetContractInstance.opcode,
236
- Instruction.deserialize.bind(GetContractInstance)
237
+ Instruction.fromBuffer.bind(GetContractInstance)
237
238
  ],
238
239
  // Control Flow - Contract Calls
239
240
  [
240
241
  Call.opcode,
241
- Instruction.deserialize.bind(Call)
242
+ Instruction.fromBuffer.bind(Call)
242
243
  ],
243
244
  [
244
245
  StaticCall.opcode,
245
- Instruction.deserialize.bind(StaticCall)
246
+ Instruction.fromBuffer.bind(StaticCall)
246
247
  ],
247
248
  [
248
249
  Return.opcode,
249
- Instruction.deserialize.bind(Return)
250
+ Instruction.fromBuffer.bind(Return)
250
251
  ],
251
252
  [
252
253
  Opcode.REVERT_8,
253
- Revert.as(Revert.wireFormat8).deserialize
254
+ Revert.as(Revert.wireFormat8).fromBuffer
254
255
  ],
255
256
  [
256
257
  Opcode.REVERT_16,
257
- Revert.as(Revert.wireFormat16).deserialize
258
+ Revert.as(Revert.wireFormat16).fromBuffer
258
259
  ],
259
260
  // Misc
260
261
  [
261
262
  DebugLog.opcode,
262
- Instruction.deserialize.bind(DebugLog)
263
+ Instruction.fromBuffer.bind(DebugLog)
263
264
  ],
264
265
  // Gadgets
265
266
  [
266
267
  EcAdd.opcode,
267
- Instruction.deserialize.bind(EcAdd)
268
+ Instruction.fromBuffer.bind(EcAdd)
268
269
  ],
269
270
  [
270
271
  Poseidon2.opcode,
271
- Instruction.deserialize.bind(Poseidon2)
272
+ Instruction.fromBuffer.bind(Poseidon2)
272
273
  ],
273
274
  [
274
275
  Sha256Compression.opcode,
275
- Instruction.deserialize.bind(Sha256Compression)
276
+ Instruction.fromBuffer.bind(Sha256Compression)
276
277
  ],
277
278
  [
278
279
  KeccakF1600.opcode,
279
- Instruction.deserialize.bind(KeccakF1600)
280
+ Instruction.fromBuffer.bind(KeccakF1600)
280
281
  ],
281
282
  // Conversions
282
283
  [
283
284
  ToRadixBE.opcode,
284
- Instruction.deserialize.bind(ToRadixBE)
285
+ Instruction.fromBuffer.bind(ToRadixBE)
285
286
  ]
286
287
  ]);
287
288
  /**
288
289
  * Serializes an array of instructions to bytecode.
289
290
  */ export function encodeToBytecode(instructions) {
290
- return Buffer.concat(instructions.map((i)=>i.serialize()));
291
+ return serializeToBuffer(instructions);
291
292
  }
292
293
  // For testing only
293
294
  export function decodeFromBytecode(bytecode, instructionSet = INSTRUCTION_SET) {
@@ -303,14 +304,14 @@ export function decodeFromBytecode(bytecode, instructionSet = INSTRUCTION_SET) {
303
304
  // Returns the instruction and the number of bytes consumed.
304
305
  export function decodeInstructionFromBytecode(bytecode, pc, instructionSet = INSTRUCTION_SET) {
305
306
  if (pc >= bytecode.length) {
306
- throw new InvalidProgramCounterError(pc, bytecode.length);
307
+ throw new InvalidProgramCounterError(pc, bytecode.length - 1);
307
308
  }
308
309
  try {
309
310
  const cursor = new BufferCursor(bytecode, pc);
310
311
  const startingPosition = cursor.position();
311
312
  const opcode = cursor.bufferAtPosition().readUint8(); // peek.
312
313
  if (opcode > MAX_OPCODE_VALUE) {
313
- throw new InvalidOpcodeError(`Opcode ${opcode} (0x${opcode.toString(16)}) value is not in the range of valid opcodes.`);
314
+ throw new InvalidOpcodeError(`Opcode ${opcode} (0x${opcode.toString(16)}) value is not in the range of valid opcodes (at PC ${pc}).`);
314
315
  }
315
316
  const instructionDeserializerOrUndef = instructionSet.get(opcode);
316
317
  if (instructionDeserializerOrUndef === undefined) {
@@ -323,10 +324,13 @@ export function decodeInstructionFromBytecode(bytecode, pc, instructionSet = INS
323
324
  cursor.position() - startingPosition
324
325
  ];
325
326
  } catch (error) {
326
- if (error instanceof InvalidOpcodeError || error instanceof AvmExecutionError) {
327
- throw error;
327
+ if (error instanceof InvalidTagValueError || error instanceof InvalidOpcodeError) {
328
+ throw duringInstrFetch(error, pc);
329
+ } else if (error instanceof AvmExecutionError) {
330
+ throw new AvmParsingError(`Instruction parsing error at pc ${pc}: ${error.message}`);
328
331
  } else {
329
- throw new AvmParsingError(`${error}`);
332
+ const msg = error instanceof Error ? `: ${error.message}` : '';
333
+ throw new AvmParsingError(`Instruction fetching error at pc ${pc}${msg}`);
330
334
  }
331
335
  }
332
336
  }