@aztec/simulator 0.0.1-commit.b655e406 → 0.0.1-commit.b8a057fa

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 (405) 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 +2 -2
  6. package/dest/common/errors.d.ts.map +1 -1
  7. package/dest/common/index.d.ts +1 -1
  8. package/dest/common/stats/index.d.ts +1 -1
  9. package/dest/common/stats/stats.d.ts +1 -1
  10. package/dest/private/acvm/acvm.d.ts +4 -2
  11. package/dest/private/acvm/acvm.d.ts.map +1 -1
  12. package/dest/private/acvm/acvm.js +4 -3
  13. package/dest/private/acvm/acvm_types.d.ts +1 -1
  14. package/dest/private/acvm/deserialize.d.ts +2 -2
  15. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  16. package/dest/private/acvm/deserialize.js +1 -1
  17. package/dest/private/acvm/index.d.ts +1 -1
  18. package/dest/private/acvm/serialize.d.ts +2 -2
  19. package/dest/private/acvm/serialize.d.ts.map +1 -1
  20. package/dest/private/acvm/serialize.js +1 -1
  21. package/dest/private/acvm_native.d.ts +5 -3
  22. package/dest/private/acvm_native.d.ts.map +1 -1
  23. package/dest/private/acvm_native.js +8 -6
  24. package/dest/private/acvm_wasm.d.ts +4 -3
  25. package/dest/private/acvm_wasm.d.ts.map +1 -1
  26. package/dest/private/acvm_wasm.js +7 -5
  27. package/dest/private/acvm_wasm_with_blobs.d.ts +1 -1
  28. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -1
  29. package/dest/private/circuit_recording/circuit_recorder.d.ts +39 -25
  30. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  31. package/dest/private/circuit_recording/circuit_recorder.js +71 -72
  32. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +9 -20
  33. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  34. package/dest/private/circuit_recording/file_circuit_recorder.js +39 -43
  35. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +7 -2
  36. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
  37. package/dest/private/circuit_recording/memory_circuit_recorder.js +4 -4
  38. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  39. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  40. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +11 -14
  41. package/dest/private/circuit_simulator.d.ts +1 -1
  42. package/dest/private/factory.d.ts +3 -3
  43. package/dest/private/factory.d.ts.map +1 -1
  44. package/dest/private/factory.js +7 -4
  45. package/dest/public/avm/testing/account_proof_fetcher.d.ts +2 -0
  46. package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
  47. package/dest/public/avm/testing/account_proof_fetcher.js +152 -0
  48. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +3 -2
  49. package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +1 -0
  50. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.js +19 -4
  51. package/dest/public/avm/{fixtures → testing}/utils.d.ts +4 -10
  52. package/dest/public/avm/testing/utils.d.ts.map +1 -0
  53. package/dest/public/avm/{fixtures → testing}/utils.js +7 -36
  54. package/dest/public/avm_simulator.d.ts +28 -0
  55. package/dest/public/avm_simulator.d.ts.map +1 -0
  56. package/dest/public/avm_simulator.js +4 -0
  57. package/dest/public/avm_simulator_pool.d.ts +45 -0
  58. package/dest/public/avm_simulator_pool.d.ts.map +1 -0
  59. package/dest/public/avm_simulator_pool.js +197 -0
  60. package/dest/public/cdb/generated/api_types.d.ts +171 -0
  61. package/dest/public/cdb/generated/api_types.d.ts.map +1 -0
  62. package/dest/public/cdb/generated/api_types.js +314 -0
  63. package/dest/public/cdb/generated/server.d.ts +26 -0
  64. package/dest/public/cdb/generated/server.d.ts.map +1 -0
  65. package/dest/public/cdb/generated/server.js +135 -0
  66. package/dest/public/cdb_ipc_server.d.ts +33 -0
  67. package/dest/public/cdb_ipc_server.d.ts.map +1 -0
  68. package/dest/public/cdb_ipc_server.js +153 -0
  69. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  70. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  71. package/dest/public/contracts_db_checkpoint.js +30 -0
  72. package/dest/public/db_interfaces.d.ts +14 -2
  73. package/dest/public/db_interfaces.d.ts.map +1 -1
  74. package/dest/public/executor_metrics.d.ts +3 -2
  75. package/dest/public/executor_metrics.d.ts.map +1 -1
  76. package/dest/public/executor_metrics.js +13 -34
  77. package/dest/public/executor_metrics_interface.d.ts +3 -2
  78. package/dest/public/executor_metrics_interface.d.ts.map +1 -1
  79. package/dest/public/fixtures/amm_test.d.ts +1 -1
  80. package/dest/public/fixtures/amm_test.js +6 -6
  81. package/dest/public/fixtures/bulk_test.d.ts +3 -3
  82. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  83. package/dest/public/fixtures/bulk_test.js +38 -75
  84. package/dest/public/fixtures/custom_bytecode_tester.d.ts +29 -7
  85. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  86. package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
  87. package/dest/public/fixtures/index.d.ts +3 -3
  88. package/dest/public/fixtures/index.d.ts.map +1 -1
  89. package/dest/public/fixtures/index.js +2 -2
  90. package/dest/public/fixtures/public_processor_test_env.d.ts +30 -0
  91. package/dest/public/fixtures/public_processor_test_env.d.ts.map +1 -0
  92. package/dest/public/fixtures/public_processor_test_env.js +73 -0
  93. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +32 -9
  94. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  95. package/dest/public/fixtures/public_tx_simulation_tester.js +84 -26
  96. package/dest/public/fixtures/simple_contract_data_source.d.ts +5 -4
  97. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
  98. package/dest/public/fixtures/simple_contract_data_source.js +5 -5
  99. package/dest/public/fixtures/token_test.d.ts +6 -2
  100. package/dest/public/fixtures/token_test.d.ts.map +1 -1
  101. package/dest/public/fixtures/token_test.js +16 -15
  102. package/dest/public/fixtures/utils.d.ts +3 -3
  103. package/dest/public/fixtures/utils.d.ts.map +1 -1
  104. package/dest/public/fixtures/utils.js +25 -23
  105. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +67 -0
  106. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  107. package/dest/public/fuzzing/avm_fuzzer_simulator.js +185 -0
  108. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  109. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  110. package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
  111. package/dest/public/index.d.ts +6 -2
  112. package/dest/public/index.d.ts.map +1 -1
  113. package/dest/public/index.js +2 -1
  114. package/dest/public/public_db_sources.d.ts +29 -66
  115. package/dest/public/public_db_sources.d.ts.map +1 -1
  116. package/dest/public/public_db_sources.js +83 -134
  117. package/dest/public/public_errors.d.ts +1 -1
  118. package/dest/public/public_errors.d.ts.map +1 -1
  119. package/dest/public/public_processor/guarded_merkle_tree.d.ts +8 -5
  120. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  121. package/dest/public/public_processor/guarded_merkle_tree.js +12 -4
  122. package/dest/public/public_processor/public_processor.d.ts +24 -22
  123. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  124. package/dest/public/public_processor/public_processor.js +559 -125
  125. package/dest/public/public_processor/public_processor_metrics.d.ts +5 -2
  126. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  127. package/dest/public/public_processor/public_processor_metrics.js +36 -45
  128. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +17 -0
  129. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
  130. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.js +39 -0
  131. package/dest/public/public_tx_simulator/factories.d.ts +14 -0
  132. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  133. package/dest/public/public_tx_simulator/factories.js +28 -0
  134. package/dest/public/public_tx_simulator/index.d.ts +6 -4
  135. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  136. package/dest/public/public_tx_simulator/index.js +3 -2
  137. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +43 -90
  138. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  139. package/dest/public/public_tx_simulator/public_tx_simulator.js +99 -331
  140. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +24 -0
  141. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
  142. package/dest/public/public_tx_simulator/public_tx_simulator_base.js +31 -0
  143. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +25 -2
  144. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
  145. package/dest/public/side_effect_errors.d.ts +1 -1
  146. package/dest/public/side_effect_errors.d.ts.map +1 -1
  147. package/dest/public/test_executor_metrics.d.ts +6 -4
  148. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  149. package/dest/public/test_executor_metrics.js +7 -6
  150. package/dest/public/unique_class_ids.d.ts +1 -1
  151. package/dest/public/unique_class_ids.d.ts.map +1 -1
  152. package/dest/public/utils.d.ts +1 -1
  153. package/dest/server.d.ts +1 -1
  154. package/dest/testing.d.ts +1 -1
  155. package/package.json +26 -22
  156. package/src/client.ts +0 -2
  157. package/src/common/errors.ts +1 -1
  158. package/src/private/acvm/acvm.ts +4 -3
  159. package/src/private/acvm/deserialize.ts +1 -1
  160. package/src/private/acvm/serialize.ts +1 -1
  161. package/src/private/acvm_native.ts +11 -5
  162. package/src/private/acvm_wasm.ts +11 -4
  163. package/src/private/circuit_recording/circuit_recorder.ts +90 -81
  164. package/src/private/circuit_recording/file_circuit_recorder.ts +45 -50
  165. package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
  166. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +9 -15
  167. package/src/private/factory.ts +7 -4
  168. package/src/public/avm/testing/account_proof.json +553 -0
  169. package/src/public/avm/testing/account_proof_fetcher.ts +166 -0
  170. package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +24 -4
  171. package/src/public/avm/{fixtures → testing}/utils.ts +7 -42
  172. package/src/public/avm_simulator.ts +29 -0
  173. package/src/public/avm_simulator_pool.ts +226 -0
  174. package/src/public/cdb/generated/api_types.ts +457 -0
  175. package/src/public/cdb/generated/server.ts +109 -0
  176. package/src/public/cdb_ipc_server.ts +197 -0
  177. package/src/public/contracts_db_checkpoint.ts +41 -0
  178. package/src/public/db_interfaces.ts +16 -1
  179. package/src/public/executor_metrics.ts +11 -34
  180. package/src/public/executor_metrics_interface.ts +2 -1
  181. package/src/public/fixtures/amm_test.ts +6 -6
  182. package/src/public/fixtures/bulk_test.ts +40 -15
  183. package/src/public/fixtures/custom_bytecode_tester.ts +54 -20
  184. package/src/public/fixtures/index.ts +6 -2
  185. package/src/public/fixtures/public_processor_test_env.ts +88 -0
  186. package/src/public/fixtures/public_tx_simulation_tester.ts +117 -26
  187. package/src/public/fixtures/simple_contract_data_source.ts +9 -10
  188. package/src/public/fixtures/token_test.ts +21 -13
  189. package/src/public/fixtures/utils.ts +25 -27
  190. package/src/public/fuzzing/avm_fuzzer_simulator.ts +303 -0
  191. package/src/public/fuzzing/avm_simulator_bin.ts +173 -0
  192. package/src/public/index.ts +8 -2
  193. package/src/public/public_db_sources.ts +112 -174
  194. package/src/public/public_processor/guarded_merkle_tree.ts +14 -6
  195. package/src/public/public_processor/public_processor.ts +234 -138
  196. package/src/public/public_processor/public_processor_metrics.ts +28 -44
  197. package/src/public/public_tx_simulator/dumping_public_tx_simulator.ts +67 -0
  198. package/src/public/public_tx_simulator/factories.ts +61 -0
  199. package/src/public/public_tx_simulator/index.ts +8 -3
  200. package/src/public/public_tx_simulator/public_tx_simulator.ts +142 -500
  201. package/src/public/public_tx_simulator/public_tx_simulator_base.ts +37 -0
  202. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +24 -2
  203. package/src/public/test_executor_metrics.ts +10 -8
  204. package/dest/public/avm/avm_context.d.ts +0 -41
  205. package/dest/public/avm/avm_context.d.ts.map +0 -1
  206. package/dest/public/avm/avm_context.js +0 -44
  207. package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
  208. package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
  209. package/dest/public/avm/avm_contract_call_result.js +0 -54
  210. package/dest/public/avm/avm_execution_environment.d.ts +0 -23
  211. package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
  212. package/dest/public/avm/avm_execution_environment.js +0 -36
  213. package/dest/public/avm/avm_gas.d.ts +0 -44
  214. package/dest/public/avm/avm_gas.d.ts.map +0 -1
  215. package/dest/public/avm/avm_gas.js +0 -195
  216. package/dest/public/avm/avm_machine_state.d.ts +0 -97
  217. package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
  218. package/dest/public/avm/avm_machine_state.js +0 -109
  219. package/dest/public/avm/avm_memory_types.d.ts +0 -275
  220. package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
  221. package/dest/public/avm/avm_memory_types.js +0 -351
  222. package/dest/public/avm/avm_simulator.d.ts +0 -39
  223. package/dest/public/avm/avm_simulator.d.ts.map +0 -1
  224. package/dest/public/avm/avm_simulator.js +0 -190
  225. package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
  226. package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
  227. package/dest/public/avm/avm_simulator_interface.js +0 -3
  228. package/dest/public/avm/errors.d.ts +0 -98
  229. package/dest/public/avm/errors.d.ts.map +0 -1
  230. package/dest/public/avm/errors.js +0 -129
  231. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +0 -22
  232. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  233. package/dest/public/avm/fixtures/avm_simulation_tester.js +0 -74
  234. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  235. package/dest/public/avm/fixtures/initializers.d.ts +0 -43
  236. package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
  237. package/dest/public/avm/fixtures/initializers.js +0 -42
  238. package/dest/public/avm/fixtures/utils.d.ts.map +0 -1
  239. package/dest/public/avm/index.d.ts +0 -2
  240. package/dest/public/avm/index.d.ts.map +0 -1
  241. package/dest/public/avm/index.js +0 -1
  242. package/dest/public/avm/opcodes/accrued_substate.d.ts +0 -75
  243. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
  244. package/dest/public/avm/opcodes/accrued_substate.js +0 -255
  245. package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
  246. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
  247. package/dest/public/avm/opcodes/addressing_mode.js +0 -94
  248. package/dest/public/avm/opcodes/arithmetic.d.ts +0 -47
  249. package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
  250. package/dest/public/avm/opcodes/arithmetic.js +0 -87
  251. package/dest/public/avm/opcodes/bitwise.d.ts +0 -42
  252. package/dest/public/avm/opcodes/bitwise.d.ts.map +0 -1
  253. package/dest/public/avm/opcodes/bitwise.js +0 -99
  254. package/dest/public/avm/opcodes/comparators.d.ts +0 -25
  255. package/dest/public/avm/opcodes/comparators.d.ts.map +0 -1
  256. package/dest/public/avm/opcodes/comparators.js +0 -43
  257. package/dest/public/avm/opcodes/contract.d.ts +0 -20
  258. package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
  259. package/dest/public/avm/opcodes/contract.js +0 -65
  260. package/dest/public/avm/opcodes/control_flow.d.ts +0 -41
  261. package/dest/public/avm/opcodes/control_flow.d.ts.map +0 -1
  262. package/dest/public/avm/opcodes/control_flow.js +0 -107
  263. package/dest/public/avm/opcodes/conversion.d.ts +0 -18
  264. package/dest/public/avm/opcodes/conversion.d.ts.map +0 -1
  265. package/dest/public/avm/opcodes/conversion.js +0 -333
  266. package/dest/public/avm/opcodes/ec_add.d.ts +0 -19
  267. package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
  268. package/dest/public/avm/opcodes/ec_add.js +0 -84
  269. package/dest/public/avm/opcodes/environment_getters.d.ts +0 -28
  270. package/dest/public/avm/opcodes/environment_getters.d.ts.map +0 -1
  271. package/dest/public/avm/opcodes/environment_getters.js +0 -77
  272. package/dest/public/avm/opcodes/external_calls.d.ts +0 -59
  273. package/dest/public/avm/opcodes/external_calls.d.ts.map +0 -1
  274. package/dest/public/avm/opcodes/external_calls.js +0 -209
  275. package/dest/public/avm/opcodes/hashing.d.ts +0 -36
  276. package/dest/public/avm/opcodes/hashing.d.ts.map +0 -1
  277. package/dest/public/avm/opcodes/hashing.js +0 -114
  278. package/dest/public/avm/opcodes/index.d.ts +0 -16
  279. package/dest/public/avm/opcodes/index.d.ts.map +0 -1
  280. package/dest/public/avm/opcodes/index.js +0 -15
  281. package/dest/public/avm/opcodes/instruction.d.ts +0 -74
  282. package/dest/public/avm/opcodes/instruction.d.ts.map +0 -1
  283. package/dest/public/avm/opcodes/instruction.js +0 -95
  284. package/dest/public/avm/opcodes/instruction_impl.d.ts +0 -19
  285. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +0 -1
  286. package/dest/public/avm/opcodes/instruction_impl.js +0 -30
  287. package/dest/public/avm/opcodes/memory.d.ts +0 -74
  288. package/dest/public/avm/opcodes/memory.d.ts.map +0 -1
  289. package/dest/public/avm/opcodes/memory.js +0 -257
  290. package/dest/public/avm/opcodes/misc.d.ts +0 -18
  291. package/dest/public/avm/opcodes/misc.d.ts.map +0 -1
  292. package/dest/public/avm/opcodes/misc.js +0 -73
  293. package/dest/public/avm/opcodes/storage.d.ts +0 -24
  294. package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
  295. package/dest/public/avm/opcodes/storage.js +0 -68
  296. package/dest/public/avm/revert_reason.d.ts +0 -18
  297. package/dest/public/avm/revert_reason.d.ts.map +0 -1
  298. package/dest/public/avm/revert_reason.js +0 -38
  299. package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -26
  300. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +0 -1
  301. package/dest/public/avm/serialization/buffer_cursor.js +0 -99
  302. package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -17
  303. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  304. package/dest/public/avm/serialization/bytecode_serialization.js +0 -333
  305. package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -114
  306. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +0 -1
  307. package/dest/public/avm/serialization/instruction_serialization.js +0 -261
  308. package/dest/public/avm/test_utils.d.ts +0 -15
  309. package/dest/public/avm/test_utils.d.ts.map +0 -1
  310. package/dest/public/avm/test_utils.js +0 -44
  311. package/dest/public/debug_fn_name.d.ts +0 -5
  312. package/dest/public/debug_fn_name.d.ts.map +0 -1
  313. package/dest/public/debug_fn_name.js +0 -9
  314. package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -9
  315. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
  316. package/dest/public/fixtures/custom_bytecode_tests.js +0 -109
  317. package/dest/public/fixtures/minimal_public_tx.d.ts +0 -10
  318. package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
  319. package/dest/public/fixtures/minimal_public_tx.js +0 -29
  320. package/dest/public/hinting_db_sources.d.ts +0 -70
  321. package/dest/public/hinting_db_sources.d.ts.map +0 -1
  322. package/dest/public/hinting_db_sources.js +0 -297
  323. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -41
  324. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +0 -1
  325. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +0 -89
  326. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -24
  327. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +0 -1
  328. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +0 -51
  329. package/dest/public/public_tx_simulator/public_tx_context.d.ts +0 -127
  330. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +0 -1
  331. package/dest/public/public_tx_simulator/public_tx_context.js +0 -292
  332. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +0 -21
  333. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +0 -1
  334. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +0 -39
  335. package/dest/public/side_effect_trace.d.ts +0 -87
  336. package/dest/public/side_effect_trace.d.ts.map +0 -1
  337. package/dest/public/side_effect_trace.js +0 -199
  338. package/dest/public/side_effect_trace_interface.d.ts +0 -23
  339. package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
  340. package/dest/public/side_effect_trace_interface.js +0 -1
  341. package/dest/public/state_manager/index.d.ts +0 -2
  342. package/dest/public/state_manager/index.d.ts.map +0 -1
  343. package/dest/public/state_manager/index.js +0 -1
  344. package/dest/public/state_manager/nullifiers.d.ts +0 -61
  345. package/dest/public/state_manager/nullifiers.d.ts.map +0 -1
  346. package/dest/public/state_manager/nullifiers.js +0 -92
  347. package/dest/public/state_manager/public_storage.d.ts +0 -66
  348. package/dest/public/state_manager/public_storage.d.ts.map +0 -1
  349. package/dest/public/state_manager/public_storage.js +0 -145
  350. package/dest/public/state_manager/state_manager.d.ts +0 -166
  351. package/dest/public/state_manager/state_manager.d.ts.map +0 -1
  352. package/dest/public/state_manager/state_manager.js +0 -391
  353. package/dest/public/tx_contract_cache.d.ts +0 -41
  354. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  355. package/dest/public/tx_contract_cache.js +0 -49
  356. package/src/public/avm/avm_context.ts +0 -61
  357. package/src/public/avm/avm_contract_call_result.ts +0 -67
  358. package/src/public/avm/avm_execution_environment.ts +0 -48
  359. package/src/public/avm/avm_gas.ts +0 -183
  360. package/src/public/avm/avm_machine_state.ts +0 -169
  361. package/src/public/avm/avm_memory_types.ts +0 -436
  362. package/src/public/avm/avm_simulator.ts +0 -274
  363. package/src/public/avm/avm_simulator_interface.ts +0 -8
  364. package/src/public/avm/errors.ts +0 -163
  365. package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -108
  366. package/src/public/avm/fixtures/initializers.ts +0 -104
  367. package/src/public/avm/index.ts +0 -1
  368. package/src/public/avm/opcodes/accrued_substate.ts +0 -288
  369. package/src/public/avm/opcodes/addressing_mode.ts +0 -111
  370. package/src/public/avm/opcodes/arithmetic.ts +0 -117
  371. package/src/public/avm/opcodes/bitwise.ts +0 -113
  372. package/src/public/avm/opcodes/comparators.ts +0 -55
  373. package/src/public/avm/opcodes/contract.ts +0 -75
  374. package/src/public/avm/opcodes/control_flow.ts +0 -123
  375. package/src/public/avm/opcodes/conversion.ts +0 -104
  376. package/src/public/avm/opcodes/ec_add.ts +0 -96
  377. package/src/public/avm/opcodes/environment_getters.ts +0 -87
  378. package/src/public/avm/opcodes/external_calls.ts +0 -260
  379. package/src/public/avm/opcodes/hashing.ts +0 -145
  380. package/src/public/avm/opcodes/index.ts +0 -15
  381. package/src/public/avm/opcodes/instruction.ts +0 -136
  382. package/src/public/avm/opcodes/instruction_impl.ts +0 -36
  383. package/src/public/avm/opcodes/memory.ts +0 -293
  384. package/src/public/avm/opcodes/misc.ts +0 -102
  385. package/src/public/avm/opcodes/storage.ts +0 -87
  386. package/src/public/avm/revert_reason.ts +0 -55
  387. package/src/public/avm/serialization/buffer_cursor.ts +0 -118
  388. package/src/public/avm/serialization/bytecode_serialization.ts +0 -204
  389. package/src/public/avm/serialization/instruction_serialization.ts +0 -249
  390. package/src/public/avm/test_utils.ts +0 -64
  391. package/src/public/debug_fn_name.ts +0 -18
  392. package/src/public/fixtures/custom_bytecode_tests.ts +0 -135
  393. package/src/public/fixtures/minimal_public_tx.ts +0 -36
  394. package/src/public/hinting_db_sources.ts +0 -505
  395. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -128
  396. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -109
  397. package/src/public/public_tx_simulator/public_tx_context.ts +0 -471
  398. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
  399. package/src/public/side_effect_trace.ts +0 -290
  400. package/src/public/side_effect_trace_interface.ts +0 -28
  401. package/src/public/state_manager/index.ts +0 -1
  402. package/src/public/state_manager/nullifiers.ts +0 -103
  403. package/src/public/state_manager/public_storage.ts +0 -174
  404. package/src/public/state_manager/state_manager.ts +0 -560
  405. package/src/public/tx_contract_cache.ts +0 -69
@@ -1,255 +0,0 @@
1
- import { NullifierCollisionError } from '../../side_effect_errors.js';
2
- import { TypeTag, Uint1 } from '../avm_memory_types.js';
3
- import { InstructionExecutionError, StaticCallAlterationError } 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
- export class NoteHashExists extends Instruction {
8
- indirect;
9
- noteHashOffset;
10
- leafIndexOffset;
11
- existsOffset;
12
- static type = 'NOTEHASHEXISTS';
13
- static opcode = Opcode.NOTEHASHEXISTS;
14
- // Informs (de)serialization. See Instruction.deserialize.
15
- static wireFormat = [
16
- OperandType.UINT8,
17
- OperandType.UINT8,
18
- OperandType.UINT16,
19
- OperandType.UINT16,
20
- OperandType.UINT16
21
- ];
22
- constructor(indirect, noteHashOffset, leafIndexOffset, existsOffset){
23
- super(), this.indirect = indirect, this.noteHashOffset = noteHashOffset, this.leafIndexOffset = leafIndexOffset, this.existsOffset = existsOffset;
24
- }
25
- async execute(context) {
26
- const memory = context.machineState.memory;
27
- const addressing = Addressing.fromWire(this.indirect);
28
- context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
29
- const operands = [
30
- this.noteHashOffset,
31
- this.leafIndexOffset,
32
- this.existsOffset
33
- ];
34
- const [noteHashOffset, leafIndexOffset, existsOffset] = addressing.resolve(operands, memory);
35
- memory.checkTag(TypeTag.FIELD, noteHashOffset);
36
- memory.checkTag(TypeTag.UINT64, leafIndexOffset);
37
- // Note that this instruction accepts any type in memory, and converts to Field.
38
- const noteHash = memory.get(noteHashOffset).toFr();
39
- const leafIndex = memory.get(leafIndexOffset).toBigInt();
40
- const exists = await context.persistableState.checkNoteHashExists(context.environment.address, noteHash, leafIndex);
41
- memory.set(existsOffset, exists ? new Uint1(1) : new Uint1(0));
42
- }
43
- }
44
- export class EmitNoteHash extends Instruction {
45
- indirect;
46
- noteHashOffset;
47
- static type = 'EMITNOTEHASH';
48
- static opcode = Opcode.EMITNOTEHASH;
49
- // Informs (de)serialization. See Instruction.deserialize.
50
- static wireFormat = [
51
- OperandType.UINT8,
52
- OperandType.UINT8,
53
- OperandType.UINT16
54
- ];
55
- constructor(indirect, noteHashOffset){
56
- super(), this.indirect = indirect, this.noteHashOffset = noteHashOffset;
57
- }
58
- async execute(context) {
59
- const memory = context.machineState.memory;
60
- const addressing = Addressing.fromWire(this.indirect);
61
- context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
62
- const operands = [
63
- this.noteHashOffset
64
- ];
65
- const [noteHashOffset] = addressing.resolve(operands, memory);
66
- memory.checkTag(TypeTag.FIELD, noteHashOffset);
67
- if (context.environment.isStaticCall) {
68
- throw new StaticCallAlterationError();
69
- }
70
- const noteHash = memory.get(noteHashOffset).toFr();
71
- await context.persistableState.writeNoteHash(context.environment.address, noteHash);
72
- }
73
- }
74
- export class NullifierExists extends Instruction {
75
- indirect;
76
- nullifierOffset;
77
- addressOffset;
78
- existsOffset;
79
- static type = 'NULLIFIEREXISTS';
80
- static opcode = Opcode.NULLIFIEREXISTS;
81
- // Informs (de)serialization. See Instruction.deserialize.
82
- static wireFormat = [
83
- OperandType.UINT8,
84
- OperandType.UINT8,
85
- OperandType.UINT16,
86
- OperandType.UINT16,
87
- OperandType.UINT16
88
- ];
89
- constructor(indirect, nullifierOffset, addressOffset, existsOffset){
90
- super(), this.indirect = indirect, this.nullifierOffset = nullifierOffset, this.addressOffset = addressOffset, this.existsOffset = existsOffset;
91
- }
92
- async execute(context) {
93
- const memory = context.machineState.memory;
94
- const addressing = Addressing.fromWire(this.indirect);
95
- context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
96
- const operands = [
97
- this.nullifierOffset,
98
- this.addressOffset,
99
- this.existsOffset
100
- ];
101
- const [nullifierOffset, addressOffset, existsOffset] = addressing.resolve(operands, memory);
102
- memory.checkTags(TypeTag.FIELD, nullifierOffset, addressOffset);
103
- const nullifier = memory.get(nullifierOffset).toFr();
104
- const address = memory.get(addressOffset).toAztecAddress();
105
- const exists = await context.persistableState.checkNullifierExists(address, nullifier);
106
- memory.set(existsOffset, exists ? new Uint1(1) : new Uint1(0));
107
- }
108
- }
109
- export class EmitNullifier extends Instruction {
110
- indirect;
111
- nullifierOffset;
112
- static type = 'EMITNULLIFIER';
113
- static opcode = Opcode.EMITNULLIFIER;
114
- // Informs (de)serialization. See Instruction.deserialize.
115
- static wireFormat = [
116
- OperandType.UINT8,
117
- OperandType.UINT8,
118
- OperandType.UINT16
119
- ];
120
- constructor(indirect, nullifierOffset){
121
- super(), this.indirect = indirect, this.nullifierOffset = nullifierOffset;
122
- }
123
- async execute(context) {
124
- if (context.environment.isStaticCall) {
125
- throw new StaticCallAlterationError();
126
- }
127
- const memory = context.machineState.memory;
128
- const addressing = Addressing.fromWire(this.indirect);
129
- context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
130
- const operands = [
131
- this.nullifierOffset
132
- ];
133
- const [nullifierOffset] = addressing.resolve(operands, memory);
134
- memory.checkTag(TypeTag.FIELD, nullifierOffset);
135
- const nullifier = memory.get(nullifierOffset).toFr();
136
- try {
137
- await context.persistableState.writeNullifier(context.environment.address, nullifier);
138
- } catch (e) {
139
- if (e instanceof NullifierCollisionError) {
140
- // Error is known/expected, raise as InstructionExecutionError that the will lead the simulator to revert this call
141
- throw new InstructionExecutionError(`Attempted to emit duplicate nullifier ${nullifier} (contract address: ${context.environment.address}).`);
142
- } else {
143
- throw e;
144
- }
145
- }
146
- }
147
- }
148
- export class L1ToL2MessageExists extends Instruction {
149
- indirect;
150
- msgHashOffset;
151
- msgLeafIndexOffset;
152
- existsOffset;
153
- static type = 'L1TOL2MSGEXISTS';
154
- static opcode = Opcode.L1TOL2MSGEXISTS;
155
- // Informs (de)serialization. See Instruction.deserialize.
156
- static wireFormat = [
157
- OperandType.UINT8,
158
- OperandType.UINT8,
159
- OperandType.UINT16,
160
- OperandType.UINT16,
161
- OperandType.UINT16
162
- ];
163
- constructor(indirect, msgHashOffset, msgLeafIndexOffset, existsOffset){
164
- super(), this.indirect = indirect, this.msgHashOffset = msgHashOffset, this.msgLeafIndexOffset = msgLeafIndexOffset, this.existsOffset = existsOffset;
165
- }
166
- async execute(context) {
167
- const memory = context.machineState.memory;
168
- const addressing = Addressing.fromWire(this.indirect);
169
- context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
170
- const operands = [
171
- this.msgHashOffset,
172
- this.msgLeafIndexOffset,
173
- this.existsOffset
174
- ];
175
- const [msgHashOffset, msgLeafIndexOffset, existsOffset] = addressing.resolve(operands, memory);
176
- memory.checkTag(TypeTag.FIELD, msgHashOffset);
177
- memory.checkTag(TypeTag.UINT64, msgLeafIndexOffset);
178
- const msgHash = memory.get(msgHashOffset).toFr();
179
- const msgLeafIndex = memory.get(msgLeafIndexOffset).toFr();
180
- const exists = await context.persistableState.checkL1ToL2MessageExists(msgHash, msgLeafIndex);
181
- memory.set(existsOffset, exists ? new Uint1(1) : new Uint1(0));
182
- }
183
- }
184
- export class EmitUnencryptedLog extends Instruction {
185
- indirect;
186
- logSizeOffset;
187
- logOffset;
188
- // TODO(#11124): rename unencrypted -> public
189
- static type = 'EMITUNENCRYPTEDLOG';
190
- static opcode = Opcode.EMITUNENCRYPTEDLOG;
191
- // Informs (de)serialization. See Instruction.deserialize.
192
- static wireFormat = [
193
- OperandType.UINT8,
194
- OperandType.UINT8,
195
- OperandType.UINT16,
196
- OperandType.UINT16
197
- ];
198
- constructor(indirect, logSizeOffset, logOffset){
199
- super(), this.indirect = indirect, this.logSizeOffset = logSizeOffset, this.logOffset = logOffset;
200
- }
201
- async execute(context) {
202
- if (context.environment.isStaticCall) {
203
- throw new StaticCallAlterationError();
204
- }
205
- const memory = context.machineState.memory;
206
- const addressing = Addressing.fromWire(this.indirect);
207
- context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
208
- const operands = [
209
- this.logSizeOffset,
210
- this.logOffset
211
- ];
212
- const [logSizeOffset, logOffset] = addressing.resolve(operands, memory);
213
- memory.checkTag(TypeTag.UINT32, logSizeOffset);
214
- const logSize = memory.get(logSizeOffset).toNumber();
215
- memory.checkTagsRange(TypeTag.FIELD, logOffset, logSize);
216
- const contractAddress = context.environment.address;
217
- context.machineState.consumeGas(this.dynamicGasCost(logSize));
218
- const log = memory.getSlice(logOffset, logSize).map((f)=>f.toFr());
219
- context.persistableState.writePublicLog(contractAddress, log);
220
- }
221
- }
222
- export class SendL2ToL1Message extends Instruction {
223
- indirect;
224
- recipientOffset;
225
- contentOffset;
226
- static type = 'SENDL2TOL1MSG';
227
- static opcode = Opcode.SENDL2TOL1MSG;
228
- // Informs (de)serialization. See Instruction.deserialize.
229
- static wireFormat = [
230
- OperandType.UINT8,
231
- OperandType.UINT8,
232
- OperandType.UINT16,
233
- OperandType.UINT16
234
- ];
235
- constructor(indirect, recipientOffset, contentOffset){
236
- super(), this.indirect = indirect, this.recipientOffset = recipientOffset, this.contentOffset = contentOffset;
237
- }
238
- async execute(context) {
239
- if (context.environment.isStaticCall) {
240
- throw new StaticCallAlterationError();
241
- }
242
- const memory = context.machineState.memory;
243
- const addressing = Addressing.fromWire(this.indirect);
244
- context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
245
- const operands = [
246
- this.recipientOffset,
247
- this.contentOffset
248
- ];
249
- const [recipientOffset, contentOffset] = addressing.resolve(operands, memory);
250
- memory.checkTags(TypeTag.FIELD, recipientOffset, contentOffset);
251
- const recipient = memory.get(recipientOffset).toFr();
252
- const content = memory.get(contentOffset).toFr();
253
- context.persistableState.writeL2ToL1Message(context.environment.address, recipient, content);
254
- }
255
- }
@@ -1,31 +0,0 @@
1
- import { AVM_MAX_OPERANDS } from '@aztec/constants';
2
- import type { Tuple } from '@aztec/foundation/serialize';
3
- import { type TaggedMemoryInterface } from '../avm_memory_types.js';
4
- export declare enum AddressingMode {
5
- DIRECT = 0,
6
- INDIRECT = 1,
7
- RELATIVE = 2,
8
- INDIRECT_RELATIVE = 3
9
- }
10
- /** A class to represent the addressing mode of an instruction. */
11
- export declare class Addressing {
12
- /** The addressing mode for each possible operand. */
13
- private readonly modePerOperand;
14
- constructor(
15
- /** The addressing mode for each possible operand. */
16
- modePerOperand: Tuple<AddressingMode, typeof AVM_MAX_OPERANDS>);
17
- static fromModes(modes: AddressingMode[]): Addressing;
18
- static fromWire(wireModes: number): Addressing;
19
- toWire(): number;
20
- indirectOperandsCount(): number;
21
- relativeOperandsCount(): number;
22
- /**
23
- * Resolves the offsets using the addressing mode.
24
- * @param offsets The offsets to resolve.
25
- * @param mem The memory to use for resolution.
26
- * @returns The resolved offsets. The length of the returned array is the same as the length of the input array and the resolved offsets are guaranteed to be valid addresses.
27
- * @throws An error if any step failed. Should be treated as a black box.
28
- */
29
- resolve(offsets: number[], mem: TaggedMemoryInterface): number[];
30
- }
31
- //# sourceMappingURL=addressing_mode.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"addressing_mode.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/addressing_mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAIzD,OAAO,EAA6B,KAAK,qBAAqB,EAAW,MAAM,wBAAwB,CAAC;AAGxG,oBAAY,cAAc;IACxB,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,iBAAiB,IAAI;CACtB;AAED,kEAAkE;AAClE,qBAAa,UAAU;IAEnB,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc;;IAD/B,qDAAqD;IACpC,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,gBAAgB,CAAC;WAGnE,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,UAAU;WAK9C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU;IAa9C,MAAM,IAAI,MAAM;IAehB,qBAAqB,IAAI,MAAM;IAI/B,qBAAqB,IAAI,MAAM;IAItC;;;;;;OAMG;IACI,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,qBAAqB,GAAG,MAAM,EAAE;CAuCxE"}
@@ -1,94 +0,0 @@
1
- import { AVM_MAX_OPERANDS } from '@aztec/constants';
2
- import { padArrayEnd } from '@aztec/foundation/collection';
3
- import { strict as assert } from 'assert';
4
- import { TaggedMemory, TypeTag } from '../avm_memory_types.js';
5
- import { RelativeAddressOutOfRangeError, TagCheckError } from '../errors.js';
6
- export var AddressingMode = /*#__PURE__*/ function(AddressingMode) {
7
- AddressingMode[AddressingMode["DIRECT"] = 0] = "DIRECT";
8
- AddressingMode[AddressingMode["INDIRECT"] = 1] = "INDIRECT";
9
- AddressingMode[AddressingMode["RELATIVE"] = 2] = "RELATIVE";
10
- AddressingMode[AddressingMode["INDIRECT_RELATIVE"] = 3] = "INDIRECT_RELATIVE";
11
- return AddressingMode;
12
- }({});
13
- /** A class to represent the addressing mode of an instruction. */ export class Addressing {
14
- modePerOperand;
15
- constructor(/** The addressing mode for each possible operand. */ modePerOperand){
16
- this.modePerOperand = modePerOperand;
17
- }
18
- static fromModes(modes) {
19
- assert(modes.length <= AVM_MAX_OPERANDS, 'Too many operands for addressing mode');
20
- return new Addressing(padArrayEnd(modes, 0, AVM_MAX_OPERANDS));
21
- }
22
- static fromWire(wireModes) {
23
- // The modes are stored in the wire format as one or two bytes, with each two bits representing the modes for an operand.
24
- // Even bits are indirect, odd bits are relative.
25
- const modes = new Array(AVM_MAX_OPERANDS);
26
- for(let i = 0; i < AVM_MAX_OPERANDS; i++){
27
- modes[i] = (wireModes >> i * 2 & 1) * 1 | (wireModes >> i * 2 + 1 & 1) * 2;
28
- }
29
- // Casting the array to tuple since it should be more performant than using makeTuple
30
- return new Addressing(modes);
31
- }
32
- toWire() {
33
- // The modes are stored in the wire format as a byte, with each bit representing the mode for an operand.
34
- // The least significant bit represents the zeroth operand, and the least significant bit represents the last operand.
35
- let wire = 0;
36
- for(let i = 0; i < this.modePerOperand.length; i++){
37
- if (this.modePerOperand[i] & 1) {
38
- wire |= 1 << i * 2;
39
- }
40
- if (this.modePerOperand[i] & 2) {
41
- wire |= 1 << i * 2 + 1;
42
- }
43
- }
44
- return wire;
45
- }
46
- indirectOperandsCount() {
47
- return this.modePerOperand.filter((mode)=>mode & 1).length;
48
- }
49
- relativeOperandsCount() {
50
- return this.modePerOperand.filter((mode)=>mode & 2).length;
51
- }
52
- /**
53
- * Resolves the offsets using the addressing mode.
54
- * @param offsets The offsets to resolve.
55
- * @param mem The memory to use for resolution.
56
- * @returns The resolved offsets. The length of the returned array is the same as the length of the input array and the resolved offsets are guaranteed to be valid addresses.
57
- * @throws An error if any step failed. Should be treated as a black box.
58
- */ resolve(offsets, mem) {
59
- const resolved = new Array(offsets.length);
60
- // These will be read (once) if we have any relative operands.
61
- let baseAddr;
62
- for (const [i, offset] of offsets.entries()){
63
- const mode = this.modePerOperand[i];
64
- // The given offsets are assumed to be valid addresses.
65
- resolved[i] = offset;
66
- if (mode & 2) {
67
- if (!baseAddr) {
68
- baseAddr = mem.get(0);
69
- const baseAddrTag = baseAddr.getTag();
70
- if (!TaggedMemory.isValidMemoryAddressTag(baseAddrTag)) {
71
- throw TagCheckError.forOffset(0, TypeTag[baseAddrTag], TypeTag[TypeTag.UINT32]);
72
- }
73
- }
74
- // Here we know that resolved[i] is at most 32 bits and baseAddr is at most 32 bits.
75
- // Therefore, the addition is safe since the `number` type fits more than 33 bits.
76
- resolved[i] += Number(baseAddr.toBigInt());
77
- if (resolved[i] >= TaggedMemory.MAX_MEMORY_SIZE) {
78
- throw new RelativeAddressOutOfRangeError(Number(baseAddr.toBigInt()), offset);
79
- }
80
- }
81
- if (mode & 1) {
82
- // At this point we know that resolved[i] is a valid memory address.
83
- const resolvedValue = mem.get(resolved[i]);
84
- const resolvedTag = resolvedValue.getTag();
85
- // Final check.
86
- if (!TaggedMemory.isValidMemoryAddressTag(resolvedTag)) {
87
- throw TagCheckError.forOffset(resolved[i], TypeTag[resolvedTag], TypeTag[TypeTag.UINT32]);
88
- }
89
- resolved[i] = Number(resolvedValue.toBigInt());
90
- }
91
- }
92
- return resolved;
93
- }
94
- }
@@ -1,47 +0,0 @@
1
- import type { AvmContext } from '../avm_context.js';
2
- import { type Field, type IntegralValue, type MemoryValue, type TaggedMemoryInterface } from '../avm_memory_types.js';
3
- import { Opcode } from '../serialization/instruction_serialization.js';
4
- import { ThreeOperandInstruction } from './instruction_impl.js';
5
- export declare abstract class ThreeOperandArithmeticInstruction extends ThreeOperandInstruction {
6
- execute(context: AvmContext): Promise<void>;
7
- protected abstract compute(a: MemoryValue, b: MemoryValue): MemoryValue;
8
- protected checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number): void;
9
- }
10
- export declare class Add extends ThreeOperandArithmeticInstruction {
11
- static readonly type: string;
12
- static readonly opcode = Opcode.ADD_8;
13
- protected compute(a: MemoryValue, b: MemoryValue): MemoryValue;
14
- }
15
- export declare class Sub extends ThreeOperandArithmeticInstruction {
16
- static readonly type: string;
17
- static readonly opcode = Opcode.SUB_8;
18
- protected compute(a: MemoryValue, b: MemoryValue): MemoryValue;
19
- }
20
- export declare class Mul extends ThreeOperandArithmeticInstruction {
21
- static type: string;
22
- static readonly opcode = Opcode.MUL_8;
23
- protected compute(a: MemoryValue, b: MemoryValue): MemoryValue;
24
- }
25
- export declare class Div extends ThreeOperandArithmeticInstruction {
26
- static type: string;
27
- static readonly opcode = Opcode.DIV_8;
28
- protected compute(a: MemoryValue, b: MemoryValue): MemoryValue;
29
- protected checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number): void;
30
- }
31
- export declare class FieldDiv extends ThreeOperandArithmeticInstruction {
32
- static type: string;
33
- static readonly opcode = Opcode.FDIV_8;
34
- protected compute(a: Field, b: Field): Field;
35
- protected checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number): void;
36
- }
37
- export declare class Shl extends ThreeOperandArithmeticInstruction {
38
- static readonly type: string;
39
- static readonly opcode = Opcode.SHL_8;
40
- protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
41
- }
42
- export declare class Shr extends ThreeOperandArithmeticInstruction {
43
- static readonly type: string;
44
- static readonly opcode = Opcode.SHR_8;
45
- protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
46
- }
47
- //# sourceMappingURL=arithmetic.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arithmetic.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/arithmetic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,KAAK,KAAK,EACV,KAAK,aAAa,EAClB,KAAK,WAAW,EAEhB,KAAK,qBAAqB,EAE3B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,+CAA+C,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,8BAAsB,iCAAkC,SAAQ,uBAAuB;IACxE,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW;IACvE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAGpF;AAED,qBAAa,GAAI,SAAQ,iCAAiC;IACxD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;IAEtC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW;CAG/D;AAED,qBAAa,GAAI,SAAQ,iCAAiC;IACxD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;IAEtC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW;CAG/D;AAED,qBAAa,GAAI,SAAQ,iCAAiC;IACxD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;IAEtC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW;CAG/D;AAED,qBAAa,GAAI,SAAQ,iCAAiC;IACxD,MAAM,CAAC,IAAI,EAAE,MAAM,CAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;IAEtC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,WAAW;cAQ3C,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI7F;AAED,qBAAa,QAAS,SAAQ,iCAAiC;IAC7D,MAAM,CAAC,IAAI,EAAE,MAAM,CAAU;IAC7B,MAAM,CAAC,QAAQ,CAAC,MAAM,iBAAiB;IAEvC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK;cAKzB,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI7F;AAED,qBAAa,GAAI,SAAQ,iCAAiC;IACxD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;cAEnB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;CAG9E;AAED,qBAAa,GAAI,SAAQ,iCAAiC;IACxD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;cAEnB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;CAG9E"}
@@ -1,87 +0,0 @@
1
- import { TaggedMemory, TypeTag } from '../avm_memory_types.js';
2
- import { ArithmeticError } from '../errors.js';
3
- import { Opcode } from '../serialization/instruction_serialization.js';
4
- import { Addressing } from './addressing_mode.js';
5
- import { ThreeOperandInstruction } from './instruction_impl.js';
6
- export class ThreeOperandArithmeticInstruction extends ThreeOperandInstruction {
7
- async execute(context) {
8
- const memory = context.machineState.memory;
9
- const addressing = Addressing.fromWire(this.indirect);
10
- context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
11
- const operands = [
12
- this.aOffset,
13
- this.bOffset,
14
- this.dstOffset
15
- ];
16
- const [aOffset, bOffset, dstOffset] = addressing.resolve(operands, memory);
17
- this.checkTags(memory, aOffset, bOffset);
18
- const a = memory.get(aOffset);
19
- const b = memory.get(bOffset);
20
- const dest = this.compute(a, b);
21
- memory.set(dstOffset, dest);
22
- }
23
- checkTags(memory, aOffset, bOffset) {
24
- memory.checkTagsAreSame(aOffset, bOffset);
25
- }
26
- }
27
- export class Add extends ThreeOperandArithmeticInstruction {
28
- static type = 'ADD';
29
- static opcode = Opcode.ADD_8;
30
- compute(a, b) {
31
- return a.add(b);
32
- }
33
- }
34
- export class Sub extends ThreeOperandArithmeticInstruction {
35
- static type = 'SUB';
36
- static opcode = Opcode.SUB_8;
37
- compute(a, b) {
38
- return a.sub(b);
39
- }
40
- }
41
- export class Mul extends ThreeOperandArithmeticInstruction {
42
- static type = 'MUL';
43
- static opcode = Opcode.MUL_8;
44
- compute(a, b) {
45
- return a.mul(b);
46
- }
47
- }
48
- export class Div extends ThreeOperandArithmeticInstruction {
49
- static type = 'DIV';
50
- static opcode = Opcode.DIV_8;
51
- compute(a, b) {
52
- if (b.toBigInt() === 0n) {
53
- throw new ArithmeticError('Division by zero');
54
- }
55
- return a.div(b);
56
- }
57
- checkTags(memory, aOffset, bOffset) {
58
- memory.checkTagsAreSame(aOffset, bOffset);
59
- TaggedMemory.checkIsIntegralTag(memory.getTag(aOffset)); // Follows that bOffset tag is also of integral type
60
- }
61
- }
62
- export class FieldDiv extends ThreeOperandArithmeticInstruction {
63
- static type = 'FDIV';
64
- static opcode = Opcode.FDIV_8;
65
- compute(a, b) {
66
- // return (a as Field).fdiv(b as Field);
67
- return a.fdiv(b);
68
- }
69
- checkTags(memory, aOffset, bOffset) {
70
- memory.checkTagsAreSame(aOffset, bOffset);
71
- memory.checkTag(TypeTag.FIELD, aOffset); // Follows that bOffset has also tag of type Field
72
- }
73
- }
74
- export class Shl extends ThreeOperandArithmeticInstruction {
75
- static type = 'SHL';
76
- static opcode = Opcode.SHL_8;
77
- compute(a, b) {
78
- return a.shl(b);
79
- }
80
- }
81
- export class Shr extends ThreeOperandArithmeticInstruction {
82
- static type = 'SHR';
83
- static opcode = Opcode.SHR_8;
84
- compute(a, b) {
85
- return a.shr(b);
86
- }
87
- }
@@ -1,42 +0,0 @@
1
- import type { AvmContext } from '../avm_context.js';
2
- import { type IntegralValue, type TaggedMemoryInterface, TypeTag } from '../avm_memory_types.js';
3
- import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
4
- import { Instruction } from './instruction.js';
5
- import { ThreeOperandInstruction } from './instruction_impl.js';
6
- declare abstract class ThreeOperandBitwiseInstruction extends ThreeOperandInstruction {
7
- execute(context: AvmContext): Promise<void>;
8
- protected abstract compute(a: IntegralValue, b: IntegralValue): IntegralValue;
9
- protected checkTags(memory: TaggedMemoryInterface, aOffset: number, bOffset: number): void;
10
- protected getDynamicMultiplier(_lhsTag: TypeTag): number;
11
- }
12
- export declare class And extends ThreeOperandBitwiseInstruction {
13
- static readonly type: string;
14
- static readonly opcode = Opcode.AND_8;
15
- protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
16
- protected getDynamicMultiplier(lhsTag: TypeTag): number;
17
- }
18
- export declare class Or extends ThreeOperandBitwiseInstruction {
19
- static readonly type: string;
20
- static readonly opcode = Opcode.OR_8;
21
- protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
22
- protected getDynamicMultiplier(lhsTag: TypeTag): number;
23
- }
24
- export declare class Xor extends ThreeOperandBitwiseInstruction {
25
- static readonly type: string;
26
- static readonly opcode = Opcode.XOR_8;
27
- protected compute(a: IntegralValue, b: IntegralValue): IntegralValue;
28
- protected getDynamicMultiplier(lhsTag: TypeTag): number;
29
- }
30
- export declare class Not extends Instruction {
31
- private indirect;
32
- private srcOffset;
33
- private dstOffset;
34
- static readonly type: string;
35
- static readonly opcode = Opcode.NOT_8;
36
- static readonly wireFormat8: OperandType[];
37
- static readonly wireFormat16: OperandType[];
38
- constructor(indirect: number, srcOffset: number, dstOffset: number);
39
- execute(context: AvmContext): Promise<void>;
40
- }
41
- export {};
42
- //# sourceMappingURL=bitwise.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bitwise.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/opcodes/bitwise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,KAAK,aAAa,EAAgB,KAAK,qBAAqB,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC/G,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAEpF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,uBAAe,8BAA+B,SAAQ,uBAAuB;IAC9D,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBxD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;IAC7E,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAKnF,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM;CAGzD;AAED,qBAAa,GAAI,SAAQ,8BAA8B;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;cAEnB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;cAI1D,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;CAGjE;AAED,qBAAa,EAAG,SAAQ,8BAA8B;IACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAQ;IACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,eAAe;cAElB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;cAI1D,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;CAGjE;AAED,qBAAa,GAAI,SAAQ,8BAA8B;IACrD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;cAEnB,OAAO,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,aAAa;cAI1D,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;CAGjE;AAED,qBAAa,GAAI,SAAQ,WAAW;IAQhC,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IATnB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,gBAAgB;IAEtC,MAAM,CAAC,QAAQ,CAAC,WAAW,gBAAgF;IAC3G,MAAM,CAAC,QAAQ,CAAC,YAAY,gBAAkF;gBAGpG,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM;IAKd,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAgBzD"}
@@ -1,99 +0,0 @@
1
- import { getBitwiseDynamicGasMultiplier } from '../avm_gas.js';
2
- import { TaggedMemory } from '../avm_memory_types.js';
3
- import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
4
- import { Addressing } from './addressing_mode.js';
5
- import { Instruction } from './instruction.js';
6
- import { ThreeOperandInstruction } from './instruction_impl.js';
7
- class ThreeOperandBitwiseInstruction extends ThreeOperandInstruction {
8
- async execute(context) {
9
- const memory = context.machineState.memory;
10
- const addressing = Addressing.fromWire(this.indirect);
11
- context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
12
- const operands = [
13
- this.aOffset,
14
- this.bOffset,
15
- this.dstOffset
16
- ];
17
- const [aOffset, bOffset, dstOffset] = addressing.resolve(operands, memory);
18
- this.checkTags(memory, aOffset, bOffset);
19
- const multiplier = this.getDynamicMultiplier(memory.getTag(aOffset));
20
- context.machineState.consumeGas(this.dynamicGasCost(multiplier));
21
- const a = memory.getAs(aOffset);
22
- const b = memory.getAs(bOffset);
23
- const res = this.compute(a, b);
24
- memory.set(dstOffset, res);
25
- }
26
- checkTags(memory, aOffset, bOffset) {
27
- TaggedMemory.checkIsIntegralTag(memory.getTag(aOffset));
28
- memory.checkTagsAreSame(aOffset, bOffset);
29
- }
30
- getDynamicMultiplier(_lhsTag) {
31
- return 0;
32
- }
33
- }
34
- export class And extends ThreeOperandBitwiseInstruction {
35
- static type = 'AND';
36
- static opcode = Opcode.AND_8;
37
- compute(a, b) {
38
- return a.and(b);
39
- }
40
- getDynamicMultiplier(lhsTag) {
41
- return getBitwiseDynamicGasMultiplier(lhsTag);
42
- }
43
- }
44
- export class Or extends ThreeOperandBitwiseInstruction {
45
- static type = 'OR';
46
- static opcode = Opcode.OR_8;
47
- compute(a, b) {
48
- return a.or(b);
49
- }
50
- getDynamicMultiplier(lhsTag) {
51
- return getBitwiseDynamicGasMultiplier(lhsTag);
52
- }
53
- }
54
- export class Xor extends ThreeOperandBitwiseInstruction {
55
- static type = 'XOR';
56
- static opcode = Opcode.XOR_8;
57
- compute(a, b) {
58
- return a.xor(b);
59
- }
60
- getDynamicMultiplier(lhsTag) {
61
- return getBitwiseDynamicGasMultiplier(lhsTag);
62
- }
63
- }
64
- export class Not extends Instruction {
65
- indirect;
66
- srcOffset;
67
- dstOffset;
68
- static type = 'NOT';
69
- static opcode = Opcode.NOT_8;
70
- static wireFormat8 = [
71
- OperandType.UINT8,
72
- OperandType.UINT8,
73
- OperandType.UINT8,
74
- OperandType.UINT8
75
- ];
76
- static wireFormat16 = [
77
- OperandType.UINT8,
78
- OperandType.UINT8,
79
- OperandType.UINT16,
80
- OperandType.UINT16
81
- ];
82
- constructor(indirect, srcOffset, dstOffset){
83
- super(), this.indirect = indirect, this.srcOffset = srcOffset, this.dstOffset = dstOffset;
84
- }
85
- async execute(context) {
86
- const memory = context.machineState.memory;
87
- const addressing = Addressing.fromWire(this.indirect);
88
- context.machineState.consumeGas(this.baseGasCost(addressing.indirectOperandsCount(), addressing.relativeOperandsCount()));
89
- const operands = [
90
- this.srcOffset,
91
- this.dstOffset
92
- ];
93
- const [srcOffset, dstOffset] = addressing.resolve(operands, memory);
94
- TaggedMemory.checkIsIntegralTag(memory.getTag(srcOffset));
95
- const value = memory.getAs(srcOffset);
96
- const res = value.not();
97
- memory.set(dstOffset, res);
98
- }
99
- }