@aztec/simulator 0.0.0-test.1 → 0.0.1-fake-ceab37513c

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 (436) hide show
  1. package/README.md +6 -0
  2. package/dest/client.d.ts +5 -3
  3. package/dest/client.d.ts.map +1 -1
  4. package/dest/client.js +4 -2
  5. package/dest/common/errors.d.ts +4 -7
  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 +0 -1
  9. package/dest/common/index.d.ts.map +1 -1
  10. package/dest/common/index.js +0 -1
  11. package/dest/private/acvm/acvm.d.ts +11 -5
  12. package/dest/private/acvm/acvm.d.ts.map +1 -1
  13. package/dest/private/acvm/acvm.js +10 -16
  14. package/dest/private/acvm/acvm_types.d.ts +1 -1
  15. package/dest/private/acvm/acvm_types.d.ts.map +1 -1
  16. package/dest/private/acvm/deserialize.d.ts +17 -18
  17. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  18. package/dest/private/acvm/deserialize.js +31 -23
  19. package/dest/private/acvm/index.d.ts +0 -1
  20. package/dest/private/acvm/index.d.ts.map +1 -1
  21. package/dest/private/acvm/index.js +0 -1
  22. package/dest/private/acvm/serialize.d.ts +19 -2
  23. package/dest/private/acvm/serialize.d.ts.map +1 -1
  24. package/dest/private/acvm/serialize.js +53 -0
  25. package/dest/private/{providers/acvm_native.d.ts → acvm_native.d.ts} +10 -10
  26. package/dest/private/acvm_native.d.ts.map +1 -0
  27. package/dest/private/{providers/acvm_native.js → acvm_native.js} +11 -7
  28. package/dest/private/acvm_wasm.d.ts +15 -0
  29. package/dest/private/acvm_wasm.d.ts.map +1 -0
  30. package/dest/private/{providers/acvm_wasm.js → acvm_wasm.js} +22 -19
  31. package/dest/private/acvm_wasm_with_blobs.d.ts +20 -0
  32. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -0
  33. package/dest/private/acvm_wasm_with_blobs.js +35 -0
  34. package/dest/private/circuit_recording/circuit_recorder.d.ts +108 -0
  35. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -0
  36. package/dest/private/circuit_recording/circuit_recorder.js +209 -0
  37. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +31 -0
  38. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
  39. package/dest/private/circuit_recording/file_circuit_recorder.js +135 -0
  40. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +5 -0
  41. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
  42. package/dest/private/circuit_recording/memory_circuit_recorder.js +9 -0
  43. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +21 -0
  44. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
  45. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +44 -0
  46. package/dest/private/circuit_simulator.d.ts +35 -0
  47. package/dest/private/circuit_simulator.d.ts.map +1 -0
  48. package/dest/private/circuit_simulator.js +43 -0
  49. package/dest/private/factory.d.ts +12 -0
  50. package/dest/private/factory.d.ts.map +1 -0
  51. package/dest/private/{providers/factory.js → factory.js} +2 -2
  52. package/dest/public/avm/avm_context.d.ts +5 -5
  53. package/dest/public/avm/avm_context.d.ts.map +1 -1
  54. package/dest/public/avm/avm_contract_call_result.d.ts +4 -2
  55. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  56. package/dest/public/avm/avm_contract_call_result.js +11 -7
  57. package/dest/public/avm/avm_execution_environment.d.ts +2 -1
  58. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  59. package/dest/public/avm/avm_execution_environment.js +4 -2
  60. package/dest/public/avm/avm_gas.d.ts +4 -20
  61. package/dest/public/avm/avm_gas.d.ts.map +1 -1
  62. package/dest/public/avm/avm_gas.js +27 -35
  63. package/dest/public/avm/avm_machine_state.d.ts +2 -0
  64. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  65. package/dest/public/avm/avm_machine_state.js +2 -0
  66. package/dest/public/avm/avm_memory_types.d.ts +98 -87
  67. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  68. package/dest/public/avm/avm_memory_types.js +17 -6
  69. package/dest/public/avm/avm_simulator.d.ts +4 -5
  70. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  71. package/dest/public/avm/avm_simulator.js +13 -18
  72. package/dest/public/avm/avm_simulator_interface.d.ts +9 -0
  73. package/dest/public/avm/avm_simulator_interface.d.ts.map +1 -0
  74. package/dest/public/avm/avm_simulator_interface.js +3 -0
  75. package/dest/public/avm/errors.d.ts +1 -16
  76. package/dest/public/avm/errors.d.ts.map +1 -1
  77. package/dest/public/avm/errors.js +0 -37
  78. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +3 -3
  79. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  80. package/dest/public/avm/fixtures/avm_simulation_tester.js +10 -11
  81. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +4 -4
  82. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  83. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +16 -15
  84. package/dest/public/avm/fixtures/initializers.d.ts +43 -0
  85. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
  86. package/dest/public/avm/fixtures/initializers.js +42 -0
  87. package/dest/public/avm/fixtures/utils.d.ts +38 -0
  88. package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
  89. package/dest/public/avm/fixtures/utils.js +95 -0
  90. package/dest/public/avm/index.d.ts +0 -2
  91. package/dest/public/avm/index.d.ts.map +1 -1
  92. package/dest/public/avm/index.js +0 -2
  93. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  94. package/dest/public/avm/opcodes/accrued_substate.js +22 -19
  95. package/dest/public/avm/opcodes/addressing_mode.d.ts +11 -7
  96. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
  97. package/dest/public/avm/opcodes/addressing_mode.js +48 -27
  98. package/dest/public/avm/opcodes/arithmetic.d.ts +11 -1
  99. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  100. package/dest/public/avm/opcodes/arithmetic.js +16 -2
  101. package/dest/public/avm/opcodes/bitwise.d.ts +5 -13
  102. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  103. package/dest/public/avm/opcodes/bitwise.js +19 -26
  104. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  105. package/dest/public/avm/opcodes/comparators.js +3 -3
  106. package/dest/public/avm/opcodes/contract.d.ts +1 -2
  107. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  108. package/dest/public/avm/opcodes/contract.js +9 -10
  109. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  110. package/dest/public/avm/opcodes/control_flow.js +10 -8
  111. package/dest/public/avm/opcodes/conversion.d.ts +1 -0
  112. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  113. package/dest/public/avm/opcodes/conversion.js +264 -3
  114. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  115. package/dest/public/avm/opcodes/ec_add.js +2 -2
  116. package/dest/public/avm/opcodes/environment_getters.d.ts +2 -2
  117. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  118. package/dest/public/avm/opcodes/environment_getters.js +12 -12
  119. package/dest/public/avm/opcodes/external_calls.d.ts +8 -7
  120. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  121. package/dest/public/avm/opcodes/external_calls.js +39 -33
  122. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  123. package/dest/public/avm/opcodes/hashing.js +6 -6
  124. package/dest/public/avm/opcodes/instruction.d.ts +14 -10
  125. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
  126. package/dest/public/avm/opcodes/instruction.js +18 -13
  127. package/dest/public/avm/opcodes/memory.d.ts +4 -4
  128. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  129. package/dest/public/avm/opcodes/memory.js +37 -33
  130. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  131. package/dest/public/avm/opcodes/misc.js +17 -12
  132. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  133. package/dest/public/avm/opcodes/storage.js +7 -5
  134. package/dest/public/avm/revert_reason.d.ts +18 -0
  135. package/dest/public/avm/revert_reason.d.ts.map +1 -0
  136. package/dest/public/avm/revert_reason.js +38 -0
  137. package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -2
  138. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
  139. package/dest/public/avm/serialization/bytecode_serialization.d.ts +2 -6
  140. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  141. package/dest/public/avm/serialization/bytecode_serialization.js +70 -69
  142. package/dest/public/avm/serialization/instruction_serialization.d.ts +5 -4
  143. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  144. package/dest/public/avm/serialization/instruction_serialization.js +60 -35
  145. package/dest/public/avm/test_utils.d.ts +10 -13
  146. package/dest/public/avm/test_utils.d.ts.map +1 -1
  147. package/dest/public/avm/test_utils.js +12 -17
  148. package/dest/public/db_interfaces.d.ts +56 -0
  149. package/dest/public/db_interfaces.d.ts.map +1 -0
  150. package/dest/public/db_interfaces.js +3 -0
  151. package/dest/public/debug_fn_name.d.ts +5 -0
  152. package/dest/public/debug_fn_name.d.ts.map +1 -0
  153. package/dest/public/debug_fn_name.js +9 -0
  154. package/dest/public/executor_metrics.d.ts +10 -3
  155. package/dest/public/executor_metrics.d.ts.map +1 -1
  156. package/dest/public/executor_metrics.js +37 -6
  157. package/dest/public/executor_metrics_interface.d.ts +9 -0
  158. package/dest/public/executor_metrics_interface.d.ts.map +1 -0
  159. package/dest/public/executor_metrics_interface.js +1 -0
  160. package/dest/public/fixtures/amm_test.d.ts +10 -0
  161. package/dest/public/fixtures/amm_test.d.ts.map +1 -0
  162. package/dest/public/fixtures/amm_test.js +213 -0
  163. package/dest/public/fixtures/bulk_test.d.ts +6 -0
  164. package/dest/public/fixtures/bulk_test.d.ts.map +1 -0
  165. package/dest/public/fixtures/bulk_test.js +393 -0
  166. package/dest/public/fixtures/index.d.ts +6 -0
  167. package/dest/public/fixtures/index.d.ts.map +1 -1
  168. package/dest/public/fixtures/index.js +6 -0
  169. package/dest/public/fixtures/minimal_public_tx.d.ts +9 -0
  170. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
  171. package/dest/public/fixtures/minimal_public_tx.js +43 -0
  172. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +33 -13
  173. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  174. package/dest/public/fixtures/public_tx_simulation_tester.js +90 -70
  175. package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.d.ts +6 -6
  176. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -0
  177. package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.js +31 -10
  178. package/dest/public/fixtures/token_test.d.ts +8 -0
  179. package/dest/public/fixtures/token_test.d.ts.map +1 -0
  180. package/dest/public/fixtures/token_test.js +95 -0
  181. package/dest/public/fixtures/utils.d.ts +16 -3
  182. package/dest/public/fixtures/utils.d.ts.map +1 -1
  183. package/dest/public/fixtures/utils.js +100 -58
  184. package/dest/public/hinting_db_sources.d.ts +68 -0
  185. package/dest/public/hinting_db_sources.d.ts.map +1 -0
  186. package/dest/public/hinting_db_sources.js +294 -0
  187. package/dest/public/index.d.ts +4 -8
  188. package/dest/public/index.d.ts.map +1 -1
  189. package/dest/public/index.js +4 -7
  190. package/dest/public/public_db_sources.d.ts +30 -39
  191. package/dest/public/public_db_sources.d.ts.map +1 -1
  192. package/dest/public/public_db_sources.js +141 -67
  193. package/dest/public/public_processor/guarded_merkle_tree.d.ts +47 -0
  194. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
  195. package/dest/public/public_processor/guarded_merkle_tree.js +105 -0
  196. package/dest/public/public_processor/public_processor.d.ts +19 -29
  197. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  198. package/dest/public/public_processor/public_processor.js +133 -94
  199. package/dest/public/public_processor/public_processor_metrics.d.ts +2 -2
  200. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  201. package/dest/public/public_processor/public_processor_metrics.js +1 -1
  202. package/dest/public/public_tx_simulator/index.d.ts +3 -0
  203. package/dest/public/public_tx_simulator/index.d.ts.map +1 -0
  204. package/dest/public/public_tx_simulator/index.js +2 -0
  205. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +23 -0
  206. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -0
  207. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +52 -0
  208. package/dest/public/public_tx_simulator/public_tx_context.d.ts +17 -29
  209. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  210. package/dest/public/public_tx_simulator/public_tx_context.js +59 -91
  211. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +27 -42
  212. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  213. package/dest/public/public_tx_simulator/public_tx_simulator.js +128 -171
  214. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +20 -0
  215. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -0
  216. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +39 -0
  217. package/dest/public/side_effect_trace.d.ts +10 -62
  218. package/dest/public/side_effect_trace.d.ts.map +1 -1
  219. package/dest/public/side_effect_trace.js +43 -108
  220. package/dest/public/side_effect_trace_interface.d.ts +5 -22
  221. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  222. package/dest/public/state_manager/index.d.ts +2 -0
  223. package/dest/public/state_manager/index.d.ts.map +1 -0
  224. package/dest/public/state_manager/index.js +1 -0
  225. package/dest/public/{avm/journal → state_manager}/nullifiers.d.ts +2 -2
  226. package/dest/public/state_manager/nullifiers.d.ts.map +1 -0
  227. package/dest/public/{avm/journal → state_manager}/nullifiers.js +2 -2
  228. package/dest/public/{avm/journal → state_manager}/public_storage.d.ts +2 -2
  229. package/dest/public/state_manager/public_storage.d.ts.map +1 -0
  230. package/dest/public/{avm/journal/journal.d.ts → state_manager/state_manager.d.ts} +37 -85
  231. package/dest/public/state_manager/state_manager.d.ts.map +1 -0
  232. package/dest/public/state_manager/state_manager.js +352 -0
  233. package/dest/public/test_executor_metrics.d.ts +54 -0
  234. package/dest/public/test_executor_metrics.d.ts.map +1 -0
  235. package/dest/public/test_executor_metrics.js +306 -0
  236. package/dest/public/unique_class_ids.d.ts.map +1 -1
  237. package/dest/public/utils.d.ts +2 -4
  238. package/dest/public/utils.d.ts.map +1 -1
  239. package/dest/public/utils.js +4 -21
  240. package/dest/server.d.ts +6 -3
  241. package/dest/server.d.ts.map +1 -1
  242. package/dest/server.js +5 -2
  243. package/dest/testing.d.ts +2 -0
  244. package/dest/testing.d.ts.map +1 -0
  245. package/dest/testing.js +1 -0
  246. package/package.json +31 -30
  247. package/src/client.ts +5 -3
  248. package/src/common/errors.ts +79 -44
  249. package/src/common/index.ts +0 -1
  250. package/src/private/acvm/acvm.ts +17 -32
  251. package/src/private/acvm/acvm_types.ts +1 -1
  252. package/src/private/acvm/deserialize.ts +35 -29
  253. package/src/private/acvm/index.ts +0 -1
  254. package/src/private/acvm/serialize.ts +63 -0
  255. package/src/private/{providers/acvm_native.ts → acvm_native.ts} +31 -15
  256. package/src/private/acvm_wasm.ts +72 -0
  257. package/src/private/acvm_wasm_with_blobs.ts +54 -0
  258. package/src/private/circuit_recording/circuit_recorder.ts +260 -0
  259. package/src/private/circuit_recording/file_circuit_recorder.ts +158 -0
  260. package/src/private/circuit_recording/memory_circuit_recorder.ts +11 -0
  261. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +91 -0
  262. package/src/private/circuit_simulator.ts +90 -0
  263. package/src/private/{providers/factory.ts → factory.ts} +6 -6
  264. package/src/public/avm/avm_context.ts +4 -4
  265. package/src/public/avm/avm_contract_call_result.ts +17 -5
  266. package/src/public/avm/avm_execution_environment.ts +7 -1
  267. package/src/public/avm/avm_gas.ts +23 -35
  268. package/src/public/avm/avm_machine_state.ts +5 -0
  269. package/src/public/avm/avm_memory_types.ts +19 -6
  270. package/src/public/avm/avm_simulator.ts +30 -29
  271. package/src/public/avm/avm_simulator_interface.ts +8 -0
  272. package/src/public/avm/errors.ts +1 -53
  273. package/src/public/avm/fixtures/avm_simulation_tester.ts +19 -18
  274. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +15 -14
  275. package/src/public/avm/fixtures/initializers.ts +103 -0
  276. package/src/public/avm/fixtures/utils.ts +150 -0
  277. package/src/public/avm/index.ts +0 -2
  278. package/src/public/avm/opcodes/accrued_substate.ts +62 -27
  279. package/src/public/avm/opcodes/addressing_mode.ts +57 -33
  280. package/src/public/avm/opcodes/arithmetic.ts +24 -2
  281. package/src/public/avm/opcodes/bitwise.ts +33 -29
  282. package/src/public/avm/opcodes/comparators.ts +6 -3
  283. package/src/public/avm/opcodes/contract.ts +10 -7
  284. package/src/public/avm/opcodes/control_flow.ts +19 -10
  285. package/src/public/avm/opcodes/conversion.ts +23 -3
  286. package/src/public/avm/opcodes/ec_add.ts +5 -2
  287. package/src/public/avm/opcodes/environment_getters.ts +22 -15
  288. package/src/public/avm/opcodes/external_calls.ts +61 -28
  289. package/src/public/avm/opcodes/hashing.ts +28 -8
  290. package/src/public/avm/opcodes/instruction.ts +23 -15
  291. package/src/public/avm/opcodes/memory.ts +71 -32
  292. package/src/public/avm/opcodes/misc.ts +24 -16
  293. package/src/public/avm/opcodes/storage.ts +22 -6
  294. package/src/public/avm/revert_reason.ts +55 -0
  295. package/src/public/avm/serialization/buffer_cursor.ts +4 -1
  296. package/src/public/avm/serialization/bytecode_serialization.ts +72 -74
  297. package/src/public/avm/serialization/instruction_serialization.ts +63 -34
  298. package/src/public/avm/test_utils.ts +23 -32
  299. package/src/public/db_interfaces.ts +61 -0
  300. package/src/{common → public}/debug_fn_name.ts +7 -7
  301. package/src/public/executor_metrics.ts +55 -6
  302. package/src/public/executor_metrics_interface.ts +14 -0
  303. package/src/public/fixtures/amm_test.ts +331 -0
  304. package/src/public/fixtures/bulk_test.ts +151 -0
  305. package/src/public/fixtures/index.ts +6 -0
  306. package/src/public/fixtures/minimal_public_tx.ts +59 -0
  307. package/src/public/fixtures/public_tx_simulation_tester.ts +154 -113
  308. package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +36 -18
  309. package/src/public/fixtures/token_test.ts +140 -0
  310. package/src/public/fixtures/utils.ts +141 -68
  311. package/src/public/hinting_db_sources.ts +500 -0
  312. package/src/public/index.ts +4 -8
  313. package/src/public/public_db_sources.ts +179 -96
  314. package/src/public/public_processor/guarded_merkle_tree.ts +149 -0
  315. package/src/public/public_processor/public_processor.ts +179 -139
  316. package/src/public/public_processor/public_processor_metrics.ts +2 -2
  317. package/src/public/public_tx_simulator/index.ts +2 -0
  318. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +106 -0
  319. package/src/public/public_tx_simulator/public_tx_context.ts +153 -193
  320. package/src/public/public_tx_simulator/public_tx_simulator.ts +167 -211
  321. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +72 -0
  322. package/src/public/side_effect_trace.ts +52 -303
  323. package/src/public/side_effect_trace_interface.ts +4 -58
  324. package/src/public/state_manager/index.ts +1 -0
  325. package/src/public/{avm/journal → state_manager}/nullifiers.ts +4 -4
  326. package/src/public/{avm/journal → state_manager}/public_storage.ts +2 -2
  327. package/src/public/state_manager/state_manager.ts +512 -0
  328. package/src/public/test_executor_metrics.ts +395 -0
  329. package/src/public/utils.ts +5 -21
  330. package/src/server.ts +6 -3
  331. package/src/testing.ts +1 -0
  332. package/dest/common/db_interfaces.d.ts +0 -80
  333. package/dest/common/db_interfaces.d.ts.map +0 -1
  334. package/dest/common/db_interfaces.js +0 -1
  335. package/dest/common/debug_fn_name.d.ts +0 -5
  336. package/dest/common/debug_fn_name.d.ts.map +0 -1
  337. package/dest/common/debug_fn_name.js +0 -6
  338. package/dest/common/message_load_oracle_inputs.d.ts +0 -15
  339. package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
  340. package/dest/common/message_load_oracle_inputs.js +0 -15
  341. package/dest/private/acvm/oracle/index.d.ts +0 -14
  342. package/dest/private/acvm/oracle/index.d.ts.map +0 -1
  343. package/dest/private/acvm/oracle/index.js +0 -2
  344. package/dest/private/acvm/oracle/oracle.d.ts +0 -49
  345. package/dest/private/acvm/oracle/oracle.d.ts.map +0 -1
  346. package/dest/private/acvm/oracle/oracle.js +0 -263
  347. package/dest/private/acvm/oracle/typed_oracle.d.ts +0 -83
  348. package/dest/private/acvm/oracle/typed_oracle.d.ts.map +0 -1
  349. package/dest/private/acvm/oracle/typed_oracle.js +0 -132
  350. package/dest/private/execution_data_provider.d.ts +0 -261
  351. package/dest/private/execution_data_provider.d.ts.map +0 -1
  352. package/dest/private/execution_data_provider.js +0 -14
  353. package/dest/private/execution_note_cache.d.ts +0 -93
  354. package/dest/private/execution_note_cache.d.ts.map +0 -1
  355. package/dest/private/execution_note_cache.js +0 -180
  356. package/dest/private/hashed_values_cache.d.ts +0 -28
  357. package/dest/private/hashed_values_cache.d.ts.map +0 -1
  358. package/dest/private/hashed_values_cache.js +0 -46
  359. package/dest/private/index.d.ts +0 -13
  360. package/dest/private/index.d.ts.map +0 -1
  361. package/dest/private/index.js +0 -12
  362. package/dest/private/pick_notes.d.ts +0 -85
  363. package/dest/private/pick_notes.d.ts.map +0 -1
  364. package/dest/private/pick_notes.js +0 -51
  365. package/dest/private/private_execution.d.ts +0 -25
  366. package/dest/private/private_execution.d.ts.map +0 -1
  367. package/dest/private/private_execution.js +0 -92
  368. package/dest/private/private_execution_oracle.d.ts +0 -215
  369. package/dest/private/private_execution_oracle.d.ts.map +0 -1
  370. package/dest/private/private_execution_oracle.js +0 -382
  371. package/dest/private/providers/acvm_native.d.ts.map +0 -1
  372. package/dest/private/providers/acvm_wasm.d.ts +0 -15
  373. package/dest/private/providers/acvm_wasm.d.ts.map +0 -1
  374. package/dest/private/providers/acvm_wasm_with_blobs.d.ts +0 -19
  375. package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
  376. package/dest/private/providers/acvm_wasm_with_blobs.js +0 -32
  377. package/dest/private/providers/factory.d.ts +0 -12
  378. package/dest/private/providers/factory.d.ts.map +0 -1
  379. package/dest/private/providers/simulation_provider.d.ts +0 -19
  380. package/dest/private/providers/simulation_provider.d.ts.map +0 -1
  381. package/dest/private/providers/simulation_provider.js +0 -24
  382. package/dest/private/simulator.d.ts +0 -34
  383. package/dest/private/simulator.d.ts.map +0 -1
  384. package/dest/private/simulator.js +0 -76
  385. package/dest/private/unconstrained_execution.d.ts +0 -10
  386. package/dest/private/unconstrained_execution.d.ts.map +0 -1
  387. package/dest/private/unconstrained_execution.js +0 -27
  388. package/dest/private/unconstrained_execution_oracle.d.ts +0 -161
  389. package/dest/private/unconstrained_execution_oracle.d.ts.map +0 -1
  390. package/dest/private/unconstrained_execution_oracle.js +0 -258
  391. package/dest/public/avm/bytecode_utils.d.ts +0 -5
  392. package/dest/public/avm/bytecode_utils.d.ts.map +0 -1
  393. package/dest/public/avm/bytecode_utils.js +0 -17
  394. package/dest/public/avm/fixtures/index.d.ts +0 -84
  395. package/dest/public/avm/fixtures/index.d.ts.map +0 -1
  396. package/dest/public/avm/fixtures/index.js +0 -175
  397. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
  398. package/dest/public/avm/journal/index.d.ts +0 -2
  399. package/dest/public/avm/journal/index.d.ts.map +0 -1
  400. package/dest/public/avm/journal/index.js +0 -1
  401. package/dest/public/avm/journal/journal.d.ts.map +0 -1
  402. package/dest/public/avm/journal/journal.js +0 -486
  403. package/dest/public/avm/journal/nullifiers.d.ts.map +0 -1
  404. package/dest/public/avm/journal/public_storage.d.ts.map +0 -1
  405. package/dest/public/execution.d.ts +0 -108
  406. package/dest/public/execution.d.ts.map +0 -1
  407. package/dest/public/execution.js +0 -9
  408. package/dest/test/utils.d.ts +0 -13
  409. package/dest/test/utils.d.ts.map +0 -1
  410. package/dest/test/utils.js +0 -22
  411. package/src/common/db_interfaces.ts +0 -94
  412. package/src/common/message_load_oracle_inputs.ts +0 -15
  413. package/src/private/acvm/oracle/index.ts +0 -16
  414. package/src/private/acvm/oracle/oracle.ts +0 -455
  415. package/src/private/acvm/oracle/typed_oracle.ts +0 -259
  416. package/src/private/execution_data_provider.ts +0 -323
  417. package/src/private/execution_note_cache.ts +0 -217
  418. package/src/private/hashed_values_cache.ts +0 -55
  419. package/src/private/index.ts +0 -16
  420. package/src/private/pick_notes.ts +0 -141
  421. package/src/private/private_execution.ts +0 -151
  422. package/src/private/private_execution_oracle.ts +0 -614
  423. package/src/private/providers/acvm_wasm.ts +0 -63
  424. package/src/private/providers/acvm_wasm_with_blobs.ts +0 -50
  425. package/src/private/providers/simulation_provider.ts +0 -45
  426. package/src/private/simulator.ts +0 -147
  427. package/src/private/unconstrained_execution.ts +0 -50
  428. package/src/private/unconstrained_execution_oracle.ts +0 -373
  429. package/src/public/avm/bytecode_utils.ts +0 -17
  430. package/src/public/avm/fixtures/index.ts +0 -296
  431. package/src/public/avm/journal/index.ts +0 -1
  432. package/src/public/avm/journal/journal.ts +0 -742
  433. package/src/public/avm/opcodes/.eslintrc.cjs +0 -8
  434. package/src/public/execution.ts +0 -140
  435. package/src/test/utils.ts +0 -36
  436. /package/dest/public/{avm/journal → state_manager}/public_storage.js +0 -0
@@ -1,3 +1,5 @@
1
+ import { type Bufferable, serializeToBuffer } from '@aztec/foundation/serialize';
2
+
1
3
  import { AvmExecutionError, AvmParsingError, InvalidOpcodeError, InvalidProgramCounterError } from '../errors.js';
2
4
  import {
3
5
  Add,
@@ -53,106 +55,102 @@ import { MAX_OPCODE_VALUE, Opcode } from './instruction_serialization.js';
53
55
 
54
56
  export type InstructionDeserializer = (buf: BufferCursor | Buffer) => Instruction;
55
57
 
56
- export interface Serializable {
57
- serialize(): Buffer;
58
- }
59
-
60
58
  export interface Deserializable {
61
59
  deserialize: InstructionDeserializer;
62
60
  }
63
61
 
64
62
  export type InstructionSet = Map<Opcode, InstructionDeserializer>;
65
63
  export const INSTRUCTION_SET = new Map<Opcode, InstructionDeserializer>([
66
- [Opcode.ADD_8, Add.as(Add.wireFormat8).deserialize],
67
- [Opcode.ADD_16, Add.as(Add.wireFormat16).deserialize],
68
- [Opcode.SUB_8, Sub.as(Sub.wireFormat8).deserialize],
69
- [Opcode.SUB_16, Sub.as(Sub.wireFormat16).deserialize],
70
- [Opcode.MUL_8, Mul.as(Mul.wireFormat8).deserialize],
71
- [Opcode.MUL_16, Mul.as(Mul.wireFormat16).deserialize],
72
- [Opcode.DIV_8, Div.as(Div.wireFormat8).deserialize],
73
- [Opcode.DIV_16, Div.as(Div.wireFormat16).deserialize],
74
- [Opcode.FDIV_8, FieldDiv.as(FieldDiv.wireFormat8).deserialize],
75
- [Opcode.FDIV_16, FieldDiv.as(FieldDiv.wireFormat16).deserialize],
76
- [Opcode.EQ_8, Eq.as(Eq.wireFormat8).deserialize],
77
- [Opcode.EQ_16, Eq.as(Eq.wireFormat16).deserialize],
78
- [Opcode.LT_8, Lt.as(Lt.wireFormat8).deserialize],
79
- [Opcode.LT_16, Lt.as(Lt.wireFormat16).deserialize],
80
- [Opcode.LTE_8, Lte.as(Lte.wireFormat8).deserialize],
81
- [Opcode.LTE_16, Lte.as(Lte.wireFormat16).deserialize],
82
- [Opcode.AND_8, And.as(And.wireFormat8).deserialize],
83
- [Opcode.AND_16, And.as(And.wireFormat16).deserialize],
84
- [Opcode.OR_8, Or.as(Or.wireFormat8).deserialize],
85
- [Opcode.OR_16, Or.as(Or.wireFormat16).deserialize],
86
- [Opcode.XOR_8, Xor.as(Xor.wireFormat8).deserialize],
87
- [Opcode.XOR_16, Xor.as(Xor.wireFormat16).deserialize],
88
- [Opcode.NOT_8, Not.as(Not.wireFormat8).deserialize],
89
- [Opcode.NOT_16, Not.as(Not.wireFormat16).deserialize],
90
- [Opcode.SHL_8, Shl.as(Shl.wireFormat8).deserialize],
91
- [Opcode.SHL_16, Shl.as(Shl.wireFormat16).deserialize],
92
- [Opcode.SHR_8, Shr.as(Shr.wireFormat8).deserialize],
93
- [Opcode.SHR_16, Shr.as(Shr.wireFormat16).deserialize],
94
- [Opcode.CAST_8, Cast.as(Cast.wireFormat8).deserialize],
95
- [Opcode.CAST_16, Cast.as(Cast.wireFormat16).deserialize],
64
+ [Opcode.ADD_8, Add.as(Add.wireFormat8).fromBuffer],
65
+ [Opcode.ADD_16, Add.as(Add.wireFormat16).fromBuffer],
66
+ [Opcode.SUB_8, Sub.as(Sub.wireFormat8).fromBuffer],
67
+ [Opcode.SUB_16, Sub.as(Sub.wireFormat16).fromBuffer],
68
+ [Opcode.MUL_8, Mul.as(Mul.wireFormat8).fromBuffer],
69
+ [Opcode.MUL_16, Mul.as(Mul.wireFormat16).fromBuffer],
70
+ [Opcode.DIV_8, Div.as(Div.wireFormat8).fromBuffer],
71
+ [Opcode.DIV_16, Div.as(Div.wireFormat16).fromBuffer],
72
+ [Opcode.FDIV_8, FieldDiv.as(FieldDiv.wireFormat8).fromBuffer],
73
+ [Opcode.FDIV_16, FieldDiv.as(FieldDiv.wireFormat16).fromBuffer],
74
+ [Opcode.EQ_8, Eq.as(Eq.wireFormat8).fromBuffer],
75
+ [Opcode.EQ_16, Eq.as(Eq.wireFormat16).fromBuffer],
76
+ [Opcode.LT_8, Lt.as(Lt.wireFormat8).fromBuffer],
77
+ [Opcode.LT_16, Lt.as(Lt.wireFormat16).fromBuffer],
78
+ [Opcode.LTE_8, Lte.as(Lte.wireFormat8).fromBuffer],
79
+ [Opcode.LTE_16, Lte.as(Lte.wireFormat16).fromBuffer],
80
+ [Opcode.AND_8, And.as(And.wireFormat8).fromBuffer],
81
+ [Opcode.AND_16, And.as(And.wireFormat16).fromBuffer],
82
+ [Opcode.OR_8, Or.as(Or.wireFormat8).fromBuffer],
83
+ [Opcode.OR_16, Or.as(Or.wireFormat16).fromBuffer],
84
+ [Opcode.XOR_8, Xor.as(Xor.wireFormat8).fromBuffer],
85
+ [Opcode.XOR_16, Xor.as(Xor.wireFormat16).fromBuffer],
86
+ [Opcode.NOT_8, Not.as(Not.wireFormat8).fromBuffer],
87
+ [Opcode.NOT_16, Not.as(Not.wireFormat16).fromBuffer],
88
+ [Opcode.SHL_8, Shl.as(Shl.wireFormat8).fromBuffer],
89
+ [Opcode.SHL_16, Shl.as(Shl.wireFormat16).fromBuffer],
90
+ [Opcode.SHR_8, Shr.as(Shr.wireFormat8).fromBuffer],
91
+ [Opcode.SHR_16, Shr.as(Shr.wireFormat16).fromBuffer],
92
+ [Opcode.CAST_8, Cast.as(Cast.wireFormat8).fromBuffer],
93
+ [Opcode.CAST_16, Cast.as(Cast.wireFormat16).fromBuffer],
96
94
  // Execution Environment
97
- [Opcode.GETENVVAR_16, GetEnvVar.as(GetEnvVar.wireFormat16).deserialize],
98
- [CalldataCopy.opcode, Instruction.deserialize.bind(CalldataCopy)],
99
- [SuccessCopy.opcode, Instruction.deserialize.bind(SuccessCopy)],
100
- [Opcode.RETURNDATASIZE, Instruction.deserialize.bind(ReturndataSize)],
101
- [Opcode.RETURNDATACOPY, Instruction.deserialize.bind(ReturndataCopy)],
95
+ [Opcode.GETENVVAR_16, GetEnvVar.as(GetEnvVar.wireFormat16).fromBuffer],
96
+ [CalldataCopy.opcode, Instruction.fromBuffer.bind(CalldataCopy)],
97
+ [SuccessCopy.opcode, Instruction.fromBuffer.bind(SuccessCopy)],
98
+ [Opcode.RETURNDATASIZE, Instruction.fromBuffer.bind(ReturndataSize)],
99
+ [Opcode.RETURNDATACOPY, Instruction.fromBuffer.bind(ReturndataCopy)],
102
100
 
103
101
  // Machine State - Internal Control Flow
104
- [Jump.opcode, Instruction.deserialize.bind(Jump)],
105
- [JumpI.opcode, Instruction.deserialize.bind(JumpI)],
106
- [InternalCall.opcode, Instruction.deserialize.bind(InternalCall)],
107
- [InternalReturn.opcode, Instruction.deserialize.bind(InternalReturn)],
108
- [Opcode.SET_8, Set.as(Set.wireFormat8).deserialize],
109
- [Opcode.SET_16, Set.as(Set.wireFormat16).deserialize],
110
- [Opcode.SET_32, Set.as(Set.wireFormat32).deserialize],
111
- [Opcode.SET_64, Set.as(Set.wireFormat64).deserialize],
112
- [Opcode.SET_128, Set.as(Set.wireFormat128).deserialize],
113
- [Opcode.SET_FF, Set.as(Set.wireFormatFF).deserialize],
114
- [Opcode.MOV_8, Mov.as(Mov.wireFormat8).deserialize],
115
- [Opcode.MOV_16, Mov.as(Mov.wireFormat16).deserialize],
102
+ [Jump.opcode, Instruction.fromBuffer.bind(Jump)],
103
+ [JumpI.opcode, Instruction.fromBuffer.bind(JumpI)],
104
+ [InternalCall.opcode, Instruction.fromBuffer.bind(InternalCall)],
105
+ [InternalReturn.opcode, Instruction.fromBuffer.bind(InternalReturn)],
106
+ [Opcode.SET_8, Set.as(Set.wireFormat8).fromBuffer],
107
+ [Opcode.SET_16, Set.as(Set.wireFormat16).fromBuffer],
108
+ [Opcode.SET_32, Set.as(Set.wireFormat32).fromBuffer],
109
+ [Opcode.SET_64, Set.as(Set.wireFormat64).fromBuffer],
110
+ [Opcode.SET_128, Set.as(Set.wireFormat128).fromBuffer],
111
+ [Opcode.SET_FF, Set.as(Set.wireFormatFF).fromBuffer],
112
+ [Opcode.MOV_8, Mov.as(Mov.wireFormat8).fromBuffer],
113
+ [Opcode.MOV_16, Mov.as(Mov.wireFormat16).fromBuffer],
116
114
 
117
115
  // World State
118
- [SLoad.opcode, Instruction.deserialize.bind(SLoad)], // Public Storage
119
- [SStore.opcode, Instruction.deserialize.bind(SStore)], // Public Storage
120
- [NoteHashExists.opcode, Instruction.deserialize.bind(NoteHashExists)], // Notes & Nullifiers
121
- [EmitNoteHash.opcode, Instruction.deserialize.bind(EmitNoteHash)], // Notes & Nullifiers
122
- [NullifierExists.opcode, Instruction.deserialize.bind(NullifierExists)], // Notes & Nullifiers
123
- [EmitNullifier.opcode, Instruction.deserialize.bind(EmitNullifier)], // Notes & Nullifiers
124
- [L1ToL2MessageExists.opcode, Instruction.deserialize.bind(L1ToL2MessageExists)], // Messages
116
+ [SLoad.opcode, Instruction.fromBuffer.bind(SLoad)], // Public Storage
117
+ [SStore.opcode, Instruction.fromBuffer.bind(SStore)], // Public Storage
118
+ [NoteHashExists.opcode, Instruction.fromBuffer.bind(NoteHashExists)], // Notes & Nullifiers
119
+ [EmitNoteHash.opcode, Instruction.fromBuffer.bind(EmitNoteHash)], // Notes & Nullifiers
120
+ [NullifierExists.opcode, Instruction.fromBuffer.bind(NullifierExists)], // Notes & Nullifiers
121
+ [EmitNullifier.opcode, Instruction.fromBuffer.bind(EmitNullifier)], // Notes & Nullifiers
122
+ [L1ToL2MessageExists.opcode, Instruction.fromBuffer.bind(L1ToL2MessageExists)], // Messages
125
123
 
126
124
  // Accrued Substate
127
- [EmitUnencryptedLog.opcode, Instruction.deserialize.bind(EmitUnencryptedLog)],
128
- [SendL2ToL1Message.opcode, Instruction.deserialize.bind(SendL2ToL1Message)],
129
- [GetContractInstance.opcode, Instruction.deserialize.bind(GetContractInstance)],
125
+ [EmitUnencryptedLog.opcode, Instruction.fromBuffer.bind(EmitUnencryptedLog)],
126
+ [SendL2ToL1Message.opcode, Instruction.fromBuffer.bind(SendL2ToL1Message)],
127
+ [GetContractInstance.opcode, Instruction.fromBuffer.bind(GetContractInstance)],
130
128
 
131
129
  // Control Flow - Contract Calls
132
- [Call.opcode, Instruction.deserialize.bind(Call)],
133
- [StaticCall.opcode, Instruction.deserialize.bind(StaticCall)],
134
- [Return.opcode, Instruction.deserialize.bind(Return)],
135
- [Opcode.REVERT_8, Revert.as(Revert.wireFormat8).deserialize],
136
- [Opcode.REVERT_16, Revert.as(Revert.wireFormat16).deserialize],
130
+ [Call.opcode, Instruction.fromBuffer.bind(Call)],
131
+ [StaticCall.opcode, Instruction.fromBuffer.bind(StaticCall)],
132
+ [Return.opcode, Instruction.fromBuffer.bind(Return)],
133
+ [Opcode.REVERT_8, Revert.as(Revert.wireFormat8).fromBuffer],
134
+ [Opcode.REVERT_16, Revert.as(Revert.wireFormat16).fromBuffer],
137
135
 
138
136
  // Misc
139
- [DebugLog.opcode, Instruction.deserialize.bind(DebugLog)],
137
+ [DebugLog.opcode, Instruction.fromBuffer.bind(DebugLog)],
140
138
 
141
139
  // Gadgets
142
- [EcAdd.opcode, Instruction.deserialize.bind(EcAdd)],
143
- [Poseidon2.opcode, Instruction.deserialize.bind(Poseidon2)],
144
- [Sha256Compression.opcode, Instruction.deserialize.bind(Sha256Compression)],
145
- [KeccakF1600.opcode, Instruction.deserialize.bind(KeccakF1600)],
140
+ [EcAdd.opcode, Instruction.fromBuffer.bind(EcAdd)],
141
+ [Poseidon2.opcode, Instruction.fromBuffer.bind(Poseidon2)],
142
+ [Sha256Compression.opcode, Instruction.fromBuffer.bind(Sha256Compression)],
143
+ [KeccakF1600.opcode, Instruction.fromBuffer.bind(KeccakF1600)],
146
144
 
147
145
  // Conversions
148
- [ToRadixBE.opcode, Instruction.deserialize.bind(ToRadixBE)],
146
+ [ToRadixBE.opcode, Instruction.fromBuffer.bind(ToRadixBE)],
149
147
  ]);
150
148
 
151
149
  /**
152
150
  * Serializes an array of instructions to bytecode.
153
151
  */
154
- export function encodeToBytecode(instructions: Serializable[]): Buffer {
155
- return Buffer.concat(instructions.map(i => i.serialize()));
152
+ export function encodeToBytecode(instructions: Bufferable[]): Buffer {
153
+ return serializeToBuffer(instructions);
156
154
  }
157
155
 
158
156
  // For testing only
@@ -1,5 +1,8 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+
1
3
  import { strict as assert } from 'assert';
2
4
 
5
+ import { TaggedMemory } from '../avm_memory_types.js';
3
6
  import { BufferCursor } from './buffer_cursor.js';
4
7
 
5
8
  /**
@@ -92,10 +95,8 @@ export const MAX_OPCODE_VALUE = Math.max(
92
95
  .filter(k => !isNaN(k)),
93
96
  );
94
97
 
95
- // Possible types for an instruction's operand in its wire format. (Keep in sync with CPP code.
96
- // See vm/avm_trace/deserialization.cpp)
97
- // Note that cpp code introduced an additional enum value TAG to express the instruction tag. In TS,
98
- // this one is parsed as UINT8.
98
+ // Possible types for an instruction's operand in its wire format.
99
+ // The counterpart cpp file is: vm2/simulation/lib/serialization.hpp.
99
100
  export enum OperandType {
100
101
  UINT8,
101
102
  UINT16,
@@ -103,8 +104,12 @@ export enum OperandType {
103
104
  UINT64,
104
105
  UINT128,
105
106
  FF,
107
+ TAG,
106
108
  }
107
109
 
110
+ // Define a type that represents the possible types of the deserialized values.
111
+ type DeserializedValue = number | bigint;
112
+
108
113
  type OperandNativeType = number | bigint;
109
114
  type OperandWriter = (value: any) => void;
110
115
 
@@ -113,45 +118,58 @@ const OPERAND_SPEC = new Map<OperandType, [number, (offset: number) => OperandNa
113
118
  [OperandType.UINT8, [1, Buffer.prototype.readUint8, Buffer.prototype.writeUint8]],
114
119
  [OperandType.UINT16, [2, Buffer.prototype.readUint16BE, Buffer.prototype.writeUint16BE]],
115
120
  [OperandType.UINT32, [4, Buffer.prototype.readUint32BE, Buffer.prototype.writeUint32BE]],
116
- [OperandType.UINT64, [8, Buffer.prototype.readBigInt64BE, Buffer.prototype.writeBigInt64BE]],
117
- [OperandType.UINT128, [16, readBigInt128BE, writeBigInt128BE]],
118
- [OperandType.FF, [32, readBigInt254BE, writeBigInt254BE]],
121
+ [OperandType.UINT64, [8, readUint64BE, writeUint64BE]],
122
+ [OperandType.UINT128, [16, readUint128BE, writeUint128BE]],
123
+ [OperandType.FF, [32, readUint254BE, writeUint254BE]],
124
+ [OperandType.TAG, [1, Buffer.prototype.readUint8, Buffer.prototype.writeUint8]],
119
125
  ]);
120
126
 
121
- function readBigInt254BE(this: Buffer, offset: number): bigint {
122
- const totalBytes = 32;
123
- let ret: bigint = 0n;
127
+ function readUintBE(buf: Buffer, offset: number, totalBytes: number): bigint {
128
+ let value: bigint = 0n;
124
129
  for (let i = 0; i < totalBytes; ++i) {
125
- ret <<= 8n;
126
- ret |= BigInt(this.readUint8(i + offset));
130
+ value <<= 8n;
131
+ value |= BigInt(buf.readUint8(i + offset));
127
132
  }
128
- return ret;
133
+ return value;
129
134
  }
130
135
 
131
- function writeBigInt254BE(this: Buffer, value: bigint): void {
132
- const totalBytes = 32;
136
+ function writeUintBE(buf: Buffer, value: bigint, totalBytes: number): void {
133
137
  for (let offset = totalBytes - 1; offset >= 0; --offset) {
134
- this.writeUint8(Number(value & 0xffn), offset);
138
+ buf.writeUint8(Number(value & 0xffn), offset);
135
139
  value >>= 8n;
136
140
  }
137
141
  }
138
142
 
139
- function readBigInt128BE(this: Buffer, offset: number): bigint {
140
- const totalBytes = 16;
141
- let ret: bigint = 0n;
142
- for (let i = 0; i < totalBytes; ++i) {
143
- ret <<= 8n;
144
- ret |= BigInt(this.readUint8(i + offset));
145
- }
146
- return ret;
143
+ function readUint64BE(this: Buffer, offset: number): bigint {
144
+ return readUintBE(this, offset, 8);
147
145
  }
148
146
 
149
- function writeBigInt128BE(this: Buffer, value: bigint): void {
150
- const totalBytes = 16;
151
- for (let offset = totalBytes - 1; offset >= 0; --offset) {
152
- this.writeUint8(Number(value & 0xffn), offset);
153
- value >>= 8n;
147
+ function writeUint64BE(this: Buffer, value: bigint): void {
148
+ writeUintBE(this, value, 8);
149
+ }
150
+
151
+ function readUint254BE(this: Buffer, offset: number): bigint {
152
+ let value = readUintBE(this, offset, 32);
153
+
154
+ // In circuit, we only support values up to Fr.MODULUS and any deserialized value
155
+ // would naturally undergo a modulus reduction.
156
+ if (value >= Fr.MODULUS) {
157
+ value = value % Fr.MODULUS;
154
158
  }
159
+
160
+ return value;
161
+ }
162
+
163
+ function writeUint254BE(this: Buffer, value: bigint): void {
164
+ writeUintBE(this, value, 32);
165
+ }
166
+
167
+ function readUint128BE(this: Buffer, offset: number): bigint {
168
+ return readUintBE(this, offset, 16);
169
+ }
170
+
171
+ function writeUint128BE(this: Buffer, value: bigint): void {
172
+ writeUintBE(this, value, 16);
155
173
  }
156
174
 
157
175
  /**
@@ -160,19 +178,30 @@ function writeBigInt128BE(this: Buffer, value: bigint): void {
160
178
  * @param operands Specification of the operand types.
161
179
  * @returns An array as big as {@code operands}, with the converted TS values.
162
180
  */
163
- export function deserialize(cursor: BufferCursor | Buffer, operands: OperandType[]): (number | bigint)[] {
164
- const argValues = [];
181
+ export function deserialize(cursor: BufferCursor | Buffer, operands: OperandType[]): DeserializedValue[] {
182
+ const argValues: DeserializedValue[] = [];
165
183
  if (Buffer.isBuffer(cursor)) {
166
184
  cursor = new BufferCursor(cursor);
167
185
  }
168
186
 
169
- for (const op of operands) {
170
- const opType = op;
187
+ for (const opType of operands) {
171
188
  const [sizeBytes, reader, _writer] = OPERAND_SPEC.get(opType)!;
172
- argValues.push(reader.call(cursor.buffer(), cursor.position()));
189
+ const value = reader.call(cursor.buffer(), cursor.position());
190
+ argValues.push(value);
173
191
  cursor.advance(sizeBytes);
174
192
  }
175
193
 
194
+ // We first want to detect other parsing errors (e.g., instruction size
195
+ // is longer than remaining bytes) first and therefore tag validation is done after completion
196
+ // of parsing above. Order of errors need to match with circuit.
197
+ for (let i = 0; i < operands.length; i++) {
198
+ if (operands[i] === OperandType.TAG) {
199
+ // We parsed a single byte (readUInt8()) and therefore value is of number type (not bigint)
200
+ // We need to cast to number because checkIsValidTag expects a number.
201
+ TaggedMemory.checkIsValidTag(Number(argValues[i] ?? 0));
202
+ }
203
+ }
204
+
176
205
  return argValues;
177
206
  }
178
207
 
@@ -1,48 +1,35 @@
1
1
  import { Fr } from '@aztec/foundation/fields';
2
- import {
3
- type ContractClassPublic,
4
- type ContractInstanceWithAddress,
5
- computePublicBytecodeCommitment,
6
- } from '@aztec/stdlib/contract';
2
+ import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
7
3
 
8
4
  import type { jest } from '@jest/globals';
9
5
  import { mock } from 'jest-mock-extended';
10
6
 
11
- import type { WorldStateDB } from '../../public/public_db_sources.js';
7
+ import type { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js';
12
8
  import type { PublicSideEffectTraceInterface } from '../side_effect_trace_interface.js';
13
9
 
14
- export async function mockGetBytecode(worldStateDB: WorldStateDB, bytecode: Buffer) {
15
- const commitment = await computePublicBytecodeCommitment(bytecode);
16
- (worldStateDB as jest.Mocked<WorldStateDB>).getBytecodeCommitment.mockResolvedValue(commitment);
17
- }
18
-
19
10
  export function mockTraceFork(trace: PublicSideEffectTraceInterface, nestedTrace?: PublicSideEffectTraceInterface) {
20
11
  (trace as jest.Mocked<PublicSideEffectTraceInterface>).fork.mockReturnValue(
21
12
  nestedTrace ?? mock<PublicSideEffectTraceInterface>(),
22
13
  );
23
14
  }
24
15
 
25
- export function mockStorageRead(worldStateDB: WorldStateDB, value: Fr) {
26
- (worldStateDB as jest.Mocked<WorldStateDB>).storageRead.mockResolvedValue(value);
16
+ export function mockStorageRead(worldStateDB: PublicTreesDB, value: Fr) {
17
+ (worldStateDB as jest.Mocked<PublicTreesDB>).storageRead.mockResolvedValue(value);
27
18
  }
28
19
 
29
20
  export function mockNoteHashCount(mockedTrace: PublicSideEffectTraceInterface, count: number) {
30
21
  (mockedTrace as jest.Mocked<PublicSideEffectTraceInterface>).getNoteHashCount.mockReturnValue(count);
31
22
  }
32
23
 
33
- export function mockStorageReadWithMap(worldStateDB: WorldStateDB, mockedStorage: Map<bigint, Fr>) {
34
- (worldStateDB as jest.Mocked<WorldStateDB>).storageRead.mockImplementation((_address, slot) =>
24
+ export function mockStorageReadWithMap(worldStateDB: PublicTreesDB, mockedStorage: Map<bigint, Fr>) {
25
+ (worldStateDB as jest.Mocked<PublicTreesDB>).storageRead.mockImplementation((_address, slot) =>
35
26
  Promise.resolve(mockedStorage.get(slot.toBigInt()) ?? Fr.ZERO),
36
27
  );
37
28
  }
38
29
 
39
- export function mockGetBytecodeCommitment(worldStateDB: WorldStateDB, commitment: Fr) {
40
- (worldStateDB as jest.Mocked<WorldStateDB>).getBytecodeCommitment.mockResolvedValue(commitment);
41
- }
42
-
43
- export function mockNoteHashExists(worldStateDB: WorldStateDB, _leafIndex: Fr, value?: Fr) {
44
- (worldStateDB as jest.Mocked<WorldStateDB>).getCommitmentValue.mockImplementation((index: bigint) => {
45
- if (index == _leafIndex.toBigInt()) {
30
+ export function mockNoteHashExists(worldStateDB: PublicTreesDB, _leafIndex: bigint, value?: Fr) {
31
+ (worldStateDB as jest.Mocked<PublicTreesDB>).getNoteHash.mockImplementation((index: bigint) => {
32
+ if (index == _leafIndex) {
46
33
  return Promise.resolve(value);
47
34
  } else {
48
35
  // This is ok for now since the traceing functions handle it
@@ -51,18 +38,18 @@ export function mockNoteHashExists(worldStateDB: WorldStateDB, _leafIndex: Fr, v
51
38
  });
52
39
  }
53
40
 
54
- export function mockGetNullifierIndex(worldStateDB: WorldStateDB, leafIndex: Fr, _ignoredValue?: Fr) {
55
- (worldStateDB as jest.Mocked<WorldStateDB>).getNullifierIndex.mockResolvedValue(leafIndex.toBigInt());
41
+ export function mockCheckNullifierExists(worldStateDB: PublicTreesDB, exists: boolean, _ignoredValue?: Fr) {
42
+ (worldStateDB as jest.Mocked<PublicTreesDB>).checkNullifierExists.mockResolvedValue(exists);
56
43
  }
57
44
 
58
45
  export function mockL1ToL2MessageExists(
59
- worldStateDB: WorldStateDB,
60
- leafIndex: Fr,
46
+ worldStateDB: PublicTreesDB,
47
+ leafIndex: bigint,
61
48
  value: Fr,
62
49
  valueAtOtherIndices?: Fr,
63
50
  ) {
64
- (worldStateDB as jest.Mocked<WorldStateDB>).getL1ToL2LeafValue.mockImplementation((index: bigint) => {
65
- if (index == leafIndex.toBigInt()) {
51
+ (worldStateDB as jest.Mocked<PublicTreesDB>).getL1ToL2LeafValue.mockImplementation((index: bigint) => {
52
+ if (index == leafIndex) {
66
53
  return Promise.resolve(value);
67
54
  } else {
68
55
  // any indices other than mockAtLeafIndex will return a different value
@@ -72,10 +59,14 @@ export function mockL1ToL2MessageExists(
72
59
  });
73
60
  }
74
61
 
75
- export function mockGetContractInstance(worldStateDB: WorldStateDB, contractInstance: ContractInstanceWithAddress) {
76
- (worldStateDB as jest.Mocked<WorldStateDB>).getContractInstance.mockResolvedValue(contractInstance);
62
+ export function mockGetContractInstance(contractsDB: PublicContractsDB, contractInstance: ContractInstanceWithAddress) {
63
+ (contractsDB as jest.Mocked<PublicContractsDB>).getContractInstance.mockResolvedValue(contractInstance);
64
+ }
65
+
66
+ export function mockGetContractClass(contractsDB: PublicContractsDB, contractClass: ContractClassPublic) {
67
+ (contractsDB as jest.Mocked<PublicContractsDB>).getContractClass.mockResolvedValue(contractClass);
77
68
  }
78
69
 
79
- export function mockGetContractClass(worldStateDB: WorldStateDB, contractClass: ContractClassPublic) {
80
- (worldStateDB as jest.Mocked<WorldStateDB>).getContractClass.mockResolvedValue(contractClass);
70
+ export function mockGetBytecodeCommitment(contractsDB: PublicContractsDB, commitment: Fr) {
71
+ (contractsDB as jest.Mocked<PublicContractsDB>).getBytecodeCommitment.mockResolvedValue(commitment);
81
72
  }
@@ -0,0 +1,61 @@
1
+ import type { Fr } from '@aztec/foundation/fields';
2
+ import type { FunctionSelector } from '@aztec/stdlib/abi';
3
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
5
+ import type { UInt64 } from '@aztec/stdlib/types';
6
+
7
+ /**
8
+ * Database interface for providing access to public state.
9
+ */
10
+ export interface PublicStateDBInterface {
11
+ /**
12
+ * Reads a value from public storage, returning zero if none.
13
+ * @param contract - Owner of the storage.
14
+ * @param slot - Slot to read in the contract storage.
15
+ * @returns The current value in the storage slot.
16
+ */
17
+ storageRead(contract: AztecAddress, slot: Fr): Promise<Fr>;
18
+
19
+ /**
20
+ * Records a write to public storage.
21
+ * @param contract - Owner of the storage.
22
+ * @param slot - Slot to read in the contract storage.
23
+ * @param newValue - The new value to store.
24
+ */
25
+ storageWrite(contract: AztecAddress, slot: Fr, newValue: Fr): Promise<void>;
26
+ }
27
+
28
+ /**
29
+ * Database interface for providing access to public contract data.
30
+ */
31
+ export interface PublicContractsDBInterface {
32
+ /**
33
+ * Returns a contract instance given its address and the given timestamp, or undefined if not exists.
34
+ * @param address - Address of the contract.
35
+ * @param timestamp - Timestamp to get the contract instance at. Contract updates might change the instance.
36
+ * @returns The contract instance or undefined if not found.
37
+ */
38
+ getContractInstance(address: AztecAddress, timestamp: UInt64): Promise<ContractInstanceWithAddress | undefined>;
39
+
40
+ /**
41
+ * Returns a publicly deployed contract class.
42
+ * @param contractClassId - ID of the contract class.
43
+ * @returns The contract class or undefined if not found
44
+ */
45
+ getContractClass(contractClassId: Fr): Promise<ContractClassPublic | undefined>;
46
+
47
+ /**
48
+ * Returns the commitment to the bytecode of a contract class.
49
+ * @param contractClassId - ID of the contract class.
50
+ * @returns The commitment to the bytecode or undefined if not found.
51
+ */
52
+ getBytecodeCommitment(contractClassId: Fr): Promise<Fr | undefined>;
53
+
54
+ /**
55
+ * Returns the function name of a contract's function given its selector.
56
+ * @param contractAddress - Address of the contract.
57
+ * @param selector - Selector of the function.
58
+ * @returns The name of the function or undefined if not found.
59
+ */
60
+ getDebugFunctionName(contractAddress: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
61
+ }
@@ -2,17 +2,17 @@ import type { Fr } from '@aztec/foundation/fields';
2
2
  import { FunctionSelector } from '@aztec/stdlib/abi';
3
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
 
5
- import type { WorldStateDB } from '../public/public_db_sources.js';
5
+ import type { PublicContractsDBInterface } from './db_interfaces.js';
6
6
 
7
7
  export async function getPublicFunctionDebugName(
8
- db: WorldStateDB,
8
+ db: PublicContractsDBInterface,
9
9
  contractAddress: AztecAddress,
10
10
  calldata: Fr[],
11
11
  ): Promise<string> {
12
12
  // Public function is dispatched and therefore the target function is passed in the first argument.
13
- const targetFunction =
14
- calldata[0] !== undefined
15
- ? await db.getDebugFunctionName(contractAddress, FunctionSelector.fromField(calldata[0]))
16
- : `<calldata[0] undefined> (Contract Address: ${contractAddress})`;
17
- return `${targetFunction}`;
13
+ if (!calldata[0]) {
14
+ return `<calldata[0] undefined> (Contract Address: ${contractAddress})`;
15
+ }
16
+ const selector = FunctionSelector.fromField(calldata[0]);
17
+ return (await db.getDebugFunctionName(contractAddress, selector)) ?? selector.toString();
18
18
  }
@@ -1,3 +1,4 @@
1
+ import type { RevertCode } from '@aztec/stdlib/avm';
1
2
  import {
2
3
  Attributes,
3
4
  type Histogram,
@@ -8,11 +9,16 @@ import {
8
9
  ValueType,
9
10
  } from '@aztec/telemetry-client';
10
11
 
11
- export class ExecutorMetrics {
12
+ import type { ExecutorMetricsInterface } from './executor_metrics_interface.js';
13
+
14
+ export class ExecutorMetrics implements ExecutorMetricsInterface {
12
15
  public readonly tracer: Tracer;
13
16
  private fnCount: UpDownCounter;
14
17
  private fnDuration: Histogram;
15
18
  private manaPerSecond: Histogram;
19
+ private manaUsed: Histogram;
20
+ private totalInstructionsExecuted: Histogram;
21
+ private txHashing: Histogram;
16
22
  private privateEffectsInsertions: Histogram;
17
23
 
18
24
  constructor(client: TelemetryClient, name = 'PublicExecutor') {
@@ -35,20 +41,58 @@ export class ExecutorMetrics {
35
41
  valueType: ValueType.INT,
36
42
  });
37
43
 
38
- this.privateEffectsInsertions = meter.createHistogram(Metrics.PUBLIC_EXECUTION_PRIVATE_EFFECTS_INSERTION, {
44
+ this.manaUsed = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_SIMULATION_MANA_USED, {
45
+ description: 'Total mana used',
46
+ unit: 'mana',
47
+ valueType: ValueType.INT,
48
+ });
49
+
50
+ this.totalInstructionsExecuted = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_SIMULATION_TOTAL_INSTRUCTIONS, {
51
+ description: 'Total number of instructions executed',
52
+ unit: '#instructions',
53
+ valueType: ValueType.INT,
54
+ });
55
+
56
+ this.txHashing = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_TX_HASHING, {
57
+ description: 'Tx hashing time',
58
+ unit: 'ms',
59
+ valueType: ValueType.INT,
60
+ });
61
+
62
+ this.privateEffectsInsertions = meter.createHistogram(Metrics.PUBLIC_EXECUTOR_PRIVATE_EFFECTS_INSERTION, {
39
63
  description: 'Private effects insertion time',
40
64
  unit: 'us',
41
65
  valueType: ValueType.INT,
42
66
  });
43
67
  }
44
68
 
45
- recordFunctionSimulation(durationMs: number, manaUsed: number, fnName: string) {
69
+ startRecordingTxSimulation(_txLabel: string) {
70
+ // do nothing (unimplemented)
71
+ }
72
+
73
+ stopRecordingTxSimulation(_txLabel: string, _revertedCode?: RevertCode) {
74
+ // do nothing (unimplemented)
75
+ }
76
+
77
+ recordEnqueuedCallSimulation(
78
+ fnName: string,
79
+ durationMs: number,
80
+ manaUsed: number,
81
+ totalInstructionsExecuted: number,
82
+ ) {
46
83
  this.fnCount.add(1, {
47
84
  [Attributes.OK]: true,
48
85
  [Attributes.APP_CIRCUIT_NAME]: fnName,
49
- [Attributes.MANA_USED]: manaUsed,
50
86
  });
51
- this.fnDuration.record(Math.ceil(durationMs));
87
+ this.manaUsed.record(Math.ceil(manaUsed), {
88
+ [Attributes.APP_CIRCUIT_NAME]: fnName,
89
+ });
90
+ this.totalInstructionsExecuted.record(Math.ceil(totalInstructionsExecuted), {
91
+ [Attributes.APP_CIRCUIT_NAME]: fnName,
92
+ });
93
+ this.fnDuration.record(Math.ceil(durationMs), {
94
+ [Attributes.APP_CIRCUIT_NAME]: fnName,
95
+ });
52
96
  if (durationMs > 0 && manaUsed > 0) {
53
97
  const manaPerSecond = Math.round((manaUsed * 1000) / durationMs);
54
98
  this.manaPerSecond.record(manaPerSecond, {
@@ -57,7 +101,12 @@ export class ExecutorMetrics {
57
101
  }
58
102
  }
59
103
 
60
- recordFunctionSimulationFailure() {
104
+ recordEnqueuedCallSimulationFailure(
105
+ _fnName: string,
106
+ _durationMs: number,
107
+ _manaUsed: number,
108
+ _totalInstructionsExecuted: number,
109
+ ) {
61
110
  this.fnCount.add(1, {
62
111
  [Attributes.OK]: false,
63
112
  });
@@ -0,0 +1,14 @@
1
+ import type { RevertCode } from '@aztec/stdlib/avm';
2
+
3
+ export interface ExecutorMetricsInterface {
4
+ startRecordingTxSimulation(txLabel: string): void;
5
+ stopRecordingTxSimulation(txLabel: string, revertedCode?: RevertCode): void;
6
+ recordEnqueuedCallSimulation(fnName: string, durationMs: number, manaUsed: number, totalInstructions: number): void;
7
+ recordEnqueuedCallSimulationFailure(
8
+ fnName: string,
9
+ durationMs: number,
10
+ manaUsed: number,
11
+ totalInstructionsExecuted: number,
12
+ ): void;
13
+ recordPrivateEffectsInsertion(durationUs: number, type: 'revertible' | 'non-revertible'): void;
14
+ }