@aztec/simulator 0.0.1-commit.d3ec352c → 0.0.1-commit.d58ff9d0

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 (391) hide show
  1. package/README.md +6 -4
  2. package/dest/client.d.ts +1 -3
  3. package/dest/client.d.ts.map +1 -1
  4. package/dest/client.js +0 -2
  5. package/dest/common/errors.d.ts +8 -2
  6. package/dest/common/errors.d.ts.map +1 -1
  7. package/dest/private/acvm/acvm.d.ts +4 -2
  8. package/dest/private/acvm/acvm.d.ts.map +1 -1
  9. package/dest/private/acvm/acvm.js +4 -3
  10. package/dest/private/acvm/deserialize.d.ts +2 -2
  11. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  12. package/dest/private/acvm/deserialize.js +1 -1
  13. package/dest/private/acvm/serialize.d.ts +2 -2
  14. package/dest/private/acvm/serialize.d.ts.map +1 -1
  15. package/dest/private/acvm/serialize.js +1 -1
  16. package/dest/private/acvm_native.d.ts +5 -3
  17. package/dest/private/acvm_native.d.ts.map +1 -1
  18. package/dest/private/acvm_native.js +8 -6
  19. package/dest/private/acvm_wasm.d.ts +4 -3
  20. package/dest/private/acvm_wasm.d.ts.map +1 -1
  21. package/dest/private/acvm_wasm.js +7 -5
  22. package/dest/private/circuit_recording/circuit_recorder.d.ts +39 -25
  23. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  24. package/dest/private/circuit_recording/circuit_recorder.js +71 -72
  25. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +9 -20
  26. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  27. package/dest/private/circuit_recording/file_circuit_recorder.js +39 -43
  28. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +7 -2
  29. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
  30. package/dest/private/circuit_recording/memory_circuit_recorder.js +4 -4
  31. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  32. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  33. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +11 -14
  34. package/dest/private/factory.d.ts +3 -3
  35. package/dest/private/factory.d.ts.map +1 -1
  36. package/dest/private/factory.js +7 -4
  37. package/dest/public/avm/testing/account_proof_fetcher.d.ts +2 -0
  38. package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
  39. package/dest/public/avm/testing/account_proof_fetcher.js +152 -0
  40. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +3 -2
  41. package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +1 -0
  42. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.js +19 -4
  43. package/dest/public/avm/testing/utils.d.ts +32 -0
  44. package/dest/public/avm/testing/utils.d.ts.map +1 -0
  45. package/dest/public/avm/{fixtures → testing}/utils.js +5 -35
  46. package/dest/public/avm_simulator.d.ts +28 -0
  47. package/dest/public/avm_simulator.d.ts.map +1 -0
  48. package/dest/public/avm_simulator.js +4 -0
  49. package/dest/public/avm_simulator_pool.d.ts +45 -0
  50. package/dest/public/avm_simulator_pool.d.ts.map +1 -0
  51. package/dest/public/avm_simulator_pool.js +197 -0
  52. package/dest/public/cdb/generated/api_types.d.ts +171 -0
  53. package/dest/public/cdb/generated/api_types.d.ts.map +1 -0
  54. package/dest/public/cdb/generated/api_types.js +314 -0
  55. package/dest/public/cdb/generated/server.d.ts +26 -0
  56. package/dest/public/cdb/generated/server.d.ts.map +1 -0
  57. package/dest/public/cdb/generated/server.js +135 -0
  58. package/dest/public/cdb_ipc_server.d.ts +33 -0
  59. package/dest/public/cdb_ipc_server.d.ts.map +1 -0
  60. package/dest/public/cdb_ipc_server.js +153 -0
  61. package/dest/public/contracts_db_checkpoint.d.ts +3 -3
  62. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -1
  63. package/dest/public/contracts_db_checkpoint.js +1 -1
  64. package/dest/public/db_interfaces.d.ts +2 -2
  65. package/dest/public/db_interfaces.d.ts.map +1 -1
  66. package/dest/public/executor_metrics.d.ts +1 -1
  67. package/dest/public/executor_metrics.d.ts.map +1 -1
  68. package/dest/public/executor_metrics.js +12 -33
  69. package/dest/public/fixtures/amm_test.js +6 -6
  70. package/dest/public/fixtures/bulk_test.d.ts +3 -3
  71. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  72. package/dest/public/fixtures/bulk_test.js +38 -75
  73. package/dest/public/fixtures/custom_bytecode_tester.d.ts +28 -6
  74. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  75. package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
  76. package/dest/public/fixtures/index.d.ts +3 -3
  77. package/dest/public/fixtures/index.d.ts.map +1 -1
  78. package/dest/public/fixtures/index.js +2 -2
  79. package/dest/public/fixtures/public_processor_test_env.d.ts +30 -0
  80. package/dest/public/fixtures/public_processor_test_env.d.ts.map +1 -0
  81. package/dest/public/fixtures/public_processor_test_env.js +73 -0
  82. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +24 -6
  83. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  84. package/dest/public/fixtures/public_tx_simulation_tester.js +66 -21
  85. package/dest/public/fixtures/simple_contract_data_source.d.ts +2 -2
  86. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
  87. package/dest/public/fixtures/simple_contract_data_source.js +1 -1
  88. package/dest/public/fixtures/token_test.js +4 -4
  89. package/dest/public/fixtures/utils.d.ts +3 -3
  90. package/dest/public/fixtures/utils.d.ts.map +1 -1
  91. package/dest/public/fixtures/utils.js +25 -23
  92. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +67 -0
  93. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  94. package/dest/public/fuzzing/avm_fuzzer_simulator.js +185 -0
  95. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  96. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  97. package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
  98. package/dest/public/index.d.ts +5 -2
  99. package/dest/public/index.d.ts.map +1 -1
  100. package/dest/public/index.js +2 -1
  101. package/dest/public/public_db_sources.d.ts +10 -6
  102. package/dest/public/public_db_sources.d.ts.map +1 -1
  103. package/dest/public/public_db_sources.js +21 -15
  104. package/dest/public/public_processor/guarded_merkle_tree.d.ts +8 -6
  105. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  106. package/dest/public/public_processor/guarded_merkle_tree.js +12 -4
  107. package/dest/public/public_processor/public_processor.d.ts +17 -8
  108. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  109. package/dest/public/public_processor/public_processor.js +535 -100
  110. package/dest/public/public_processor/public_processor_metrics.d.ts +5 -2
  111. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  112. package/dest/public/public_processor/public_processor_metrics.js +36 -45
  113. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +17 -0
  114. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
  115. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.js +39 -0
  116. package/dest/public/public_tx_simulator/factories.d.ts +14 -0
  117. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  118. package/dest/public/public_tx_simulator/factories.js +28 -0
  119. package/dest/public/public_tx_simulator/index.d.ts +5 -5
  120. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  121. package/dest/public/public_tx_simulator/index.js +3 -3
  122. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +43 -70
  123. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  124. package/dest/public/public_tx_simulator/public_tx_simulator.js +99 -312
  125. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +24 -0
  126. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
  127. package/dest/public/public_tx_simulator/public_tx_simulator_base.js +31 -0
  128. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +24 -1
  129. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
  130. package/dest/public/test_executor_metrics.d.ts +3 -2
  131. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  132. package/dest/public/test_executor_metrics.js +2 -2
  133. package/package.json +23 -20
  134. package/src/client.ts +0 -2
  135. package/src/common/errors.ts +1 -1
  136. package/src/private/acvm/acvm.ts +4 -3
  137. package/src/private/acvm/deserialize.ts +1 -1
  138. package/src/private/acvm/serialize.ts +1 -1
  139. package/src/private/acvm_native.ts +11 -5
  140. package/src/private/acvm_wasm.ts +11 -4
  141. package/src/private/circuit_recording/circuit_recorder.ts +90 -81
  142. package/src/private/circuit_recording/file_circuit_recorder.ts +45 -50
  143. package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
  144. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +9 -15
  145. package/src/private/factory.ts +7 -4
  146. package/src/public/avm/testing/account_proof.json +553 -0
  147. package/src/public/avm/testing/account_proof_fetcher.ts +166 -0
  148. package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +24 -4
  149. package/src/public/avm/{fixtures → testing}/utils.ts +5 -41
  150. package/src/public/avm_simulator.ts +29 -0
  151. package/src/public/avm_simulator_pool.ts +226 -0
  152. package/src/public/cdb/generated/api_types.ts +457 -0
  153. package/src/public/cdb/generated/server.ts +109 -0
  154. package/src/public/cdb_ipc_server.ts +197 -0
  155. package/src/public/contracts_db_checkpoint.ts +2 -2
  156. package/src/public/db_interfaces.ts +1 -1
  157. package/src/public/executor_metrics.ts +9 -33
  158. package/src/public/fixtures/amm_test.ts +6 -6
  159. package/src/public/fixtures/bulk_test.ts +40 -15
  160. package/src/public/fixtures/custom_bytecode_tester.ts +53 -19
  161. package/src/public/fixtures/index.ts +6 -2
  162. package/src/public/fixtures/public_processor_test_env.ts +88 -0
  163. package/src/public/fixtures/public_tx_simulation_tester.ts +82 -21
  164. package/src/public/fixtures/simple_contract_data_source.ts +2 -2
  165. package/src/public/fixtures/token_test.ts +4 -4
  166. package/src/public/fixtures/utils.ts +25 -27
  167. package/src/public/fuzzing/avm_fuzzer_simulator.ts +303 -0
  168. package/src/public/fuzzing/avm_simulator_bin.ts +173 -0
  169. package/src/public/index.ts +8 -2
  170. package/src/public/public_db_sources.ts +37 -20
  171. package/src/public/public_processor/guarded_merkle_tree.ts +14 -7
  172. package/src/public/public_processor/public_processor.ts +188 -102
  173. package/src/public/public_processor/public_processor_metrics.ts +28 -44
  174. package/src/public/public_tx_simulator/dumping_public_tx_simulator.ts +67 -0
  175. package/src/public/public_tx_simulator/factories.ts +61 -0
  176. package/src/public/public_tx_simulator/index.ts +7 -4
  177. package/src/public/public_tx_simulator/public_tx_simulator.ts +143 -458
  178. package/src/public/public_tx_simulator/public_tx_simulator_base.ts +37 -0
  179. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +23 -0
  180. package/src/public/test_executor_metrics.ts +3 -3
  181. package/dest/public/avm/avm_context.d.ts +0 -41
  182. package/dest/public/avm/avm_context.d.ts.map +0 -1
  183. package/dest/public/avm/avm_context.js +0 -44
  184. package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
  185. package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
  186. package/dest/public/avm/avm_contract_call_result.js +0 -54
  187. package/dest/public/avm/avm_execution_environment.d.ts +0 -23
  188. package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
  189. package/dest/public/avm/avm_execution_environment.js +0 -33
  190. package/dest/public/avm/avm_gas.d.ts +0 -44
  191. package/dest/public/avm/avm_gas.d.ts.map +0 -1
  192. package/dest/public/avm/avm_gas.js +0 -195
  193. package/dest/public/avm/avm_machine_state.d.ts +0 -97
  194. package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
  195. package/dest/public/avm/avm_machine_state.js +0 -109
  196. package/dest/public/avm/avm_memory_types.d.ts +0 -275
  197. package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
  198. package/dest/public/avm/avm_memory_types.js +0 -351
  199. package/dest/public/avm/avm_simulator.d.ts +0 -40
  200. package/dest/public/avm/avm_simulator.d.ts.map +0 -1
  201. package/dest/public/avm/avm_simulator.js +0 -191
  202. package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
  203. package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
  204. package/dest/public/avm/avm_simulator_interface.js +0 -3
  205. package/dest/public/avm/errors.d.ts +0 -104
  206. package/dest/public/avm/errors.d.ts.map +0 -1
  207. package/dest/public/avm/errors.js +0 -141
  208. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +0 -22
  209. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  210. package/dest/public/avm/fixtures/avm_simulation_tester.js +0 -83
  211. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  212. package/dest/public/avm/fixtures/initializers.d.ts +0 -42
  213. package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
  214. package/dest/public/avm/fixtures/initializers.js +0 -44
  215. package/dest/public/avm/fixtures/utils.d.ts +0 -39
  216. package/dest/public/avm/fixtures/utils.d.ts.map +0 -1
  217. package/dest/public/avm/index.d.ts +0 -2
  218. package/dest/public/avm/index.d.ts.map +0 -1
  219. package/dest/public/avm/index.js +0 -1
  220. package/dest/public/avm/opcodes/accrued_substate.d.ts +0 -75
  221. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
  222. package/dest/public/avm/opcodes/accrued_substate.js +0 -255
  223. package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
  224. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
  225. package/dest/public/avm/opcodes/addressing_mode.js +0 -94
  226. package/dest/public/avm/opcodes/arithmetic.d.ts +0 -47
  227. package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
  228. package/dest/public/avm/opcodes/arithmetic.js +0 -87
  229. package/dest/public/avm/opcodes/bitwise.d.ts +0 -42
  230. package/dest/public/avm/opcodes/bitwise.d.ts.map +0 -1
  231. package/dest/public/avm/opcodes/bitwise.js +0 -99
  232. package/dest/public/avm/opcodes/comparators.d.ts +0 -25
  233. package/dest/public/avm/opcodes/comparators.d.ts.map +0 -1
  234. package/dest/public/avm/opcodes/comparators.js +0 -43
  235. package/dest/public/avm/opcodes/contract.d.ts +0 -20
  236. package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
  237. package/dest/public/avm/opcodes/contract.js +0 -65
  238. package/dest/public/avm/opcodes/control_flow.d.ts +0 -41
  239. package/dest/public/avm/opcodes/control_flow.d.ts.map +0 -1
  240. package/dest/public/avm/opcodes/control_flow.js +0 -107
  241. package/dest/public/avm/opcodes/conversion.d.ts +0 -18
  242. package/dest/public/avm/opcodes/conversion.d.ts.map +0 -1
  243. package/dest/public/avm/opcodes/conversion.js +0 -333
  244. package/dest/public/avm/opcodes/ec_add.d.ts +0 -19
  245. package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
  246. package/dest/public/avm/opcodes/ec_add.js +0 -84
  247. package/dest/public/avm/opcodes/environment_getters.d.ts +0 -28
  248. package/dest/public/avm/opcodes/environment_getters.d.ts.map +0 -1
  249. package/dest/public/avm/opcodes/environment_getters.js +0 -77
  250. package/dest/public/avm/opcodes/external_calls.d.ts +0 -59
  251. package/dest/public/avm/opcodes/external_calls.d.ts.map +0 -1
  252. package/dest/public/avm/opcodes/external_calls.js +0 -209
  253. package/dest/public/avm/opcodes/hashing.d.ts +0 -36
  254. package/dest/public/avm/opcodes/hashing.d.ts.map +0 -1
  255. package/dest/public/avm/opcodes/hashing.js +0 -114
  256. package/dest/public/avm/opcodes/index.d.ts +0 -16
  257. package/dest/public/avm/opcodes/index.d.ts.map +0 -1
  258. package/dest/public/avm/opcodes/index.js +0 -15
  259. package/dest/public/avm/opcodes/instruction.d.ts +0 -74
  260. package/dest/public/avm/opcodes/instruction.d.ts.map +0 -1
  261. package/dest/public/avm/opcodes/instruction.js +0 -95
  262. package/dest/public/avm/opcodes/instruction_impl.d.ts +0 -19
  263. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +0 -1
  264. package/dest/public/avm/opcodes/instruction_impl.js +0 -30
  265. package/dest/public/avm/opcodes/memory.d.ts +0 -74
  266. package/dest/public/avm/opcodes/memory.d.ts.map +0 -1
  267. package/dest/public/avm/opcodes/memory.js +0 -257
  268. package/dest/public/avm/opcodes/misc.d.ts +0 -18
  269. package/dest/public/avm/opcodes/misc.d.ts.map +0 -1
  270. package/dest/public/avm/opcodes/misc.js +0 -73
  271. package/dest/public/avm/opcodes/storage.d.ts +0 -24
  272. package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
  273. package/dest/public/avm/opcodes/storage.js +0 -68
  274. package/dest/public/avm/revert_reason.d.ts +0 -18
  275. package/dest/public/avm/revert_reason.d.ts.map +0 -1
  276. package/dest/public/avm/revert_reason.js +0 -39
  277. package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -26
  278. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +0 -1
  279. package/dest/public/avm/serialization/buffer_cursor.js +0 -99
  280. package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -17
  281. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  282. package/dest/public/avm/serialization/bytecode_serialization.js +0 -336
  283. package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -114
  284. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +0 -1
  285. package/dest/public/avm/serialization/instruction_serialization.js +0 -261
  286. package/dest/public/avm/test_utils.d.ts +0 -15
  287. package/dest/public/avm/test_utils.d.ts.map +0 -1
  288. package/dest/public/avm/test_utils.js +0 -44
  289. package/dest/public/debug_fn_name.d.ts +0 -18
  290. package/dest/public/debug_fn_name.d.ts.map +0 -1
  291. package/dest/public/debug_fn_name.js +0 -28
  292. package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -9
  293. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
  294. package/dest/public/fixtures/custom_bytecode_tests.js +0 -109
  295. package/dest/public/fixtures/minimal_public_tx.d.ts +0 -9
  296. package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
  297. package/dest/public/fixtures/minimal_public_tx.js +0 -29
  298. package/dest/public/hinting_db_sources.d.ts +0 -79
  299. package/dest/public/hinting_db_sources.d.ts.map +0 -1
  300. package/dest/public/hinting_db_sources.js +0 -350
  301. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +0 -30
  302. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +0 -1
  303. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +0 -133
  304. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -38
  305. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +0 -1
  306. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +0 -93
  307. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +0 -42
  308. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +0 -1
  309. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +0 -86
  310. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +0 -30
  311. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +0 -1
  312. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +0 -170
  313. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -31
  314. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +0 -1
  315. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +0 -51
  316. package/dest/public/public_tx_simulator/public_tx_context.d.ts +0 -130
  317. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +0 -1
  318. package/dest/public/public_tx_simulator/public_tx_context.js +0 -300
  319. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +0 -21
  320. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +0 -1
  321. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +0 -39
  322. package/dest/public/side_effect_trace.d.ts +0 -86
  323. package/dest/public/side_effect_trace.d.ts.map +0 -1
  324. package/dest/public/side_effect_trace.js +0 -199
  325. package/dest/public/side_effect_trace_interface.d.ts +0 -22
  326. package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
  327. package/dest/public/side_effect_trace_interface.js +0 -1
  328. package/dest/public/state_manager/index.d.ts +0 -2
  329. package/dest/public/state_manager/index.d.ts.map +0 -1
  330. package/dest/public/state_manager/index.js +0 -1
  331. package/dest/public/state_manager/nullifiers.d.ts +0 -61
  332. package/dest/public/state_manager/nullifiers.d.ts.map +0 -1
  333. package/dest/public/state_manager/nullifiers.js +0 -92
  334. package/dest/public/state_manager/public_storage.d.ts +0 -66
  335. package/dest/public/state_manager/public_storage.d.ts.map +0 -1
  336. package/dest/public/state_manager/public_storage.js +0 -145
  337. package/dest/public/state_manager/state_manager.d.ts +0 -164
  338. package/dest/public/state_manager/state_manager.d.ts.map +0 -1
  339. package/dest/public/state_manager/state_manager.js +0 -395
  340. package/src/public/avm/avm_context.ts +0 -61
  341. package/src/public/avm/avm_contract_call_result.ts +0 -67
  342. package/src/public/avm/avm_execution_environment.ts +0 -46
  343. package/src/public/avm/avm_gas.ts +0 -183
  344. package/src/public/avm/avm_machine_state.ts +0 -169
  345. package/src/public/avm/avm_memory_types.ts +0 -436
  346. package/src/public/avm/avm_simulator.ts +0 -276
  347. package/src/public/avm/avm_simulator_interface.ts +0 -8
  348. package/src/public/avm/errors.ts +0 -177
  349. package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -116
  350. package/src/public/avm/fixtures/initializers.ts +0 -102
  351. package/src/public/avm/index.ts +0 -1
  352. package/src/public/avm/opcodes/accrued_substate.ts +0 -288
  353. package/src/public/avm/opcodes/addressing_mode.ts +0 -111
  354. package/src/public/avm/opcodes/arithmetic.ts +0 -117
  355. package/src/public/avm/opcodes/bitwise.ts +0 -113
  356. package/src/public/avm/opcodes/comparators.ts +0 -55
  357. package/src/public/avm/opcodes/contract.ts +0 -75
  358. package/src/public/avm/opcodes/control_flow.ts +0 -123
  359. package/src/public/avm/opcodes/conversion.ts +0 -104
  360. package/src/public/avm/opcodes/ec_add.ts +0 -96
  361. package/src/public/avm/opcodes/environment_getters.ts +0 -87
  362. package/src/public/avm/opcodes/external_calls.ts +0 -260
  363. package/src/public/avm/opcodes/hashing.ts +0 -145
  364. package/src/public/avm/opcodes/index.ts +0 -15
  365. package/src/public/avm/opcodes/instruction.ts +0 -136
  366. package/src/public/avm/opcodes/instruction_impl.ts +0 -36
  367. package/src/public/avm/opcodes/memory.ts +0 -293
  368. package/src/public/avm/opcodes/misc.ts +0 -102
  369. package/src/public/avm/opcodes/storage.ts +0 -87
  370. package/src/public/avm/revert_reason.ts +0 -58
  371. package/src/public/avm/serialization/buffer_cursor.ts +0 -118
  372. package/src/public/avm/serialization/bytecode_serialization.ts +0 -215
  373. package/src/public/avm/serialization/instruction_serialization.ts +0 -249
  374. package/src/public/avm/test_utils.ts +0 -64
  375. package/src/public/debug_fn_name.ts +0 -43
  376. package/src/public/fixtures/custom_bytecode_tests.ts +0 -135
  377. package/src/public/fixtures/minimal_public_tx.ts +0 -35
  378. package/src/public/hinting_db_sources.ts +0 -603
  379. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +0 -162
  380. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -155
  381. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +0 -132
  382. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +0 -240
  383. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -105
  384. package/src/public/public_tx_simulator/public_tx_context.ts +0 -477
  385. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
  386. package/src/public/side_effect_trace.ts +0 -290
  387. package/src/public/side_effect_trace_interface.ts +0 -28
  388. package/src/public/state_manager/index.ts +0 -1
  389. package/src/public/state_manager/nullifiers.ts +0 -103
  390. package/src/public/state_manager/public_storage.ts +0 -174
  391. package/src/public/state_manager/state_manager.ts +0 -560
@@ -1,111 +0,0 @@
1
- import { AVM_MAX_OPERANDS } from '@aztec/constants';
2
- import { padArrayEnd } from '@aztec/foundation/collection';
3
- import type { Tuple } from '@aztec/foundation/serialize';
4
-
5
- import { strict as assert } from 'assert';
6
-
7
- import { MemoryValue, TaggedMemory, type TaggedMemoryInterface, TypeTag } from '../avm_memory_types.js';
8
- import { RelativeAddressOutOfRangeError, TagCheckError } from '../errors.js';
9
-
10
- export enum AddressingMode {
11
- DIRECT = 0,
12
- INDIRECT = 1,
13
- RELATIVE = 2,
14
- INDIRECT_RELATIVE = 3,
15
- }
16
-
17
- /** A class to represent the addressing mode of an instruction. */
18
- export class Addressing {
19
- public constructor(
20
- /** The addressing mode for each possible operand. */
21
- private readonly modePerOperand: Tuple<AddressingMode, typeof AVM_MAX_OPERANDS>,
22
- ) {}
23
-
24
- public static fromModes(modes: AddressingMode[]): Addressing {
25
- assert(modes.length <= AVM_MAX_OPERANDS, 'Too many operands for addressing mode');
26
- return new Addressing(padArrayEnd(modes, AddressingMode.DIRECT, AVM_MAX_OPERANDS));
27
- }
28
-
29
- public static fromWire(wireModes: number): Addressing {
30
- // The modes are stored in the wire format as one or two bytes, with each two bits representing the modes for an operand.
31
- // Even bits are indirect, odd bits are relative.
32
- const modes = new Array<AddressingMode>(AVM_MAX_OPERANDS);
33
- for (let i = 0; i < AVM_MAX_OPERANDS; i++) {
34
- modes[i] =
35
- (((wireModes >> (i * 2)) & 1) * AddressingMode.INDIRECT) |
36
- (((wireModes >> (i * 2 + 1)) & 1) * AddressingMode.RELATIVE);
37
- }
38
- // Casting the array to tuple since it should be more performant than using makeTuple
39
- return new Addressing(modes as Tuple<AddressingMode, typeof AVM_MAX_OPERANDS>);
40
- }
41
-
42
- public toWire(): number {
43
- // The modes are stored in the wire format as a byte, with each bit representing the mode for an operand.
44
- // The least significant bit represents the zeroth operand, and the least significant bit represents the last operand.
45
- let wire: number = 0;
46
- for (let i = 0; i < this.modePerOperand.length; i++) {
47
- if (this.modePerOperand[i] & AddressingMode.INDIRECT) {
48
- wire |= 1 << (i * 2);
49
- }
50
- if (this.modePerOperand[i] & AddressingMode.RELATIVE) {
51
- wire |= 1 << (i * 2 + 1);
52
- }
53
- }
54
- return wire;
55
- }
56
-
57
- public indirectOperandsCount(): number {
58
- return this.modePerOperand.filter(mode => mode & AddressingMode.INDIRECT).length;
59
- }
60
-
61
- public relativeOperandsCount(): number {
62
- return this.modePerOperand.filter(mode => mode & AddressingMode.RELATIVE).length;
63
- }
64
-
65
- /**
66
- * Resolves the offsets using the addressing mode.
67
- * @param offsets The offsets to resolve.
68
- * @param mem The memory to use for resolution.
69
- * @returns The resolved offsets. The length of the returned array is the same as the length of the input array and the resolved offsets are guaranteed to be valid addresses.
70
- * @throws An error if any step failed. Should be treated as a black box.
71
- */
72
- public resolve(offsets: number[], mem: TaggedMemoryInterface): number[] {
73
- const resolved: number[] = new Array(offsets.length);
74
- // These will be read (once) if we have any relative operands.
75
- let baseAddr: MemoryValue | undefined;
76
-
77
- for (const [i, offset] of offsets.entries()) {
78
- const mode = this.modePerOperand[i];
79
- // The given offsets are assumed to be valid addresses.
80
- resolved[i] = offset;
81
- if (mode & AddressingMode.RELATIVE) {
82
- if (!baseAddr) {
83
- baseAddr = mem.get(0);
84
- const baseAddrTag = baseAddr.getTag();
85
- if (!TaggedMemory.isValidMemoryAddressTag(baseAddrTag!)) {
86
- throw TagCheckError.forBaseAddress(TypeTag[baseAddrTag!]);
87
- }
88
- }
89
- // Here we know that resolved[i] is at most 32 bits and baseAddr is at most 32 bits.
90
- // Therefore, the addition is safe since the `number` type fits more than 33 bits.
91
- resolved[i] += Number(baseAddr.toBigInt());
92
- if (resolved[i] >= TaggedMemory.MAX_MEMORY_SIZE) {
93
- throw new RelativeAddressOutOfRangeError(Number(baseAddr.toBigInt()), offset);
94
- }
95
- }
96
- if (mode & AddressingMode.INDIRECT) {
97
- // At this point we know that resolved[i] is a valid memory address.
98
- const resolvedValue = mem.get(resolved[i]);
99
- const resolvedTag = resolvedValue.getTag();
100
-
101
- // Final check.
102
- if (!TaggedMemory.isValidMemoryAddressTag(resolvedTag)) {
103
- throw TagCheckError.forIndirectAddress(resolved[i], TypeTag[resolvedTag]);
104
- }
105
-
106
- resolved[i] = Number(resolvedValue.toBigInt());
107
- }
108
- }
109
- return resolved;
110
- }
111
- }
@@ -1,117 +0,0 @@
1
- import type { AvmContext } from '../avm_context.js';
2
- import {
3
- type Field,
4
- type IntegralValue,
5
- type MemoryValue,
6
- TaggedMemory,
7
- type TaggedMemoryInterface,
8
- TypeTag,
9
- } from '../avm_memory_types.js';
10
- import { ArithmeticError } from '../errors.js';
11
- import { Opcode } from '../serialization/instruction_serialization.js';
12
- import { Addressing } from './addressing_mode.js';
13
- import { ThreeOperandInstruction } from './instruction_impl.js';
14
-
15
- export abstract class ThreeOperandArithmeticInstruction extends ThreeOperandInstruction {
16
- public async execute(context: AvmContext): Promise<void> {
17
- const memory = context.machineState.memory;
18
- const addressing = Addressing.fromWire(this.indirect);
19
-
20
- context.machineState.consumeGas(
21
- this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
22
- );
23
-
24
- const operands = [this.aOffset, this.bOffset, this.dstOffset];
25
- const [aOffset, bOffset, dstOffset] = addressing.resolve(operands, memory);
26
- this.checkTags(memory, aOffset, bOffset);
27
-
28
- const a = memory.get(aOffset);
29
- const b = memory.get(bOffset);
30
-
31
- const dest = this.compute(a, b);
32
- memory.set(dstOffset, dest);
33
- }
34
-
35
- protected abstract compute(a: MemoryValue, b: MemoryValue): MemoryValue;
36
- protected checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number) {
37
- memory.checkTagsAreSame(aOffset, bOffset);
38
- }
39
- }
40
-
41
- export class Add extends ThreeOperandArithmeticInstruction {
42
- static readonly type: string = 'ADD';
43
- static readonly opcode = Opcode.ADD_8; // FIXME: needed for gas.
44
-
45
- protected compute(a: MemoryValue, b: MemoryValue): MemoryValue {
46
- return a.add(b);
47
- }
48
- }
49
-
50
- export class Sub extends ThreeOperandArithmeticInstruction {
51
- static readonly type: string = 'SUB';
52
- static readonly opcode = Opcode.SUB_8; // FIXME: needed for gas.
53
-
54
- protected compute(a: MemoryValue, b: MemoryValue): MemoryValue {
55
- return a.sub(b);
56
- }
57
- }
58
-
59
- export class Mul extends ThreeOperandArithmeticInstruction {
60
- static type: string = 'MUL';
61
- static readonly opcode = Opcode.MUL_8; // FIXME: needed for gas.
62
-
63
- protected compute(a: MemoryValue, b: MemoryValue): MemoryValue {
64
- return a.mul(b);
65
- }
66
- }
67
-
68
- export class Div extends ThreeOperandArithmeticInstruction {
69
- static type: string = 'DIV';
70
- static readonly opcode = Opcode.DIV_8; // FIXME: needed for gas.
71
-
72
- protected compute(a: MemoryValue, b: MemoryValue): MemoryValue {
73
- if (b.toBigInt() === 0n) {
74
- throw new ArithmeticError('Division by zero');
75
- }
76
-
77
- return a.div(b);
78
- }
79
-
80
- protected override checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number) {
81
- memory.checkTagsAreSame(aOffset, bOffset);
82
- TaggedMemory.checkIsIntegralTag(memory.getTag(aOffset)); // Follows that bOffset tag is also of integral type
83
- }
84
- }
85
-
86
- export class FieldDiv extends ThreeOperandArithmeticInstruction {
87
- static type: string = 'FDIV';
88
- static readonly opcode = Opcode.FDIV_8; // FIXME: needed for gas.
89
-
90
- protected compute(a: Field, b: Field): Field {
91
- // return (a as Field).fdiv(b as Field);
92
- return a.fdiv(b);
93
- }
94
-
95
- protected override checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number) {
96
- memory.checkTagsAreSame(aOffset, bOffset);
97
- memory.checkTag(TypeTag.FIELD, aOffset); // Follows that bOffset has also tag of type Field
98
- }
99
- }
100
-
101
- export class Shl extends ThreeOperandArithmeticInstruction {
102
- static readonly type: string = 'SHL';
103
- static readonly opcode = Opcode.SHL_8; // FIXME: needed for gas.
104
-
105
- protected override compute(a: IntegralValue, b: IntegralValue): IntegralValue {
106
- return a.shl(b);
107
- }
108
- }
109
-
110
- export class Shr extends ThreeOperandArithmeticInstruction {
111
- static readonly type: string = 'SHR';
112
- static readonly opcode = Opcode.SHR_8; // FIXME: needed for gas.
113
-
114
- protected override compute(a: IntegralValue, b: IntegralValue): IntegralValue {
115
- return a.shr(b);
116
- }
117
- }
@@ -1,113 +0,0 @@
1
- import type { AvmContext } from '../avm_context.js';
2
- import { getBitwiseDynamicGasMultiplier } from '../avm_gas.js';
3
- import { type IntegralValue, TaggedMemory, type TaggedMemoryInterface, TypeTag } from '../avm_memory_types.js';
4
- import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
5
- import { Addressing } from './addressing_mode.js';
6
- import { Instruction } from './instruction.js';
7
- import { ThreeOperandInstruction } from './instruction_impl.js';
8
-
9
- abstract class ThreeOperandBitwiseInstruction extends ThreeOperandInstruction {
10
- public async execute(context: AvmContext): Promise<void> {
11
- const memory = context.machineState.memory;
12
- const addressing = Addressing.fromWire(this.indirect);
13
-
14
- context.machineState.consumeGas(
15
- this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
16
- );
17
-
18
- const operands = [this.aOffset, this.bOffset, this.dstOffset];
19
- const [aOffset, bOffset, dstOffset] = addressing.resolve(operands, memory);
20
- this.checkTags(memory, aOffset, bOffset);
21
-
22
- const multiplier = this.getDynamicMultiplier(memory.getTag(aOffset));
23
- context.machineState.consumeGas(this.dynamicGasCost(multiplier));
24
-
25
- const a = memory.getAs<IntegralValue>(aOffset);
26
- const b = memory.getAs<IntegralValue>(bOffset);
27
-
28
- const res = this.compute(a, b);
29
- memory.set(dstOffset, res);
30
- }
31
-
32
- protected abstract compute(a: IntegralValue, b: IntegralValue): IntegralValue;
33
- protected checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number) {
34
- TaggedMemory.checkIsIntegralTag(memory.getTag(aOffset));
35
- memory.checkTagsAreSame(aOffset, bOffset);
36
- }
37
-
38
- protected getDynamicMultiplier(_lhsTag: TypeTag): number {
39
- return 0;
40
- }
41
- }
42
-
43
- export class And extends ThreeOperandBitwiseInstruction {
44
- static readonly type: string = 'AND';
45
- static readonly opcode = Opcode.AND_8; // FIXME: needed for gas.
46
-
47
- protected override compute(a: IntegralValue, b: IntegralValue): IntegralValue {
48
- return a.and(b);
49
- }
50
-
51
- protected override getDynamicMultiplier(lhsTag: TypeTag): number {
52
- return getBitwiseDynamicGasMultiplier(lhsTag);
53
- }
54
- }
55
-
56
- export class Or extends ThreeOperandBitwiseInstruction {
57
- static readonly type: string = 'OR';
58
- static readonly opcode = Opcode.OR_8; // FIXME: needed for gas.
59
-
60
- protected override compute(a: IntegralValue, b: IntegralValue): IntegralValue {
61
- return a.or(b);
62
- }
63
-
64
- protected override getDynamicMultiplier(lhsTag: TypeTag): number {
65
- return getBitwiseDynamicGasMultiplier(lhsTag);
66
- }
67
- }
68
-
69
- export class Xor extends ThreeOperandBitwiseInstruction {
70
- static readonly type: string = 'XOR';
71
- static readonly opcode = Opcode.XOR_8; // FIXME: needed for gas.
72
-
73
- protected override compute(a: IntegralValue, b: IntegralValue): IntegralValue {
74
- return a.xor(b);
75
- }
76
-
77
- protected override getDynamicMultiplier(lhsTag: TypeTag): number {
78
- return getBitwiseDynamicGasMultiplier(lhsTag);
79
- }
80
- }
81
-
82
- export class Not extends Instruction {
83
- static readonly type: string = 'NOT';
84
- static readonly opcode = Opcode.NOT_8;
85
-
86
- static readonly wireFormat8 = [OperandType.UINT8, OperandType.UINT8, OperandType.UINT8, OperandType.UINT8];
87
- static readonly wireFormat16 = [OperandType.UINT8, OperandType.UINT8, OperandType.UINT16, OperandType.UINT16];
88
-
89
- constructor(
90
- private indirect: number,
91
- private srcOffset: number,
92
- private dstOffset: number,
93
- ) {
94
- super();
95
- }
96
-
97
- public async execute(context: AvmContext): Promise<void> {
98
- const memory = context.machineState.memory;
99
- const addressing = Addressing.fromWire(this.indirect);
100
-
101
- context.machineState.consumeGas(
102
- this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
103
- );
104
-
105
- const operands = [this.srcOffset, this.dstOffset];
106
- const [srcOffset, dstOffset] = addressing.resolve(operands, memory);
107
- TaggedMemory.checkIsIntegralTag(memory.getTag(srcOffset));
108
- const value = memory.getAs<IntegralValue>(srcOffset);
109
-
110
- const res = value.not();
111
- memory.set(dstOffset, res);
112
- }
113
- }
@@ -1,55 +0,0 @@
1
- import type { AvmContext } from '../avm_context.js';
2
- import { type MemoryValue, Uint1 } from '../avm_memory_types.js';
3
- import { Opcode } from '../serialization/instruction_serialization.js';
4
- import { Addressing } from './addressing_mode.js';
5
- import { ThreeOperandInstruction } from './instruction_impl.js';
6
-
7
- abstract class ComparatorInstruction extends ThreeOperandInstruction {
8
- public async execute(context: AvmContext): Promise<void> {
9
- const memory = context.machineState.memory;
10
- const addressing = Addressing.fromWire(this.indirect);
11
-
12
- context.machineState.consumeGas(
13
- this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
14
- );
15
-
16
- const operands = [this.aOffset, this.bOffset, this.dstOffset];
17
- const [aOffset, bOffset, dstOffset] = addressing.resolve(operands, memory);
18
- memory.checkTagsAreSame(aOffset, bOffset); // Brillig semantic enforces that tags match.
19
-
20
- const a = memory.get(aOffset);
21
- const b = memory.get(bOffset);
22
-
23
- const dest = new Uint1(this.compare(a, b) ? 1 : 0);
24
- memory.set(dstOffset, dest);
25
- }
26
-
27
- protected abstract compare(a: MemoryValue, b: MemoryValue): boolean;
28
- }
29
-
30
- export class Eq extends ComparatorInstruction {
31
- static readonly type: string = 'EQ';
32
- static readonly opcode = Opcode.EQ_8; // FIXME: needed for gas.
33
-
34
- protected compare(a: MemoryValue, b: MemoryValue): boolean {
35
- return a.equals(b);
36
- }
37
- }
38
-
39
- export class Lt extends ComparatorInstruction {
40
- static readonly type: string = 'LT';
41
- static readonly opcode = Opcode.LT_8; // FIXME: needed for gas.
42
-
43
- protected compare(a: MemoryValue, b: MemoryValue): boolean {
44
- return a.lt(b);
45
- }
46
- }
47
-
48
- export class Lte extends ComparatorInstruction {
49
- static readonly type: string = 'LTE';
50
- static readonly opcode = Opcode.LTE_8; // FIXME: needed for gas.
51
-
52
- protected compare(a: MemoryValue, b: MemoryValue): boolean {
53
- return a.lt(b) || a.equals(b);
54
- }
55
- }
@@ -1,75 +0,0 @@
1
- import type { AvmContext } from '../avm_context.js';
2
- import { Field, TypeTag, Uint1 } from '../avm_memory_types.js';
3
- import { InstructionExecutionError } from '../errors.js';
4
- import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
5
- import { Addressing } from './addressing_mode.js';
6
- import { Instruction } from './instruction.js';
7
-
8
- export enum ContractInstanceMember {
9
- DEPLOYER,
10
- CLASS_ID,
11
- INIT_HASH,
12
- }
13
-
14
- export class GetContractInstance extends Instruction {
15
- static readonly type: string = 'GETCONTRACTINSTANCE';
16
- static readonly opcode: Opcode = Opcode.GETCONTRACTINSTANCE;
17
- // Informs (de)serialization. See Instruction.deserialize.
18
- static readonly wireFormat: OperandType[] = [
19
- OperandType.UINT8, // opcode
20
- OperandType.UINT8, // indirect bits
21
- OperandType.UINT16, // addressOffset
22
- OperandType.UINT16, // dstOffset
23
- OperandType.UINT8, // member enum (immediate)
24
- ];
25
-
26
- constructor(
27
- private indirect: number,
28
- private addressOffset: number,
29
- private dstOffset: number,
30
- private memberEnum: number,
31
- ) {
32
- super();
33
- }
34
-
35
- async execute(context: AvmContext): Promise<void> {
36
- const memory = context.machineState.memory;
37
- const addressing = Addressing.fromWire(this.indirect);
38
-
39
- context.machineState.consumeGas(
40
- this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
41
- );
42
-
43
- if (!(this.memberEnum in ContractInstanceMember)) {
44
- throw new InstructionExecutionError(`Invalid GETCONSTRACTINSTANCE member enum ${this.memberEnum}`);
45
- }
46
-
47
- const operands = [this.addressOffset, this.dstOffset];
48
- const [addressOffset, dstOffset] = addressing.resolve(operands, memory);
49
- memory.checkTag(TypeTag.FIELD, addressOffset);
50
-
51
- const address = memory.get(addressOffset).toAztecAddress();
52
- const instance = await context.persistableState.getContractInstance(address);
53
- const exists = instance !== undefined;
54
-
55
- let memberValue = new Field(0);
56
- if (exists) {
57
- switch (this.memberEnum as ContractInstanceMember) {
58
- case ContractInstanceMember.DEPLOYER:
59
- memberValue = new Field(instance.deployer.toField());
60
- break;
61
- case ContractInstanceMember.CLASS_ID:
62
- memberValue = new Field(instance.currentContractClassId.toField());
63
- break;
64
- case ContractInstanceMember.INIT_HASH:
65
- memberValue = new Field(instance.initializationHash);
66
- break;
67
- }
68
- }
69
-
70
- const existsOffset = dstOffset;
71
- const memberValueOffset = dstOffset + 1;
72
- memory.set(existsOffset, new Uint1(exists ? 1 : 0));
73
- memory.set(memberValueOffset, memberValue);
74
- }
75
- }
@@ -1,123 +0,0 @@
1
- import type { AvmContext } from '../avm_context.js';
2
- import { TypeTag, type Uint1 } from '../avm_memory_types.js';
3
- import { InstructionExecutionError } from '../errors.js';
4
- import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
5
- import { Addressing } from './addressing_mode.js';
6
- import { Instruction } from './instruction.js';
7
-
8
- export class Jump extends Instruction {
9
- static type: string = 'JUMP';
10
- static readonly opcode: Opcode = Opcode.JUMP_32;
11
- // Informs (de)serialization. See Instruction.deserialize.
12
- static readonly wireFormat: OperandType[] = [OperandType.UINT8, OperandType.UINT32];
13
-
14
- constructor(private jumpOffset: number) {
15
- super();
16
- }
17
-
18
- public async execute(context: AvmContext): Promise<void> {
19
- context.machineState.consumeGas(this.baseGasCost(0, 0));
20
-
21
- context.machineState.pc = this.jumpOffset;
22
- }
23
-
24
- public override handlesPC(): boolean {
25
- return true;
26
- }
27
- }
28
-
29
- export class JumpI extends Instruction {
30
- static type: string = 'JUMPI';
31
- static readonly opcode: Opcode = Opcode.JUMPI_32;
32
-
33
- // Instruction wire format with opcode.
34
- static readonly wireFormat: OperandType[] = [
35
- OperandType.UINT8,
36
- OperandType.UINT8,
37
- OperandType.UINT16,
38
- OperandType.UINT32,
39
- ];
40
-
41
- constructor(
42
- private indirect: number,
43
- private condOffset: number,
44
- private loc: number,
45
- ) {
46
- super();
47
- }
48
-
49
- public async execute(context: AvmContext): Promise<void> {
50
- const memory = context.machineState.memory;
51
- const addressing = Addressing.fromWire(this.indirect);
52
-
53
- context.machineState.consumeGas(
54
- this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()),
55
- );
56
-
57
- const operands = [this.condOffset];
58
- const [resolvedCondOffset] = addressing.resolve(operands, memory);
59
-
60
- memory.checkTag(TypeTag.UINT1, resolvedCondOffset);
61
- const condition = memory.getAs<Uint1>(resolvedCondOffset);
62
-
63
- if (condition.toNumber() == 0) {
64
- context.machineState.pc = context.machineState.nextPc;
65
- } else {
66
- context.machineState.pc = this.loc;
67
- }
68
- }
69
-
70
- public override handlesPC(): boolean {
71
- return true;
72
- }
73
- }
74
-
75
- export class InternalCall extends Instruction {
76
- static readonly type: string = 'INTERNALCALL';
77
- static readonly opcode: Opcode = Opcode.INTERNALCALL;
78
- // Informs (de)serialization. See Instruction.deserialize.
79
- static readonly wireFormat: OperandType[] = [OperandType.UINT8, OperandType.UINT32];
80
-
81
- constructor(private loc: number) {
82
- super();
83
- }
84
-
85
- public async execute(context: AvmContext): Promise<void> {
86
- context.machineState.consumeGas(this.baseGasCost(0, 0));
87
-
88
- context.machineState.internalCallStack.push({
89
- callPc: context.machineState.pc,
90
- returnPc: context.machineState.nextPc,
91
- });
92
- context.machineState.pc = this.loc;
93
- }
94
-
95
- public override handlesPC(): boolean {
96
- return true;
97
- }
98
- }
99
-
100
- export class InternalReturn extends Instruction {
101
- static readonly type: string = 'INTERNALRETURN';
102
- static readonly opcode: Opcode = Opcode.INTERNALRETURN;
103
- // Informs (de)serialization. See Instruction.deserialize.
104
- static readonly wireFormat: OperandType[] = [OperandType.UINT8];
105
-
106
- constructor() {
107
- super();
108
- }
109
-
110
- public async execute(context: AvmContext): Promise<void> {
111
- context.machineState.consumeGas(this.baseGasCost(0, 0));
112
-
113
- const stackEntry = context.machineState.internalCallStack.pop();
114
- if (stackEntry === undefined) {
115
- throw new InstructionExecutionError('Internal call stack empty!');
116
- }
117
- context.machineState.pc = stackEntry.returnPc;
118
- }
119
-
120
- public override handlesPC(): boolean {
121
- return true;
122
- }
123
- }