@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
@@ -1,3 +1,5 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import { strict as assert } from 'assert';
1
3
  import { Field, TaggedMemory, TypeTag, Uint32 } from '../avm_memory_types.js';
2
4
  import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
3
5
  import { Addressing } from './addressing_mode.js';
@@ -14,57 +16,58 @@ export class Set extends Instruction {
14
16
  OperandType.UINT8,
15
17
  OperandType.UINT8,
16
18
  OperandType.UINT8,
17
- OperandType.UINT8,
19
+ OperandType.TAG,
18
20
  OperandType.UINT8
19
21
  ];
20
22
  static wireFormat16 = [
21
23
  OperandType.UINT8,
22
24
  OperandType.UINT8,
23
25
  OperandType.UINT16,
24
- OperandType.UINT8,
26
+ OperandType.TAG,
25
27
  OperandType.UINT16
26
28
  ];
27
29
  static wireFormat32 = [
28
30
  OperandType.UINT8,
29
31
  OperandType.UINT8,
30
32
  OperandType.UINT16,
31
- OperandType.UINT8,
33
+ OperandType.TAG,
32
34
  OperandType.UINT32
33
35
  ];
34
36
  static wireFormat64 = [
35
37
  OperandType.UINT8,
36
38
  OperandType.UINT8,
37
39
  OperandType.UINT16,
38
- OperandType.UINT8,
40
+ OperandType.TAG,
39
41
  OperandType.UINT64
40
42
  ];
41
43
  static wireFormat128 = [
42
44
  OperandType.UINT8,
43
45
  OperandType.UINT8,
44
46
  OperandType.UINT16,
45
- OperandType.UINT8,
47
+ OperandType.TAG,
46
48
  OperandType.UINT128
47
49
  ];
48
50
  static wireFormatFF = [
49
51
  OperandType.UINT8,
50
52
  OperandType.UINT8,
51
53
  OperandType.UINT16,
52
- OperandType.UINT8,
54
+ OperandType.TAG,
53
55
  OperandType.FF
54
56
  ];
55
57
  constructor(indirect, dstOffset, inTag, value){
56
58
  super(), this.indirect = indirect, this.dstOffset = dstOffset, this.inTag = inTag, this.value = value;
57
- TaggedMemory.checkIsValidTag(inTag);
59
+ assert(this.value >= 0, `Value ${this.value} is negative`);
60
+ assert(this.value < Fr.MODULUS, `Value ${this.value} is larger than Fr.MODULUS`);
58
61
  }
59
62
  async execute(context) {
60
63
  // Constructor ensured that this.inTag is a valid tag
61
64
  const res = TaggedMemory.buildFromTagTruncating(this.value, this.inTag);
62
65
  const memory = context.machineState.memory;
63
- context.machineState.consumeGas(this.gasCost());
66
+ const addressing = Addressing.fromWire(this.indirect);
67
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
64
68
  const operands = [
65
69
  this.dstOffset
66
70
  ];
67
- const addressing = Addressing.fromWire(this.indirect, operands.length);
68
71
  const [dstOffset] = addressing.resolve(operands, memory);
69
72
  memory.set(dstOffset, res);
70
73
  }
@@ -81,27 +84,26 @@ export class Cast extends Instruction {
81
84
  OperandType.UINT8,
82
85
  OperandType.UINT8,
83
86
  OperandType.UINT8,
84
- OperandType.UINT8
87
+ OperandType.TAG
85
88
  ];
86
89
  static wireFormat16 = [
87
90
  OperandType.UINT8,
88
91
  OperandType.UINT8,
89
92
  OperandType.UINT16,
90
93
  OperandType.UINT16,
91
- OperandType.UINT8
94
+ OperandType.TAG
92
95
  ];
93
96
  constructor(indirect, srcOffset, dstOffset, dstTag){
94
97
  super(), this.indirect = indirect, this.srcOffset = srcOffset, this.dstOffset = dstOffset, this.dstTag = dstTag;
95
- TaggedMemory.checkIsValidTag(dstTag);
96
98
  }
97
99
  async execute(context) {
98
100
  const memory = context.machineState.memory;
99
- context.machineState.consumeGas(this.gasCost());
101
+ const addressing = Addressing.fromWire(this.indirect);
102
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
100
103
  const operands = [
101
104
  this.srcOffset,
102
105
  this.dstOffset
103
106
  ];
104
- const addressing = Addressing.fromWire(this.indirect, operands.length);
105
107
  const [srcOffset, dstOffset] = addressing.resolve(operands, memory);
106
108
  const a = memory.get(srcOffset);
107
109
  // Constructor ensured that this.dstTag is a valid tag
@@ -133,12 +135,12 @@ export class Mov extends Instruction {
133
135
  }
134
136
  async execute(context) {
135
137
  const memory = context.machineState.memory;
136
- context.machineState.consumeGas(this.gasCost());
138
+ const addressing = Addressing.fromWire(this.indirect);
139
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
137
140
  const operands = [
138
141
  this.srcOffset,
139
142
  this.dstOffset
140
143
  ];
141
- const addressing = Addressing.fromWire(this.indirect, operands.length);
142
144
  const [srcOffset, dstOffset] = addressing.resolve(operands, memory);
143
145
  const a = memory.get(srcOffset);
144
146
  memory.set(dstOffset, a);
@@ -146,8 +148,8 @@ export class Mov extends Instruction {
146
148
  }
147
149
  export class CalldataCopy extends Instruction {
148
150
  indirect;
149
- cdStartOffset;
150
151
  copySizeOffset;
152
+ cdStartOffset;
151
153
  dstOffset;
152
154
  static type = 'CALLDATACOPY';
153
155
  static opcode = Opcode.CALLDATACOPY;
@@ -159,22 +161,23 @@ export class CalldataCopy extends Instruction {
159
161
  OperandType.UINT16,
160
162
  OperandType.UINT16
161
163
  ];
162
- constructor(indirect, cdStartOffset, copySizeOffset, dstOffset){
163
- super(), this.indirect = indirect, this.cdStartOffset = cdStartOffset, this.copySizeOffset = copySizeOffset, this.dstOffset = dstOffset;
164
+ constructor(indirect, copySizeOffset, cdStartOffset, dstOffset){
165
+ super(), this.indirect = indirect, this.copySizeOffset = copySizeOffset, this.cdStartOffset = cdStartOffset, this.dstOffset = dstOffset;
164
166
  }
165
167
  async execute(context) {
166
168
  const memory = context.machineState.memory;
169
+ const addressing = Addressing.fromWire(this.indirect);
170
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
167
171
  const operands = [
168
- this.cdStartOffset,
169
172
  this.copySizeOffset,
173
+ this.cdStartOffset,
170
174
  this.dstOffset
171
175
  ];
172
- const addressing = Addressing.fromWire(this.indirect, operands.length);
173
- const [cdStartOffset, copySizeOffset, dstOffset] = addressing.resolve(operands, memory);
176
+ const [copySizeOffset, cdStartOffset, dstOffset] = addressing.resolve(operands, memory);
174
177
  memory.checkTags(TypeTag.UINT32, cdStartOffset, copySizeOffset);
175
178
  const cdStart = memory.get(cdStartOffset).toNumber();
176
179
  const copySize = memory.get(copySizeOffset).toNumber();
177
- context.machineState.consumeGas(this.gasCost(copySize));
180
+ context.machineState.consumeGas(this.dynamicGasCost(copySize));
178
181
  // Values which are out-of-range of the calldata array will be set with Field(0);
179
182
  const slice = context.environment.calldata.slice(cdStart, cdStart + copySize).map((f)=>new Field(f));
180
183
  // slice has size = MIN(copySize, calldata.length - cdStart) as TS truncates out-of-range portion
@@ -201,19 +204,19 @@ export class ReturndataSize extends Instruction {
201
204
  }
202
205
  async execute(context) {
203
206
  const memory = context.machineState.memory;
207
+ const addressing = Addressing.fromWire(this.indirect);
208
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
204
209
  const operands = [
205
210
  this.dstOffset
206
211
  ];
207
- const addressing = Addressing.fromWire(this.indirect, operands.length);
208
212
  const [dstOffset] = addressing.resolve(operands, memory);
209
- context.machineState.consumeGas(this.gasCost());
210
213
  memory.set(dstOffset, new Uint32(context.machineState.nestedReturndata.length));
211
214
  }
212
215
  }
213
216
  export class ReturndataCopy extends Instruction {
214
217
  indirect;
215
- rdStartOffset;
216
218
  copySizeOffset;
219
+ rdStartOffset;
217
220
  dstOffset;
218
221
  static type = 'RETURNDATACOPY';
219
222
  static opcode = Opcode.RETURNDATACOPY;
@@ -225,22 +228,23 @@ export class ReturndataCopy extends Instruction {
225
228
  OperandType.UINT16,
226
229
  OperandType.UINT16
227
230
  ];
228
- constructor(indirect, rdStartOffset, copySizeOffset, dstOffset){
229
- super(), this.indirect = indirect, this.rdStartOffset = rdStartOffset, this.copySizeOffset = copySizeOffset, this.dstOffset = dstOffset;
231
+ constructor(indirect, copySizeOffset, rdStartOffset, dstOffset){
232
+ super(), this.indirect = indirect, this.copySizeOffset = copySizeOffset, this.rdStartOffset = rdStartOffset, this.dstOffset = dstOffset;
230
233
  }
231
234
  async execute(context) {
232
235
  const memory = context.machineState.memory;
236
+ const addressing = Addressing.fromWire(this.indirect);
237
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
233
238
  const operands = [
234
- this.rdStartOffset,
235
239
  this.copySizeOffset,
240
+ this.rdStartOffset,
236
241
  this.dstOffset
237
242
  ];
238
- const addressing = Addressing.fromWire(this.indirect, operands.length);
239
- const [rdStartOffset, copySizeOffset, dstOffset] = addressing.resolve(operands, memory);
243
+ const [copySizeOffset, rdStartOffset, dstOffset] = addressing.resolve(operands, memory);
240
244
  memory.checkTags(TypeTag.UINT32, rdStartOffset, copySizeOffset);
241
- const rdStart = memory.get(rdStartOffset).toNumber();
242
245
  const copySize = memory.get(copySizeOffset).toNumber();
243
- context.machineState.consumeGas(this.gasCost(copySize));
246
+ const rdStart = memory.get(rdStartOffset).toNumber();
247
+ context.machineState.consumeGas(this.dynamicGasCost(copySize));
244
248
  // Values which are out-of-range of the returndata array will be set with Field(0);
245
249
  const slice = context.machineState.nestedReturndata.slice(rdStart, rdStart + copySize).map((f)=>new Field(f));
246
250
  // slice has size = MIN(copySize, returndata.length - rdStart) as TS truncates out-of-range portion
@@ -3,6 +3,7 @@ import { Opcode, OperandType } from '../serialization/instruction_serialization.
3
3
  import { Instruction } from './instruction.js';
4
4
  export declare class DebugLog extends Instruction {
5
5
  private indirect;
6
+ private levelOffset;
6
7
  private messageOffset;
7
8
  private fieldsOffset;
8
9
  private fieldsSizeOffset;
@@ -11,7 +12,7 @@ export declare class DebugLog extends Instruction {
11
12
  static readonly opcode: Opcode;
12
13
  static readonly logger: import("@aztec/foundation/log").Logger;
13
14
  static readonly wireFormat: OperandType[];
14
- constructor(indirect: number, messageOffset: number, fieldsOffset: number, fieldsSizeOffset: number, messageSize: number);
15
+ constructor(indirect: number, levelOffset: number, messageOffset: number, fieldsOffset: number, fieldsSizeOffset: number, messageSize: number);
15
16
  execute(context: AvmContext): Promise<void>;
16
17
  }
17
- //# sourceMappingURL=misc.d.ts.map
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vb3Bjb2Rlcy9taXNjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLHFCQUFhLFFBQVMsU0FBUSxXQUFXO0lBaUJyQyxPQUFPLENBQUMsUUFBUTtJQUNoQixPQUFPLENBQUMsV0FBVztJQUNuQixPQUFPLENBQUMsYUFBYTtJQUNyQixPQUFPLENBQUMsWUFBWTtJQUNwQixPQUFPLENBQUMsZ0JBQWdCO0lBQ3hCLE9BQU8sQ0FBQyxXQUFXO0lBckJyQixNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBYztJQUNqQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQW1CO0lBQ2pELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSx5Q0FBMkM7SUFHakUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBUXZDO0lBRUYsWUFDVSxRQUFRLEVBQUUsTUFBTSxFQUNoQixXQUFXLEVBQUUsTUFBTSxFQUNuQixhQUFhLEVBQUUsTUFBTSxFQUNyQixZQUFZLEVBQUUsTUFBTSxFQUNwQixnQkFBZ0IsRUFBRSxNQUFNLEVBQ3hCLFdBQVcsRUFBRSxNQUFNLEVBRzVCO0lBRVksT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQWlFdkQ7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/misc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,QAAS,SAAQ,WAAW;IAgBrC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,WAAW;IAnBrB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAc;IACjC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAmB;IACjD,MAAM,CAAC,QAAQ,CAAC,MAAM,yCAA2C;IAGjE,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAOvC;gBAGQ,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM;IAKhB,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CA0BzD"}
1
+ {"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/misc.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,qBAAa,QAAS,SAAQ,WAAW;IAiBrC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,WAAW;IArBrB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAc;IACjC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAmB;IACjD,MAAM,CAAC,QAAQ,CAAC,MAAM,yCAA2C;IAGjE,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,CAQvC;IAEF,YACU,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,EAG5B;IAEY,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiEvD;CACF"}
@@ -1,10 +1,11 @@
1
- import { applyStringFormatting, createLogger } from '@aztec/foundation/log';
1
+ import { LogLevels, applyStringFormatting, createLogger } from '@aztec/foundation/log';
2
2
  import { TypeTag } from '../avm_memory_types.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
6
  export class DebugLog extends Instruction {
7
7
  indirect;
8
+ levelOffset;
8
9
  messageOffset;
9
10
  fieldsOffset;
10
11
  fieldsSizeOffset;
@@ -19,30 +20,54 @@ export class DebugLog extends Instruction {
19
20
  OperandType.UINT16,
20
21
  OperandType.UINT16,
21
22
  OperandType.UINT16,
23
+ OperandType.UINT16,
22
24
  OperandType.UINT16
23
25
  ];
24
- constructor(indirect, messageOffset, fieldsOffset, fieldsSizeOffset, messageSize){
25
- super(), this.indirect = indirect, this.messageOffset = messageOffset, this.fieldsOffset = fieldsOffset, this.fieldsSizeOffset = fieldsSizeOffset, this.messageSize = messageSize;
26
+ constructor(indirect, levelOffset, messageOffset, fieldsOffset, fieldsSizeOffset, messageSize){
27
+ super(), this.indirect = indirect, this.levelOffset = levelOffset, this.messageOffset = messageOffset, this.fieldsOffset = fieldsOffset, this.fieldsSizeOffset = fieldsSizeOffset, this.messageSize = messageSize;
26
28
  }
27
29
  async execute(context) {
28
30
  const memory = context.machineState.memory;
31
+ const addressing = Addressing.fromWire(this.indirect);
32
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
29
33
  const operands = [
34
+ this.levelOffset,
30
35
  this.messageOffset,
31
36
  this.fieldsOffset,
32
37
  this.fieldsSizeOffset
33
38
  ];
34
- const addressing = Addressing.fromWire(this.indirect, operands.length);
35
- const [messageOffset, fieldsOffset, fieldsSizeOffset] = addressing.resolve(operands, memory);
36
- memory.checkTag(TypeTag.UINT32, fieldsSizeOffset);
37
- const fieldsSize = memory.get(fieldsSizeOffset).toNumber();
38
- const rawMessage = memory.getSlice(messageOffset, this.messageSize);
39
- const fields = memory.getSlice(fieldsOffset, fieldsSize);
40
- memory.checkTagsRange(TypeTag.UINT8, messageOffset, this.messageSize);
41
- memory.checkTagsRange(TypeTag.FIELD, fieldsOffset, fieldsSize);
42
- context.machineState.consumeGas(this.gasCost(this.messageSize + fieldsSize));
43
- // Interpret str<N> = [u8; N] to string.
44
- const messageAsStr = rawMessage.map((field)=>String.fromCharCode(field.toNumber())).join('');
45
- const formattedStr = applyStringFormatting(messageAsStr, fields.map((field)=>field.toFr()));
46
- DebugLog.logger.verbose(formattedStr);
39
+ const [levelOffset, messageOffset, fieldsOffset, fieldsSizeOffset] = addressing.resolve(operands, memory);
40
+ // DebugLog is a no-op except unless the config is set to collect debug logs.
41
+ // Note that we still do address resolution and basic tag-checking (above)
42
+ // To avoid a special-case in the witness generator and circuit.
43
+ if (context.environment.config.collectDebugLogs) {
44
+ memory.checkTag(TypeTag.UINT8, levelOffset);
45
+ const levelNumber = memory.get(levelOffset).toNumber();
46
+ memory.checkTag(TypeTag.UINT32, fieldsSizeOffset);
47
+ const fieldsSize = memory.get(fieldsSizeOffset).toNumber();
48
+ const memoryReads = 1 /* level */ + 1 /* fieldsSize */ + this.messageSize /* message */ + fieldsSize; /* fields */
49
+ if (context.persistableState.getDebugLogMemoryReads() + memoryReads > context.environment.config.maxDebugLogMemoryReads) {
50
+ // Regular error on purpose: this is not a recoverable error.
51
+ throw new Error(`Max debug log memory reads exceeded: ${context.persistableState.getDebugLogMemoryReads() + memoryReads} > ${context.environment.config.maxDebugLogMemoryReads}`);
52
+ }
53
+ context.persistableState.writeDebugLogMemoryReads(memoryReads);
54
+ const rawMessage = memory.getSlice(messageOffset, this.messageSize);
55
+ const fields = memory.getSlice(fieldsOffset, fieldsSize);
56
+ memory.checkTagsRange(TypeTag.UINT8, messageOffset, this.messageSize);
57
+ memory.checkTagsRange(TypeTag.FIELD, fieldsOffset, fieldsSize);
58
+ // Interpret str<N> = [u8; N] to string.
59
+ const messageAsStr = rawMessage.map((field)=>String.fromCharCode(field.toNumber())).join('');
60
+ if (!LogLevels[levelNumber]) {
61
+ // Regular error on purpose: this is not a recoverable error.
62
+ throw new Error(`Invalid debug log level: ${levelNumber}`);
63
+ }
64
+ const level = LogLevels[levelNumber];
65
+ context.persistableState.writeDebugLog(context.environment.address, level, messageAsStr, fields.map((field)=>field.toFr()));
66
+ // Skips string formatting if the level is disabled.
67
+ if (DebugLog.logger.isLevelEnabled(level)) {
68
+ const formattedStr = applyStringFormatting(messageAsStr, fields.map((field)=>field.toFr()));
69
+ DebugLog.logger[level](formattedStr);
70
+ }
71
+ }
47
72
  }
48
73
  }
@@ -10,15 +10,15 @@ declare abstract class BaseStorageInstruction extends Instruction {
10
10
  }
11
11
  export declare class SStore extends BaseStorageInstruction {
12
12
  static readonly type: string;
13
- static readonly opcode = Opcode.SSTORE;
13
+ static readonly opcode: Opcode;
14
14
  constructor(indirect: number, srcOffset: number, slotOffset: number);
15
15
  execute(context: AvmContext): Promise<void>;
16
16
  }
17
17
  export declare class SLoad extends BaseStorageInstruction {
18
18
  static readonly type: string;
19
- static readonly opcode = Opcode.SLOAD;
19
+ static readonly opcode: Opcode;
20
20
  constructor(indirect: number, slotOffset: number, dstOffset: number);
21
21
  execute(context: AvmContext): Promise<void>;
22
22
  }
23
23
  export {};
24
- //# sourceMappingURL=storage.d.ts.map
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vb3Bjb2Rlcy9zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9DLHVCQUFlLHNCQUF1QixTQUFRLFdBQVc7SUFVckQsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNO0lBQzFCLFNBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTTtJQUN6QixTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU07SUFWM0IsZ0JBQXVCLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FLOUM7SUFFRixZQUNZLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsT0FBTyxFQUFFLE1BQU0sRUFHMUI7Q0FDRjtBQUVELHFCQUFhLE1BQU8sU0FBUSxzQkFBc0I7SUFDaEQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFZO0lBQ3hDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxTQUFpQjtJQUV2QyxZQUFZLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUVsRTtJQUVZLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0EwQnZEO0NBQ0Y7QUFFRCxxQkFBYSxLQUFNLFNBQVEsc0JBQXNCO0lBQy9DLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBVztJQUN2QyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sU0FBZ0I7SUFFdEMsWUFBWSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFFbEU7SUFFWSxPQUFPLENBQUMsT0FBTyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBZXZEO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/storage.ts"],"names":[],"mappings":"AAAA,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,uBAAe,sBAAuB,SAAQ,WAAW;IAS3C,SAAS,CAAC,QAAQ,EAAE,MAAM;IAAE,SAAS,CAAC,OAAO,EAAE,MAAM;IAAE,SAAS,CAAC,OAAO,EAAE,MAAM;IAP5F,gBAAuB,UAAU,EAAE,WAAW,EAAE,CAK9C;gBAEoB,QAAQ,EAAE,MAAM,EAAY,OAAO,EAAE,MAAM,EAAY,OAAO,EAAE,MAAM;CAG7F;AAED,qBAAa,MAAO,SAAQ,sBAAsB;IAChD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAY;IACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,iBAAiB;gBAE3B,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAItD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBzD;AAED,qBAAa,KAAM,SAAQ,sBAAsB;IAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAW;IACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;gBAE1B,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAItD,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAazD"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/storage.ts"],"names":[],"mappings":"AAAA,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,uBAAe,sBAAuB,SAAQ,WAAW;IAUrD,SAAS,CAAC,QAAQ,EAAE,MAAM;IAC1B,SAAS,CAAC,OAAO,EAAE,MAAM;IACzB,SAAS,CAAC,OAAO,EAAE,MAAM;IAV3B,gBAAuB,UAAU,EAAE,WAAW,EAAE,CAK9C;IAEF,YACY,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EAG1B;CACF;AAED,qBAAa,MAAO,SAAQ,sBAAsB;IAChD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAY;IACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,SAAiB;IAEvC,YAAY,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAElE;IAEY,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BvD;CACF;AAED,qBAAa,KAAM,SAAQ,sBAAsB;IAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAW;IACvC,MAAM,CAAC,QAAQ,CAAC,MAAM,SAAgB;IAEtC,YAAY,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAElE;IAEY,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAevD;CACF"}
@@ -29,16 +29,18 @@ export class SStore extends BaseStorageInstruction {
29
29
  throw new StaticCallAlterationError();
30
30
  }
31
31
  const memory = context.machineState.memory;
32
- context.machineState.consumeGas(this.gasCost());
32
+ const addressing = Addressing.fromWire(this.indirect);
33
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
33
34
  const operands = [
34
35
  this.aOffset,
35
36
  this.bOffset
36
37
  ];
37
- const addressing = Addressing.fromWire(this.indirect, operands.length);
38
38
  const [srcOffset, slotOffset] = addressing.resolve(operands, memory);
39
+ // We read before tag checking since it's needed for gas cost calculation
40
+ const slot = memory.get(slotOffset).toFr();
41
+ context.machineState.consumeGas(this.dynamicGasCost(Number(context.persistableState.isStorageCold(context.environment.address, slot))));
39
42
  memory.checkTag(TypeTag.FIELD, slotOffset);
40
43
  memory.checkTag(TypeTag.FIELD, srcOffset);
41
- const slot = memory.get(slotOffset).toFr();
42
44
  const value = memory.get(srcOffset).toFr();
43
45
  await context.persistableState.writeStorage(context.environment.address, slot, value);
44
46
  }
@@ -51,12 +53,12 @@ export class SLoad extends BaseStorageInstruction {
51
53
  }
52
54
  async execute(context) {
53
55
  const memory = context.machineState.memory;
54
- context.machineState.consumeGas(this.gasCost());
56
+ const addressing = Addressing.fromWire(this.indirect);
57
+ context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
55
58
  const operands = [
56
59
  this.aOffset,
57
60
  this.bOffset
58
61
  ];
59
- const addressing = Addressing.fromWire(this.indirect, operands.length);
60
62
  const [slotOffset, dstOffset] = addressing.resolve(operands, memory);
61
63
  memory.checkTag(TypeTag.FIELD, slotOffset);
62
64
  const slot = memory.get(slotOffset).toFr();
@@ -0,0 +1,18 @@
1
+ import type { Fr } from '@aztec/foundation/fields';
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV2ZXJ0X3JlYXNvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vcmV2ZXJ0X3JlYXNvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVuRCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUE4QnRFOzs7OztHQUtHO0FBQ0gsd0JBQXNCLCtCQUErQixDQUNuRCxZQUFZLEVBQUUsaUJBQWlCLEVBQy9CLE9BQU8sRUFBRSxVQUFVLEdBQ2xCLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FFMUI7QUFFRDs7Ozs7R0FLRztBQUNILHdCQUFzQiw4QkFBOEIsQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLFVBQVUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLENBRXBIIn0=
@@ -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,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA8BtE;;;;;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,38 @@
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 fnName = await context.persistableState.getPublicFunctionDebugName(context.environment);
13
+ return new AvmRevertReason(message, /*failingFunction=*/ {
14
+ contractAddress: context.environment.address,
15
+ functionName: fnName
16
+ }, /*noirCallStack=*/ [
17
+ ...internalCallStack,
18
+ context.machineState.pc
19
+ ].map((pc)=>`0.${pc}`), /*options=*/ {
20
+ cause: nestedError
21
+ });
22
+ }
23
+ /**
24
+ * Create a "revert reason" error for an exceptional halt.
25
+ *
26
+ * @param haltingError - the lower-level error causing the exceptional halt
27
+ * @param context - the context of the AVM execution used to extract the failingFunction and noirCallStack
28
+ */ export async function revertReasonFromExceptionalHalt(haltingError, context) {
29
+ return await createRevertReason(haltingError.message, [], context);
30
+ }
31
+ /**
32
+ * Create a "revert reason" error for an explicit revert (a root cause).
33
+ *
34
+ * @param revertData - output data of the explicit REVERT instruction
35
+ * @param context - the context of the AVM execution used to extract the failingFunction and noirCallStack
36
+ */ export async function revertReasonFromExplicitRevert(revertData, context) {
37
+ return await createRevertReason('Assertion failed: ', revertData, context);
38
+ }
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnl0ZWNvZGVfc2VyaWFsaXphdGlvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3B1YmxpYy9hdm0vc2VyaWFsaXphdGlvbi9ieXRlY29kZV9zZXJpYWxpemF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLFVBQVUsRUFBcUIsTUFBTSw2QkFBNkIsQ0FBQztBQUdqRixPQUFPLEVBZ0JMLFdBQVcsRUFnQ1osTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFvQixNQUFNLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUUxRSxNQUFNLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsWUFBWSxHQUFHLE1BQU0sS0FBSyxXQUFXLENBQUM7QUFFbEYsTUFBTSxXQUFXLGNBQWM7SUFDN0IsV0FBVyxFQUFFLHVCQUF1QixDQUFDO0NBQ3RDO0FBRUQsTUFBTSxNQUFNLGNBQWMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLHVCQUF1QixDQUFDLENBQUM7QUFDbEUsZUFBTyxNQUFNLGVBQWUsc0NBb0YxQixDQUFDO0FBRUg7O0dBRUc7QUFDSCx3QkFBZ0IsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FFbkU7QUFHRCx3QkFBZ0Isa0JBQWtCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxjQUFjLEdBQUUsY0FBZ0MsR0FBRyxXQUFXLEVBQUUsQ0FTcEg7QUFHRCx3QkFBZ0IsNkJBQTZCLENBQzNDLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLEVBQUUsRUFBRSxNQUFNLEVBQ1YsY0FBYyxHQUFFLGNBQWdDLEdBQy9DLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQStCdkIifQ==
@@ -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;AAGjF,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,CA+BvB"}