@aztec/simulator 0.0.0-test.0

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 (367) hide show
  1. package/README.md +49 -0
  2. package/dest/client.d.ts +5 -0
  3. package/dest/client.d.ts.map +1 -0
  4. package/dest/client.js +3 -0
  5. package/dest/common/db_interfaces.d.ts +80 -0
  6. package/dest/common/db_interfaces.d.ts.map +1 -0
  7. package/dest/common/db_interfaces.js +1 -0
  8. package/dest/common/debug_fn_name.d.ts +5 -0
  9. package/dest/common/debug_fn_name.d.ts.map +1 -0
  10. package/dest/common/debug_fn_name.js +6 -0
  11. package/dest/common/errors.d.ts +54 -0
  12. package/dest/common/errors.d.ts.map +1 -0
  13. package/dest/common/errors.js +135 -0
  14. package/dest/common/index.d.ts +4 -0
  15. package/dest/common/index.d.ts.map +1 -0
  16. package/dest/common/index.js +3 -0
  17. package/dest/common/message_load_oracle_inputs.d.ts +15 -0
  18. package/dest/common/message_load_oracle_inputs.d.ts.map +1 -0
  19. package/dest/common/message_load_oracle_inputs.js +15 -0
  20. package/dest/common/stats/index.d.ts +2 -0
  21. package/dest/common/stats/index.d.ts.map +1 -0
  22. package/dest/common/stats/index.js +1 -0
  23. package/dest/common/stats/stats.d.ts +4 -0
  24. package/dest/common/stats/stats.d.ts.map +1 -0
  25. package/dest/common/stats/stats.js +10 -0
  26. package/dest/private/acvm/acvm.d.ts +35 -0
  27. package/dest/private/acvm/acvm.d.ts.map +1 -0
  28. package/dest/private/acvm/acvm.js +70 -0
  29. package/dest/private/acvm/acvm_types.d.ts +10 -0
  30. package/dest/private/acvm/acvm_types.d.ts.map +1 -0
  31. package/dest/private/acvm/acvm_types.js +3 -0
  32. package/dest/private/acvm/deserialize.d.ts +36 -0
  33. package/dest/private/acvm/deserialize.d.ts.map +1 -0
  34. package/dest/private/acvm/deserialize.js +42 -0
  35. package/dest/private/acvm/index.d.ts +6 -0
  36. package/dest/private/acvm/index.d.ts.map +1 -0
  37. package/dest/private/acvm/index.js +5 -0
  38. package/dest/private/acvm/oracle/index.d.ts +14 -0
  39. package/dest/private/acvm/oracle/index.d.ts.map +1 -0
  40. package/dest/private/acvm/oracle/index.js +2 -0
  41. package/dest/private/acvm/oracle/oracle.d.ts +49 -0
  42. package/dest/private/acvm/oracle/oracle.d.ts.map +1 -0
  43. package/dest/private/acvm/oracle/oracle.js +263 -0
  44. package/dest/private/acvm/oracle/typed_oracle.d.ts +83 -0
  45. package/dest/private/acvm/oracle/typed_oracle.d.ts.map +1 -0
  46. package/dest/private/acvm/oracle/typed_oracle.js +132 -0
  47. package/dest/private/acvm/serialize.d.ts +24 -0
  48. package/dest/private/acvm/serialize.d.ts.map +1 -0
  49. package/dest/private/acvm/serialize.js +46 -0
  50. package/dest/private/execution_data_provider.d.ts +261 -0
  51. package/dest/private/execution_data_provider.d.ts.map +1 -0
  52. package/dest/private/execution_data_provider.js +14 -0
  53. package/dest/private/execution_note_cache.d.ts +93 -0
  54. package/dest/private/execution_note_cache.d.ts.map +1 -0
  55. package/dest/private/execution_note_cache.js +180 -0
  56. package/dest/private/hashed_values_cache.d.ts +28 -0
  57. package/dest/private/hashed_values_cache.d.ts.map +1 -0
  58. package/dest/private/hashed_values_cache.js +46 -0
  59. package/dest/private/index.d.ts +13 -0
  60. package/dest/private/index.d.ts.map +1 -0
  61. package/dest/private/index.js +12 -0
  62. package/dest/private/pick_notes.d.ts +85 -0
  63. package/dest/private/pick_notes.d.ts.map +1 -0
  64. package/dest/private/pick_notes.js +51 -0
  65. package/dest/private/private_execution.d.ts +25 -0
  66. package/dest/private/private_execution.d.ts.map +1 -0
  67. package/dest/private/private_execution.js +92 -0
  68. package/dest/private/private_execution_oracle.d.ts +215 -0
  69. package/dest/private/private_execution_oracle.d.ts.map +1 -0
  70. package/dest/private/private_execution_oracle.js +382 -0
  71. package/dest/private/providers/acvm_native.d.ts +40 -0
  72. package/dest/private/providers/acvm_native.d.ts.map +1 -0
  73. package/dest/private/providers/acvm_native.js +139 -0
  74. package/dest/private/providers/acvm_wasm.d.ts +15 -0
  75. package/dest/private/providers/acvm_wasm.d.ts.map +1 -0
  76. package/dest/private/providers/acvm_wasm.js +62 -0
  77. package/dest/private/providers/acvm_wasm_with_blobs.d.ts +19 -0
  78. package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +1 -0
  79. package/dest/private/providers/acvm_wasm_with_blobs.js +32 -0
  80. package/dest/private/providers/factory.d.ts +12 -0
  81. package/dest/private/providers/factory.d.ts.map +1 -0
  82. package/dest/private/providers/factory.js +27 -0
  83. package/dest/private/providers/simulation_provider.d.ts +19 -0
  84. package/dest/private/providers/simulation_provider.d.ts.map +1 -0
  85. package/dest/private/providers/simulation_provider.js +24 -0
  86. package/dest/private/simulator.d.ts +34 -0
  87. package/dest/private/simulator.d.ts.map +1 -0
  88. package/dest/private/simulator.js +76 -0
  89. package/dest/private/unconstrained_execution.d.ts +10 -0
  90. package/dest/private/unconstrained_execution.d.ts.map +1 -0
  91. package/dest/private/unconstrained_execution.js +27 -0
  92. package/dest/private/unconstrained_execution_oracle.d.ts +161 -0
  93. package/dest/private/unconstrained_execution_oracle.d.ts.map +1 -0
  94. package/dest/private/unconstrained_execution_oracle.js +258 -0
  95. package/dest/public/avm/avm_context.d.ts +41 -0
  96. package/dest/public/avm/avm_context.d.ts.map +1 -0
  97. package/dest/public/avm/avm_context.js +44 -0
  98. package/dest/public/avm/avm_contract_call_result.d.ts +30 -0
  99. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -0
  100. package/dest/public/avm/avm_contract_call_result.js +50 -0
  101. package/dest/public/avm/avm_execution_environment.d.ts +21 -0
  102. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -0
  103. package/dest/public/avm/avm_execution_environment.js +31 -0
  104. package/dest/public/avm/avm_gas.d.ts +60 -0
  105. package/dest/public/avm/avm_gas.d.ts.map +1 -0
  106. package/dest/public/avm/avm_gas.js +203 -0
  107. package/dest/public/avm/avm_machine_state.d.ts +95 -0
  108. package/dest/public/avm/avm_machine_state.d.ts.map +1 -0
  109. package/dest/public/avm/avm_machine_state.js +107 -0
  110. package/dest/public/avm/avm_memory_types.d.ts +264 -0
  111. package/dest/public/avm/avm_memory_types.d.ts.map +1 -0
  112. package/dest/public/avm/avm_memory_types.js +340 -0
  113. package/dest/public/avm/avm_simulator.d.ts +40 -0
  114. package/dest/public/avm/avm_simulator.d.ts.map +1 -0
  115. package/dest/public/avm/avm_simulator.js +202 -0
  116. package/dest/public/avm/bytecode_utils.d.ts +5 -0
  117. package/dest/public/avm/bytecode_utils.d.ts.map +1 -0
  118. package/dest/public/avm/bytecode_utils.js +17 -0
  119. package/dest/public/avm/errors.d.ts +122 -0
  120. package/dest/public/avm/errors.d.ts.map +1 -0
  121. package/dest/public/avm/errors.js +179 -0
  122. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +21 -0
  123. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -0
  124. package/dest/public/avm/fixtures/avm_simulation_tester.js +76 -0
  125. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +36 -0
  126. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -0
  127. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +83 -0
  128. package/dest/public/avm/fixtures/index.d.ts +84 -0
  129. package/dest/public/avm/fixtures/index.d.ts.map +1 -0
  130. package/dest/public/avm/fixtures/index.js +175 -0
  131. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts +35 -0
  132. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +1 -0
  133. package/dest/public/avm/fixtures/simple_contract_data_source.js +74 -0
  134. package/dest/public/avm/index.d.ts +4 -0
  135. package/dest/public/avm/index.d.ts.map +1 -0
  136. package/dest/public/avm/index.js +3 -0
  137. package/dest/public/avm/journal/index.d.ts +2 -0
  138. package/dest/public/avm/journal/index.d.ts.map +1 -0
  139. package/dest/public/avm/journal/index.js +1 -0
  140. package/dest/public/avm/journal/journal.d.ts +209 -0
  141. package/dest/public/avm/journal/journal.d.ts.map +1 -0
  142. package/dest/public/avm/journal/journal.js +486 -0
  143. package/dest/public/avm/journal/nullifiers.d.ts +64 -0
  144. package/dest/public/avm/journal/nullifiers.d.ts.map +1 -0
  145. package/dest/public/avm/journal/nullifiers.js +97 -0
  146. package/dest/public/avm/journal/public_storage.d.ts +66 -0
  147. package/dest/public/avm/journal/public_storage.d.ts.map +1 -0
  148. package/dest/public/avm/journal/public_storage.js +145 -0
  149. package/dest/public/avm/opcodes/accrued_substate.d.ts +75 -0
  150. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -0
  151. package/dest/public/avm/opcodes/accrued_substate.js +252 -0
  152. package/dest/public/avm/opcodes/addressing_mode.d.ts +27 -0
  153. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -0
  154. package/dest/public/avm/opcodes/addressing_mode.js +74 -0
  155. package/dest/public/avm/opcodes/arithmetic.d.ts +37 -0
  156. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -0
  157. package/dest/public/avm/opcodes/arithmetic.js +73 -0
  158. package/dest/public/avm/opcodes/bitwise.d.ts +50 -0
  159. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -0
  160. package/dest/public/avm/opcodes/bitwise.js +106 -0
  161. package/dest/public/avm/opcodes/comparators.d.ts +25 -0
  162. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -0
  163. package/dest/public/avm/opcodes/comparators.js +43 -0
  164. package/dest/public/avm/opcodes/contract.d.ts +21 -0
  165. package/dest/public/avm/opcodes/contract.d.ts.map +1 -0
  166. package/dest/public/avm/opcodes/contract.js +66 -0
  167. package/dest/public/avm/opcodes/control_flow.d.ts +41 -0
  168. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -0
  169. package/dest/public/avm/opcodes/control_flow.js +105 -0
  170. package/dest/public/avm/opcodes/conversion.d.ts +17 -0
  171. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -0
  172. package/dest/public/avm/opcodes/conversion.js +69 -0
  173. package/dest/public/avm/opcodes/ec_add.d.ts +19 -0
  174. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -0
  175. package/dest/public/avm/opcodes/ec_add.js +84 -0
  176. package/dest/public/avm/opcodes/environment_getters.d.ts +28 -0
  177. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -0
  178. package/dest/public/avm/opcodes/environment_getters.js +79 -0
  179. package/dest/public/avm/opcodes/external_calls.d.ts +58 -0
  180. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -0
  181. package/dest/public/avm/opcodes/external_calls.js +204 -0
  182. package/dest/public/avm/opcodes/hashing.d.ts +36 -0
  183. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -0
  184. package/dest/public/avm/opcodes/hashing.js +114 -0
  185. package/dest/public/avm/opcodes/index.d.ts +16 -0
  186. package/dest/public/avm/opcodes/index.d.ts.map +1 -0
  187. package/dest/public/avm/opcodes/index.js +15 -0
  188. package/dest/public/avm/opcodes/instruction.d.ts +70 -0
  189. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -0
  190. package/dest/public/avm/opcodes/instruction.js +91 -0
  191. package/dest/public/avm/opcodes/instruction_impl.d.ts +19 -0
  192. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -0
  193. package/dest/public/avm/opcodes/instruction_impl.js +30 -0
  194. package/dest/public/avm/opcodes/memory.d.ts +74 -0
  195. package/dest/public/avm/opcodes/memory.d.ts.map +1 -0
  196. package/dest/public/avm/opcodes/memory.js +253 -0
  197. package/dest/public/avm/opcodes/misc.d.ts +17 -0
  198. package/dest/public/avm/opcodes/misc.d.ts.map +1 -0
  199. package/dest/public/avm/opcodes/misc.js +48 -0
  200. package/dest/public/avm/opcodes/storage.d.ts +24 -0
  201. package/dest/public/avm/opcodes/storage.d.ts.map +1 -0
  202. package/dest/public/avm/opcodes/storage.js +66 -0
  203. package/dest/public/avm/serialization/buffer_cursor.d.ts +28 -0
  204. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -0
  205. package/dest/public/avm/serialization/buffer_cursor.js +99 -0
  206. package/dest/public/avm/serialization/bytecode_serialization.d.ts +21 -0
  207. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -0
  208. package/dest/public/avm/serialization/bytecode_serialization.js +332 -0
  209. package/dest/public/avm/serialization/instruction_serialization.d.ts +105 -0
  210. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -0
  211. package/dest/public/avm/serialization/instruction_serialization.js +226 -0
  212. package/dest/public/avm/test_utils.d.ts +18 -0
  213. package/dest/public/avm/test_utils.d.ts.map +1 -0
  214. package/dest/public/avm/test_utils.js +52 -0
  215. package/dest/public/bytecode_errors.d.ts +4 -0
  216. package/dest/public/bytecode_errors.d.ts.map +1 -0
  217. package/dest/public/bytecode_errors.js +6 -0
  218. package/dest/public/execution.d.ts +108 -0
  219. package/dest/public/execution.d.ts.map +1 -0
  220. package/dest/public/execution.js +9 -0
  221. package/dest/public/executor_metrics.d.ts +13 -0
  222. package/dest/public/executor_metrics.d.ts.map +1 -0
  223. package/dest/public/executor_metrics.js +54 -0
  224. package/dest/public/fixtures/index.d.ts +3 -0
  225. package/dest/public/fixtures/index.d.ts.map +1 -0
  226. package/dest/public/fixtures/index.js +2 -0
  227. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +32 -0
  228. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -0
  229. package/dest/public/fixtures/public_tx_simulation_tester.js +93 -0
  230. package/dest/public/fixtures/utils.d.ts +13 -0
  231. package/dest/public/fixtures/utils.d.ts.map +1 -0
  232. package/dest/public/fixtures/utils.js +126 -0
  233. package/dest/public/index.d.ts +10 -0
  234. package/dest/public/index.d.ts.map +1 -0
  235. package/dest/public/index.js +8 -0
  236. package/dest/public/public_db_sources.d.ts +129 -0
  237. package/dest/public/public_db_sources.d.ts.map +1 -0
  238. package/dest/public/public_db_sources.js +264 -0
  239. package/dest/public/public_processor/public_processor.d.ts +74 -0
  240. package/dest/public/public_processor/public_processor.d.ts.map +1 -0
  241. package/dest/public/public_processor/public_processor.js +379 -0
  242. package/dest/public/public_processor/public_processor_metrics.d.ts +27 -0
  243. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -0
  244. package/dest/public/public_processor/public_processor_metrics.js +125 -0
  245. package/dest/public/public_tx_simulator/public_tx_context.d.ts +137 -0
  246. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -0
  247. package/dest/public/public_tx_simulator/public_tx_context.js +320 -0
  248. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +102 -0
  249. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -0
  250. package/dest/public/public_tx_simulator/public_tx_simulator.js +334 -0
  251. package/dest/public/side_effect_errors.d.ts +4 -0
  252. package/dest/public/side_effect_errors.d.ts.map +1 -0
  253. package/dest/public/side_effect_errors.js +6 -0
  254. package/dest/public/side_effect_trace.d.ts +132 -0
  255. package/dest/public/side_effect_trace.d.ts.map +1 -0
  256. package/dest/public/side_effect_trace.js +249 -0
  257. package/dest/public/side_effect_trace_interface.d.ts +34 -0
  258. package/dest/public/side_effect_trace_interface.d.ts.map +1 -0
  259. package/dest/public/side_effect_trace_interface.js +1 -0
  260. package/dest/public/tx_contract_cache.d.ts +41 -0
  261. package/dest/public/tx_contract_cache.d.ts.map +1 -0
  262. package/dest/public/tx_contract_cache.js +49 -0
  263. package/dest/public/unique_class_ids.d.ts +37 -0
  264. package/dest/public/unique_class_ids.d.ts.map +1 -0
  265. package/dest/public/unique_class_ids.js +61 -0
  266. package/dest/public/utils.d.ts +5 -0
  267. package/dest/public/utils.d.ts.map +1 -0
  268. package/dest/public/utils.js +35 -0
  269. package/dest/server.d.ts +6 -0
  270. package/dest/server.d.ts.map +1 -0
  271. package/dest/server.js +4 -0
  272. package/dest/test/utils.d.ts +13 -0
  273. package/dest/test/utils.d.ts.map +1 -0
  274. package/dest/test/utils.js +22 -0
  275. package/package.json +104 -0
  276. package/src/client.ts +4 -0
  277. package/src/common/db_interfaces.ts +94 -0
  278. package/src/common/debug_fn_name.ts +18 -0
  279. package/src/common/errors.ts +183 -0
  280. package/src/common/index.ts +3 -0
  281. package/src/common/message_load_oracle_inputs.ts +15 -0
  282. package/src/common/stats/index.ts +1 -0
  283. package/src/common/stats/stats.ts +20 -0
  284. package/src/private/acvm/acvm.ts +127 -0
  285. package/src/private/acvm/acvm_types.ts +11 -0
  286. package/src/private/acvm/deserialize.ts +52 -0
  287. package/src/private/acvm/index.ts +5 -0
  288. package/src/private/acvm/oracle/index.ts +16 -0
  289. package/src/private/acvm/oracle/oracle.ts +455 -0
  290. package/src/private/acvm/oracle/typed_oracle.ts +259 -0
  291. package/src/private/acvm/serialize.ts +60 -0
  292. package/src/private/execution_data_provider.ts +323 -0
  293. package/src/private/execution_note_cache.ts +217 -0
  294. package/src/private/hashed_values_cache.ts +55 -0
  295. package/src/private/index.ts +16 -0
  296. package/src/private/pick_notes.ts +141 -0
  297. package/src/private/private_execution.ts +151 -0
  298. package/src/private/private_execution_oracle.ts +614 -0
  299. package/src/private/providers/acvm_native.ts +171 -0
  300. package/src/private/providers/acvm_wasm.ts +63 -0
  301. package/src/private/providers/acvm_wasm_with_blobs.ts +50 -0
  302. package/src/private/providers/factory.ts +38 -0
  303. package/src/private/providers/simulation_provider.ts +45 -0
  304. package/src/private/simulator.ts +147 -0
  305. package/src/private/unconstrained_execution.ts +50 -0
  306. package/src/private/unconstrained_execution_oracle.ts +373 -0
  307. package/src/public/avm/avm_context.ts +61 -0
  308. package/src/public/avm/avm_contract_call_result.ts +55 -0
  309. package/src/public/avm/avm_execution_environment.ts +39 -0
  310. package/src/public/avm/avm_gas.ts +195 -0
  311. package/src/public/avm/avm_machine_state.ts +164 -0
  312. package/src/public/avm/avm_memory_types.ts +423 -0
  313. package/src/public/avm/avm_simulator.ts +284 -0
  314. package/src/public/avm/bytecode_utils.ts +17 -0
  315. package/src/public/avm/errors.ts +232 -0
  316. package/src/public/avm/fixtures/avm_simulation_tester.ts +105 -0
  317. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +109 -0
  318. package/src/public/avm/fixtures/index.ts +296 -0
  319. package/src/public/avm/fixtures/simple_contract_data_source.ts +105 -0
  320. package/src/public/avm/index.ts +3 -0
  321. package/src/public/avm/journal/index.ts +1 -0
  322. package/src/public/avm/journal/journal.ts +742 -0
  323. package/src/public/avm/journal/nullifiers.ts +109 -0
  324. package/src/public/avm/journal/public_storage.ts +174 -0
  325. package/src/public/avm/opcodes/.eslintrc.cjs +8 -0
  326. package/src/public/avm/opcodes/accrued_substate.ts +253 -0
  327. package/src/public/avm/opcodes/addressing_mode.ts +87 -0
  328. package/src/public/avm/opcodes/arithmetic.ts +95 -0
  329. package/src/public/avm/opcodes/bitwise.ts +109 -0
  330. package/src/public/avm/opcodes/comparators.ts +52 -0
  331. package/src/public/avm/opcodes/contract.ts +72 -0
  332. package/src/public/avm/opcodes/control_flow.ts +114 -0
  333. package/src/public/avm/opcodes/conversion.ts +80 -0
  334. package/src/public/avm/opcodes/ec_add.ts +93 -0
  335. package/src/public/avm/opcodes/environment_getters.ts +82 -0
  336. package/src/public/avm/opcodes/external_calls.ts +228 -0
  337. package/src/public/avm/opcodes/hashing.ts +125 -0
  338. package/src/public/avm/opcodes/index.ts +15 -0
  339. package/src/public/avm/opcodes/instruction.ts +126 -0
  340. package/src/public/avm/opcodes/instruction_impl.ts +36 -0
  341. package/src/public/avm/opcodes/memory.ts +254 -0
  342. package/src/public/avm/opcodes/misc.ts +60 -0
  343. package/src/public/avm/opcodes/storage.ts +71 -0
  344. package/src/public/avm/serialization/buffer_cursor.ts +115 -0
  345. package/src/public/avm/serialization/bytecode_serialization.ts +206 -0
  346. package/src/public/avm/serialization/instruction_serialization.ts +208 -0
  347. package/src/public/avm/test_utils.ts +81 -0
  348. package/src/public/bytecode_errors.ts +6 -0
  349. package/src/public/execution.ts +140 -0
  350. package/src/public/executor_metrics.ts +71 -0
  351. package/src/public/fixtures/index.ts +2 -0
  352. package/src/public/fixtures/public_tx_simulation_tester.ts +179 -0
  353. package/src/public/fixtures/utils.ts +199 -0
  354. package/src/public/index.ts +9 -0
  355. package/src/public/public_db_sources.ts +369 -0
  356. package/src/public/public_processor/public_processor.ts +521 -0
  357. package/src/public/public_processor/public_processor_metrics.ts +154 -0
  358. package/src/public/public_tx_simulator/public_tx_context.ts +504 -0
  359. package/src/public/public_tx_simulator/public_tx_simulator.ts +474 -0
  360. package/src/public/side_effect_errors.ts +6 -0
  361. package/src/public/side_effect_trace.ts +516 -0
  362. package/src/public/side_effect_trace_interface.ts +76 -0
  363. package/src/public/tx_contract_cache.ts +69 -0
  364. package/src/public/unique_class_ids.ts +80 -0
  365. package/src/public/utils.ts +32 -0
  366. package/src/server.ts +5 -0
  367. package/src/test/utils.ts +36 -0
@@ -0,0 +1,332 @@
1
+ import { AvmExecutionError, AvmParsingError, InvalidOpcodeError, InvalidProgramCounterError } from '../errors.js';
2
+ import { Add, And, Call, CalldataCopy, Cast, DebugLog, Div, EcAdd, EmitNoteHash, EmitNullifier, EmitUnencryptedLog, Eq, FieldDiv, GetContractInstance, GetEnvVar, Instruction, InternalCall, InternalReturn, Jump, JumpI, KeccakF1600, L1ToL2MessageExists, Lt, Lte, Mov, Mul, Not, NoteHashExists, NullifierExists, Or, Poseidon2, Return, ReturndataCopy, ReturndataSize, Revert, SLoad, SStore, SendL2ToL1Message, Set, Sha256Compression, Shl, Shr, StaticCall, Sub, SuccessCopy, ToRadixBE, Xor } from '../opcodes/index.js';
3
+ import { BufferCursor } from './buffer_cursor.js';
4
+ import { MAX_OPCODE_VALUE, Opcode } from './instruction_serialization.js';
5
+ export const INSTRUCTION_SET = new Map([
6
+ [
7
+ Opcode.ADD_8,
8
+ Add.as(Add.wireFormat8).deserialize
9
+ ],
10
+ [
11
+ Opcode.ADD_16,
12
+ Add.as(Add.wireFormat16).deserialize
13
+ ],
14
+ [
15
+ Opcode.SUB_8,
16
+ Sub.as(Sub.wireFormat8).deserialize
17
+ ],
18
+ [
19
+ Opcode.SUB_16,
20
+ Sub.as(Sub.wireFormat16).deserialize
21
+ ],
22
+ [
23
+ Opcode.MUL_8,
24
+ Mul.as(Mul.wireFormat8).deserialize
25
+ ],
26
+ [
27
+ Opcode.MUL_16,
28
+ Mul.as(Mul.wireFormat16).deserialize
29
+ ],
30
+ [
31
+ Opcode.DIV_8,
32
+ Div.as(Div.wireFormat8).deserialize
33
+ ],
34
+ [
35
+ Opcode.DIV_16,
36
+ Div.as(Div.wireFormat16).deserialize
37
+ ],
38
+ [
39
+ Opcode.FDIV_8,
40
+ FieldDiv.as(FieldDiv.wireFormat8).deserialize
41
+ ],
42
+ [
43
+ Opcode.FDIV_16,
44
+ FieldDiv.as(FieldDiv.wireFormat16).deserialize
45
+ ],
46
+ [
47
+ Opcode.EQ_8,
48
+ Eq.as(Eq.wireFormat8).deserialize
49
+ ],
50
+ [
51
+ Opcode.EQ_16,
52
+ Eq.as(Eq.wireFormat16).deserialize
53
+ ],
54
+ [
55
+ Opcode.LT_8,
56
+ Lt.as(Lt.wireFormat8).deserialize
57
+ ],
58
+ [
59
+ Opcode.LT_16,
60
+ Lt.as(Lt.wireFormat16).deserialize
61
+ ],
62
+ [
63
+ Opcode.LTE_8,
64
+ Lte.as(Lte.wireFormat8).deserialize
65
+ ],
66
+ [
67
+ Opcode.LTE_16,
68
+ Lte.as(Lte.wireFormat16).deserialize
69
+ ],
70
+ [
71
+ Opcode.AND_8,
72
+ And.as(And.wireFormat8).deserialize
73
+ ],
74
+ [
75
+ Opcode.AND_16,
76
+ And.as(And.wireFormat16).deserialize
77
+ ],
78
+ [
79
+ Opcode.OR_8,
80
+ Or.as(Or.wireFormat8).deserialize
81
+ ],
82
+ [
83
+ Opcode.OR_16,
84
+ Or.as(Or.wireFormat16).deserialize
85
+ ],
86
+ [
87
+ Opcode.XOR_8,
88
+ Xor.as(Xor.wireFormat8).deserialize
89
+ ],
90
+ [
91
+ Opcode.XOR_16,
92
+ Xor.as(Xor.wireFormat16).deserialize
93
+ ],
94
+ [
95
+ Opcode.NOT_8,
96
+ Not.as(Not.wireFormat8).deserialize
97
+ ],
98
+ [
99
+ Opcode.NOT_16,
100
+ Not.as(Not.wireFormat16).deserialize
101
+ ],
102
+ [
103
+ Opcode.SHL_8,
104
+ Shl.as(Shl.wireFormat8).deserialize
105
+ ],
106
+ [
107
+ Opcode.SHL_16,
108
+ Shl.as(Shl.wireFormat16).deserialize
109
+ ],
110
+ [
111
+ Opcode.SHR_8,
112
+ Shr.as(Shr.wireFormat8).deserialize
113
+ ],
114
+ [
115
+ Opcode.SHR_16,
116
+ Shr.as(Shr.wireFormat16).deserialize
117
+ ],
118
+ [
119
+ Opcode.CAST_8,
120
+ Cast.as(Cast.wireFormat8).deserialize
121
+ ],
122
+ [
123
+ Opcode.CAST_16,
124
+ Cast.as(Cast.wireFormat16).deserialize
125
+ ],
126
+ // Execution Environment
127
+ [
128
+ Opcode.GETENVVAR_16,
129
+ GetEnvVar.as(GetEnvVar.wireFormat16).deserialize
130
+ ],
131
+ [
132
+ CalldataCopy.opcode,
133
+ Instruction.deserialize.bind(CalldataCopy)
134
+ ],
135
+ [
136
+ SuccessCopy.opcode,
137
+ Instruction.deserialize.bind(SuccessCopy)
138
+ ],
139
+ [
140
+ Opcode.RETURNDATASIZE,
141
+ Instruction.deserialize.bind(ReturndataSize)
142
+ ],
143
+ [
144
+ Opcode.RETURNDATACOPY,
145
+ Instruction.deserialize.bind(ReturndataCopy)
146
+ ],
147
+ // Machine State - Internal Control Flow
148
+ [
149
+ Jump.opcode,
150
+ Instruction.deserialize.bind(Jump)
151
+ ],
152
+ [
153
+ JumpI.opcode,
154
+ Instruction.deserialize.bind(JumpI)
155
+ ],
156
+ [
157
+ InternalCall.opcode,
158
+ Instruction.deserialize.bind(InternalCall)
159
+ ],
160
+ [
161
+ InternalReturn.opcode,
162
+ Instruction.deserialize.bind(InternalReturn)
163
+ ],
164
+ [
165
+ Opcode.SET_8,
166
+ Set.as(Set.wireFormat8).deserialize
167
+ ],
168
+ [
169
+ Opcode.SET_16,
170
+ Set.as(Set.wireFormat16).deserialize
171
+ ],
172
+ [
173
+ Opcode.SET_32,
174
+ Set.as(Set.wireFormat32).deserialize
175
+ ],
176
+ [
177
+ Opcode.SET_64,
178
+ Set.as(Set.wireFormat64).deserialize
179
+ ],
180
+ [
181
+ Opcode.SET_128,
182
+ Set.as(Set.wireFormat128).deserialize
183
+ ],
184
+ [
185
+ Opcode.SET_FF,
186
+ Set.as(Set.wireFormatFF).deserialize
187
+ ],
188
+ [
189
+ Opcode.MOV_8,
190
+ Mov.as(Mov.wireFormat8).deserialize
191
+ ],
192
+ [
193
+ Opcode.MOV_16,
194
+ Mov.as(Mov.wireFormat16).deserialize
195
+ ],
196
+ // World State
197
+ [
198
+ SLoad.opcode,
199
+ Instruction.deserialize.bind(SLoad)
200
+ ],
201
+ [
202
+ SStore.opcode,
203
+ Instruction.deserialize.bind(SStore)
204
+ ],
205
+ [
206
+ NoteHashExists.opcode,
207
+ Instruction.deserialize.bind(NoteHashExists)
208
+ ],
209
+ [
210
+ EmitNoteHash.opcode,
211
+ Instruction.deserialize.bind(EmitNoteHash)
212
+ ],
213
+ [
214
+ NullifierExists.opcode,
215
+ Instruction.deserialize.bind(NullifierExists)
216
+ ],
217
+ [
218
+ EmitNullifier.opcode,
219
+ Instruction.deserialize.bind(EmitNullifier)
220
+ ],
221
+ [
222
+ L1ToL2MessageExists.opcode,
223
+ Instruction.deserialize.bind(L1ToL2MessageExists)
224
+ ],
225
+ // Accrued Substate
226
+ [
227
+ EmitUnencryptedLog.opcode,
228
+ Instruction.deserialize.bind(EmitUnencryptedLog)
229
+ ],
230
+ [
231
+ SendL2ToL1Message.opcode,
232
+ Instruction.deserialize.bind(SendL2ToL1Message)
233
+ ],
234
+ [
235
+ GetContractInstance.opcode,
236
+ Instruction.deserialize.bind(GetContractInstance)
237
+ ],
238
+ // Control Flow - Contract Calls
239
+ [
240
+ Call.opcode,
241
+ Instruction.deserialize.bind(Call)
242
+ ],
243
+ [
244
+ StaticCall.opcode,
245
+ Instruction.deserialize.bind(StaticCall)
246
+ ],
247
+ [
248
+ Return.opcode,
249
+ Instruction.deserialize.bind(Return)
250
+ ],
251
+ [
252
+ Opcode.REVERT_8,
253
+ Revert.as(Revert.wireFormat8).deserialize
254
+ ],
255
+ [
256
+ Opcode.REVERT_16,
257
+ Revert.as(Revert.wireFormat16).deserialize
258
+ ],
259
+ // Misc
260
+ [
261
+ DebugLog.opcode,
262
+ Instruction.deserialize.bind(DebugLog)
263
+ ],
264
+ // Gadgets
265
+ [
266
+ EcAdd.opcode,
267
+ Instruction.deserialize.bind(EcAdd)
268
+ ],
269
+ [
270
+ Poseidon2.opcode,
271
+ Instruction.deserialize.bind(Poseidon2)
272
+ ],
273
+ [
274
+ Sha256Compression.opcode,
275
+ Instruction.deserialize.bind(Sha256Compression)
276
+ ],
277
+ [
278
+ KeccakF1600.opcode,
279
+ Instruction.deserialize.bind(KeccakF1600)
280
+ ],
281
+ // Conversions
282
+ [
283
+ ToRadixBE.opcode,
284
+ Instruction.deserialize.bind(ToRadixBE)
285
+ ]
286
+ ]);
287
+ /**
288
+ * Serializes an array of instructions to bytecode.
289
+ */ export function encodeToBytecode(instructions) {
290
+ return Buffer.concat(instructions.map((i)=>i.serialize()));
291
+ }
292
+ // For testing only
293
+ export function decodeFromBytecode(bytecode, instructionSet = INSTRUCTION_SET) {
294
+ const instructions = [];
295
+ let pc = 0;
296
+ while(pc < bytecode.length){
297
+ const [instruction, bytesConsumed] = decodeInstructionFromBytecode(bytecode, pc, instructionSet);
298
+ instructions.push(instruction);
299
+ pc += bytesConsumed;
300
+ }
301
+ return instructions;
302
+ }
303
+ // Returns the instruction and the number of bytes consumed.
304
+ export function decodeInstructionFromBytecode(bytecode, pc, instructionSet = INSTRUCTION_SET) {
305
+ if (pc >= bytecode.length) {
306
+ throw new InvalidProgramCounterError(pc, bytecode.length);
307
+ }
308
+ try {
309
+ const cursor = new BufferCursor(bytecode, pc);
310
+ const startingPosition = cursor.position();
311
+ const opcode = cursor.bufferAtPosition().readUint8(); // peek.
312
+ if (opcode > MAX_OPCODE_VALUE) {
313
+ throw new InvalidOpcodeError(`Opcode ${opcode} (0x${opcode.toString(16)}) value is not in the range of valid opcodes.`);
314
+ }
315
+ const instructionDeserializerOrUndef = instructionSet.get(opcode);
316
+ if (instructionDeserializerOrUndef === undefined) {
317
+ throw new InvalidOpcodeError(`Opcode ${Opcode[opcode]} (0x${opcode.toString(16)}) is not implemented`);
318
+ }
319
+ const instructionDeserializer = instructionDeserializerOrUndef;
320
+ const instruction = instructionDeserializer(cursor);
321
+ return [
322
+ instruction,
323
+ cursor.position() - startingPosition
324
+ ];
325
+ } catch (error) {
326
+ if (error instanceof InvalidOpcodeError || error instanceof AvmExecutionError) {
327
+ throw error;
328
+ } else {
329
+ throw new AvmParsingError(`${error}`);
330
+ }
331
+ }
332
+ }
@@ -0,0 +1,105 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import { BufferCursor } from './buffer_cursor.js';
4
+ /**
5
+ * All AVM opcodes. (Keep in sync with cpp counterpart code avm_opcode.hpp and rs in opcodes.rs).
6
+ * Source: https://yp-aztec.netlify.app/docs/public-vm/instruction-set
7
+ */
8
+ export declare enum Opcode {
9
+ ADD_8 = 0,
10
+ ADD_16 = 1,
11
+ SUB_8 = 2,
12
+ SUB_16 = 3,
13
+ MUL_8 = 4,
14
+ MUL_16 = 5,
15
+ DIV_8 = 6,
16
+ DIV_16 = 7,
17
+ FDIV_8 = 8,
18
+ FDIV_16 = 9,
19
+ EQ_8 = 10,
20
+ EQ_16 = 11,
21
+ LT_8 = 12,
22
+ LT_16 = 13,
23
+ LTE_8 = 14,
24
+ LTE_16 = 15,
25
+ AND_8 = 16,
26
+ AND_16 = 17,
27
+ OR_8 = 18,
28
+ OR_16 = 19,
29
+ XOR_8 = 20,
30
+ XOR_16 = 21,
31
+ NOT_8 = 22,
32
+ NOT_16 = 23,
33
+ SHL_8 = 24,
34
+ SHL_16 = 25,
35
+ SHR_8 = 26,
36
+ SHR_16 = 27,
37
+ CAST_8 = 28,
38
+ CAST_16 = 29,
39
+ GETENVVAR_16 = 30,
40
+ CALLDATACOPY = 31,
41
+ SUCCESSCOPY = 32,
42
+ RETURNDATASIZE = 33,
43
+ RETURNDATACOPY = 34,
44
+ JUMP_32 = 35,
45
+ JUMPI_32 = 36,
46
+ INTERNALCALL = 37,
47
+ INTERNALRETURN = 38,
48
+ SET_8 = 39,
49
+ SET_16 = 40,
50
+ SET_32 = 41,
51
+ SET_64 = 42,
52
+ SET_128 = 43,
53
+ SET_FF = 44,
54
+ MOV_8 = 45,
55
+ MOV_16 = 46,
56
+ SLOAD = 47,
57
+ SSTORE = 48,
58
+ NOTEHASHEXISTS = 49,
59
+ EMITNOTEHASH = 50,
60
+ NULLIFIEREXISTS = 51,
61
+ EMITNULLIFIER = 52,
62
+ L1TOL2MSGEXISTS = 53,
63
+ GETCONTRACTINSTANCE = 54,
64
+ EMITUNENCRYPTEDLOG = 55,
65
+ SENDL2TOL1MSG = 56,
66
+ CALL = 57,
67
+ STATICCALL = 58,
68
+ RETURN = 59,
69
+ REVERT_8 = 60,
70
+ REVERT_16 = 61,
71
+ DEBUGLOG = 62,
72
+ POSEIDON2 = 63,
73
+ SHA256COMPRESSION = 64,
74
+ KECCAKF1600 = 65,
75
+ ECADD = 66,
76
+ TORADIXBE = 67
77
+ }
78
+ export declare const MAX_OPCODE_VALUE: number;
79
+ export declare enum OperandType {
80
+ UINT8 = 0,
81
+ UINT16 = 1,
82
+ UINT32 = 2,
83
+ UINT64 = 3,
84
+ UINT128 = 4,
85
+ FF = 5
86
+ }
87
+ /**
88
+ * Reads an array of operands from a buffer.
89
+ * @param cursor Buffer to read from. Might be longer than needed.
90
+ * @param operands Specification of the operand types.
91
+ * @returns An array as big as {@code operands}, with the converted TS values.
92
+ */
93
+ export declare function deserialize(cursor: BufferCursor | Buffer, operands: OperandType[]): (number | bigint)[];
94
+ /**
95
+ * Serializes a class using the specified operand types.
96
+ * More specifically, this serializes {@code [cls.constructor.opcode, ...Object.values(cls)]}.
97
+ * Observe in particular that:
98
+ * (1) the first operand type specified must correspond to the opcode;
99
+ * (2) the rest of the operand types must be specified in the order returned by {@code Object.values()}.
100
+ * @param operands Type specification for the values to be serialized.
101
+ * @param cls The class to be serialized.
102
+ * @returns
103
+ */
104
+ export declare function serializeAs(operands: OperandType[], opcode: Opcode, cls: any): Buffer;
105
+ //# sourceMappingURL=instruction_serialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instruction_serialization.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/serialization/instruction_serialization.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD;;;GAGG;AACH,oBAAY,MAAM;IAEhB,KAAK,IAAA;IACL,MAAM,IAAA;IACN,KAAK,IAAA;IACL,MAAM,IAAA;IACN,KAAK,IAAA;IACL,MAAM,IAAA;IACN,KAAK,IAAA;IACL,MAAM,IAAA;IACN,MAAM,IAAA;IACN,OAAO,IAAA;IACP,IAAI,KAAA;IACJ,KAAK,KAAA;IACL,IAAI,KAAA;IACJ,KAAK,KAAA;IACL,KAAK,KAAA;IACL,MAAM,KAAA;IACN,KAAK,KAAA;IACL,MAAM,KAAA;IACN,IAAI,KAAA;IACJ,KAAK,KAAA;IACL,KAAK,KAAA;IACL,MAAM,KAAA;IACN,KAAK,KAAA;IACL,MAAM,KAAA;IACN,KAAK,KAAA;IACL,MAAM,KAAA;IACN,KAAK,KAAA;IACL,MAAM,KAAA;IACN,MAAM,KAAA;IACN,OAAO,KAAA;IAEP,YAAY,KAAA;IACZ,YAAY,KAAA;IACZ,WAAW,KAAA;IACX,cAAc,KAAA;IACd,cAAc,KAAA;IAEd,OAAO,KAAA;IACP,QAAQ,KAAA;IACR,YAAY,KAAA;IACZ,cAAc,KAAA;IAEd,KAAK,KAAA;IACL,MAAM,KAAA;IACN,MAAM,KAAA;IACN,MAAM,KAAA;IACN,OAAO,KAAA;IACP,MAAM,KAAA;IACN,KAAK,KAAA;IACL,MAAM,KAAA;IAEN,KAAK,KAAA;IACL,MAAM,KAAA;IACN,cAAc,KAAA;IACd,YAAY,KAAA;IACZ,eAAe,KAAA;IACf,aAAa,KAAA;IACb,eAAe,KAAA;IACf,mBAAmB,KAAA;IACnB,kBAAkB,KAAA;IAClB,aAAa,KAAA;IAEb,IAAI,KAAA;IACJ,UAAU,KAAA;IACV,MAAM,KAAA;IACN,QAAQ,KAAA;IACR,SAAS,KAAA;IAET,QAAQ,KAAA;IAER,SAAS,KAAA;IACT,iBAAiB,KAAA;IACjB,WAAW,KAAA;IACX,KAAK,KAAA;IAEL,SAAS,KAAA;CACV;AAED,eAAO,MAAM,gBAAgB,QAI5B,CAAC;AAMF,oBAAY,WAAW;IACrB,KAAK,IAAA;IACL,MAAM,IAAA;IACN,MAAM,IAAA;IACN,MAAM,IAAA;IACN,OAAO,IAAA;IACP,EAAE,IAAA;CACH;AAmDD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAcvG;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAmBrF"}
@@ -0,0 +1,226 @@
1
+ import { strict as assert } from 'assert';
2
+ import { BufferCursor } from './buffer_cursor.js';
3
+ /**
4
+ * All AVM opcodes. (Keep in sync with cpp counterpart code avm_opcode.hpp and rs in opcodes.rs).
5
+ * Source: https://yp-aztec.netlify.app/docs/public-vm/instruction-set
6
+ */ export var Opcode = /*#__PURE__*/ function(Opcode) {
7
+ // Compute
8
+ Opcode[Opcode["ADD_8"] = 0] = "ADD_8";
9
+ Opcode[Opcode["ADD_16"] = 1] = "ADD_16";
10
+ Opcode[Opcode["SUB_8"] = 2] = "SUB_8";
11
+ Opcode[Opcode["SUB_16"] = 3] = "SUB_16";
12
+ Opcode[Opcode["MUL_8"] = 4] = "MUL_8";
13
+ Opcode[Opcode["MUL_16"] = 5] = "MUL_16";
14
+ Opcode[Opcode["DIV_8"] = 6] = "DIV_8";
15
+ Opcode[Opcode["DIV_16"] = 7] = "DIV_16";
16
+ Opcode[Opcode["FDIV_8"] = 8] = "FDIV_8";
17
+ Opcode[Opcode["FDIV_16"] = 9] = "FDIV_16";
18
+ Opcode[Opcode["EQ_8"] = 10] = "EQ_8";
19
+ Opcode[Opcode["EQ_16"] = 11] = "EQ_16";
20
+ Opcode[Opcode["LT_8"] = 12] = "LT_8";
21
+ Opcode[Opcode["LT_16"] = 13] = "LT_16";
22
+ Opcode[Opcode["LTE_8"] = 14] = "LTE_8";
23
+ Opcode[Opcode["LTE_16"] = 15] = "LTE_16";
24
+ Opcode[Opcode["AND_8"] = 16] = "AND_8";
25
+ Opcode[Opcode["AND_16"] = 17] = "AND_16";
26
+ Opcode[Opcode["OR_8"] = 18] = "OR_8";
27
+ Opcode[Opcode["OR_16"] = 19] = "OR_16";
28
+ Opcode[Opcode["XOR_8"] = 20] = "XOR_8";
29
+ Opcode[Opcode["XOR_16"] = 21] = "XOR_16";
30
+ Opcode[Opcode["NOT_8"] = 22] = "NOT_8";
31
+ Opcode[Opcode["NOT_16"] = 23] = "NOT_16";
32
+ Opcode[Opcode["SHL_8"] = 24] = "SHL_8";
33
+ Opcode[Opcode["SHL_16"] = 25] = "SHL_16";
34
+ Opcode[Opcode["SHR_8"] = 26] = "SHR_8";
35
+ Opcode[Opcode["SHR_16"] = 27] = "SHR_16";
36
+ Opcode[Opcode["CAST_8"] = 28] = "CAST_8";
37
+ Opcode[Opcode["CAST_16"] = 29] = "CAST_16";
38
+ // Execution environment
39
+ Opcode[Opcode["GETENVVAR_16"] = 30] = "GETENVVAR_16";
40
+ Opcode[Opcode["CALLDATACOPY"] = 31] = "CALLDATACOPY";
41
+ Opcode[Opcode["SUCCESSCOPY"] = 32] = "SUCCESSCOPY";
42
+ Opcode[Opcode["RETURNDATASIZE"] = 33] = "RETURNDATASIZE";
43
+ Opcode[Opcode["RETURNDATACOPY"] = 34] = "RETURNDATACOPY";
44
+ // Control flow
45
+ Opcode[Opcode["JUMP_32"] = 35] = "JUMP_32";
46
+ Opcode[Opcode["JUMPI_32"] = 36] = "JUMPI_32";
47
+ Opcode[Opcode["INTERNALCALL"] = 37] = "INTERNALCALL";
48
+ Opcode[Opcode["INTERNALRETURN"] = 38] = "INTERNALRETURN";
49
+ // Memory
50
+ Opcode[Opcode["SET_8"] = 39] = "SET_8";
51
+ Opcode[Opcode["SET_16"] = 40] = "SET_16";
52
+ Opcode[Opcode["SET_32"] = 41] = "SET_32";
53
+ Opcode[Opcode["SET_64"] = 42] = "SET_64";
54
+ Opcode[Opcode["SET_128"] = 43] = "SET_128";
55
+ Opcode[Opcode["SET_FF"] = 44] = "SET_FF";
56
+ Opcode[Opcode["MOV_8"] = 45] = "MOV_8";
57
+ Opcode[Opcode["MOV_16"] = 46] = "MOV_16";
58
+ // World state
59
+ Opcode[Opcode["SLOAD"] = 47] = "SLOAD";
60
+ Opcode[Opcode["SSTORE"] = 48] = "SSTORE";
61
+ Opcode[Opcode["NOTEHASHEXISTS"] = 49] = "NOTEHASHEXISTS";
62
+ Opcode[Opcode["EMITNOTEHASH"] = 50] = "EMITNOTEHASH";
63
+ Opcode[Opcode["NULLIFIEREXISTS"] = 51] = "NULLIFIEREXISTS";
64
+ Opcode[Opcode["EMITNULLIFIER"] = 52] = "EMITNULLIFIER";
65
+ Opcode[Opcode["L1TOL2MSGEXISTS"] = 53] = "L1TOL2MSGEXISTS";
66
+ Opcode[Opcode["GETCONTRACTINSTANCE"] = 54] = "GETCONTRACTINSTANCE";
67
+ Opcode[Opcode["EMITUNENCRYPTEDLOG"] = 55] = "EMITUNENCRYPTEDLOG";
68
+ Opcode[Opcode["SENDL2TOL1MSG"] = 56] = "SENDL2TOL1MSG";
69
+ // External calls
70
+ Opcode[Opcode["CALL"] = 57] = "CALL";
71
+ Opcode[Opcode["STATICCALL"] = 58] = "STATICCALL";
72
+ Opcode[Opcode["RETURN"] = 59] = "RETURN";
73
+ Opcode[Opcode["REVERT_8"] = 60] = "REVERT_8";
74
+ Opcode[Opcode["REVERT_16"] = 61] = "REVERT_16";
75
+ // Misc
76
+ Opcode[Opcode["DEBUGLOG"] = 62] = "DEBUGLOG";
77
+ // Gadgets
78
+ Opcode[Opcode["POSEIDON2"] = 63] = "POSEIDON2";
79
+ Opcode[Opcode["SHA256COMPRESSION"] = 64] = "SHA256COMPRESSION";
80
+ Opcode[Opcode["KECCAKF1600"] = 65] = "KECCAKF1600";
81
+ Opcode[Opcode["ECADD"] = 66] = "ECADD";
82
+ // Conversion
83
+ Opcode[Opcode["TORADIXBE"] = 67] = "TORADIXBE";
84
+ return Opcode;
85
+ }({});
86
+ export const MAX_OPCODE_VALUE = Math.max(...Object.values(Opcode).map((k)=>+k).filter((k)=>!isNaN(k)));
87
+ // Possible types for an instruction's operand in its wire format. (Keep in sync with CPP code.
88
+ // See vm/avm_trace/deserialization.cpp)
89
+ // Note that cpp code introduced an additional enum value TAG to express the instruction tag. In TS,
90
+ // this one is parsed as UINT8.
91
+ export var OperandType = /*#__PURE__*/ function(OperandType) {
92
+ OperandType[OperandType["UINT8"] = 0] = "UINT8";
93
+ OperandType[OperandType["UINT16"] = 1] = "UINT16";
94
+ OperandType[OperandType["UINT32"] = 2] = "UINT32";
95
+ OperandType[OperandType["UINT64"] = 3] = "UINT64";
96
+ OperandType[OperandType["UINT128"] = 4] = "UINT128";
97
+ OperandType[OperandType["FF"] = 5] = "FF";
98
+ return OperandType;
99
+ }({});
100
+ // Specifies how to read and write each operand type.
101
+ const OPERAND_SPEC = new Map([
102
+ [
103
+ 0,
104
+ [
105
+ 1,
106
+ Buffer.prototype.readUint8,
107
+ Buffer.prototype.writeUint8
108
+ ]
109
+ ],
110
+ [
111
+ 1,
112
+ [
113
+ 2,
114
+ Buffer.prototype.readUint16BE,
115
+ Buffer.prototype.writeUint16BE
116
+ ]
117
+ ],
118
+ [
119
+ 2,
120
+ [
121
+ 4,
122
+ Buffer.prototype.readUint32BE,
123
+ Buffer.prototype.writeUint32BE
124
+ ]
125
+ ],
126
+ [
127
+ 3,
128
+ [
129
+ 8,
130
+ Buffer.prototype.readBigInt64BE,
131
+ Buffer.prototype.writeBigInt64BE
132
+ ]
133
+ ],
134
+ [
135
+ 4,
136
+ [
137
+ 16,
138
+ readBigInt128BE,
139
+ writeBigInt128BE
140
+ ]
141
+ ],
142
+ [
143
+ 5,
144
+ [
145
+ 32,
146
+ readBigInt254BE,
147
+ writeBigInt254BE
148
+ ]
149
+ ]
150
+ ]);
151
+ function readBigInt254BE(offset) {
152
+ const totalBytes = 32;
153
+ let ret = 0n;
154
+ for(let i = 0; i < totalBytes; ++i){
155
+ ret <<= 8n;
156
+ ret |= BigInt(this.readUint8(i + offset));
157
+ }
158
+ return ret;
159
+ }
160
+ function writeBigInt254BE(value) {
161
+ const totalBytes = 32;
162
+ for(let offset = totalBytes - 1; offset >= 0; --offset){
163
+ this.writeUint8(Number(value & 0xffn), offset);
164
+ value >>= 8n;
165
+ }
166
+ }
167
+ function readBigInt128BE(offset) {
168
+ const totalBytes = 16;
169
+ let ret = 0n;
170
+ for(let i = 0; i < totalBytes; ++i){
171
+ ret <<= 8n;
172
+ ret |= BigInt(this.readUint8(i + offset));
173
+ }
174
+ return ret;
175
+ }
176
+ function writeBigInt128BE(value) {
177
+ const totalBytes = 16;
178
+ for(let offset = totalBytes - 1; offset >= 0; --offset){
179
+ this.writeUint8(Number(value & 0xffn), offset);
180
+ value >>= 8n;
181
+ }
182
+ }
183
+ /**
184
+ * Reads an array of operands from a buffer.
185
+ * @param cursor Buffer to read from. Might be longer than needed.
186
+ * @param operands Specification of the operand types.
187
+ * @returns An array as big as {@code operands}, with the converted TS values.
188
+ */ export function deserialize(cursor, operands) {
189
+ const argValues = [];
190
+ if (Buffer.isBuffer(cursor)) {
191
+ cursor = new BufferCursor(cursor);
192
+ }
193
+ for (const op of operands){
194
+ const opType = op;
195
+ const [sizeBytes, reader, _writer] = OPERAND_SPEC.get(opType);
196
+ argValues.push(reader.call(cursor.buffer(), cursor.position()));
197
+ cursor.advance(sizeBytes);
198
+ }
199
+ return argValues;
200
+ }
201
+ /**
202
+ * Serializes a class using the specified operand types.
203
+ * More specifically, this serializes {@code [cls.constructor.opcode, ...Object.values(cls)]}.
204
+ * Observe in particular that:
205
+ * (1) the first operand type specified must correspond to the opcode;
206
+ * (2) the rest of the operand types must be specified in the order returned by {@code Object.values()}.
207
+ * @param operands Type specification for the values to be serialized.
208
+ * @param cls The class to be serialized.
209
+ * @returns
210
+ */ export function serializeAs(operands, opcode, cls) {
211
+ const chunks = [];
212
+ const rawClassValues = [
213
+ opcode,
214
+ ...Object.values(cls)
215
+ ];
216
+ assert(rawClassValues.length === operands.length, `Got ${rawClassValues.length} values but only ${operands.length} serialization operands are specified!`);
217
+ const classValues = rawClassValues;
218
+ for(let i = 0; i < operands.length; i++){
219
+ const opType = operands[i];
220
+ const [sizeBytes, _reader, writer] = OPERAND_SPEC.get(opType);
221
+ const buf = Buffer.alloc(sizeBytes);
222
+ writer.call(buf, classValues[i]);
223
+ chunks.push(buf);
224
+ }
225
+ return Buffer.concat(chunks);
226
+ }
@@ -0,0 +1,18 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import { Fr } from '@aztec/foundation/fields';
4
+ import { type ContractClassPublic, type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
5
+ import type { WorldStateDB } from '../../public/public_db_sources.js';
6
+ import type { PublicSideEffectTraceInterface } from '../side_effect_trace_interface.js';
7
+ export declare function mockGetBytecode(worldStateDB: WorldStateDB, bytecode: Buffer): Promise<void>;
8
+ export declare function mockTraceFork(trace: PublicSideEffectTraceInterface, nestedTrace?: PublicSideEffectTraceInterface): void;
9
+ export declare function mockStorageRead(worldStateDB: WorldStateDB, value: Fr): void;
10
+ export declare function mockNoteHashCount(mockedTrace: PublicSideEffectTraceInterface, count: number): void;
11
+ export declare function mockStorageReadWithMap(worldStateDB: WorldStateDB, mockedStorage: Map<bigint, Fr>): void;
12
+ export declare function mockGetBytecodeCommitment(worldStateDB: WorldStateDB, commitment: Fr): void;
13
+ export declare function mockNoteHashExists(worldStateDB: WorldStateDB, _leafIndex: Fr, value?: Fr): void;
14
+ export declare function mockGetNullifierIndex(worldStateDB: WorldStateDB, leafIndex: Fr, _ignoredValue?: Fr): void;
15
+ export declare function mockL1ToL2MessageExists(worldStateDB: WorldStateDB, leafIndex: Fr, value: Fr, valueAtOtherIndices?: Fr): void;
16
+ export declare function mockGetContractInstance(worldStateDB: WorldStateDB, contractInstance: ContractInstanceWithAddress): void;
17
+ export declare function mockGetContractClass(worldStateDB: WorldStateDB, contractClass: ContractClassPublic): void;
18
+ //# sourceMappingURL=test_utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test_utils.d.ts","sourceRoot":"","sources":["../../../src/public/avm/test_utils.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAEjC,MAAM,wBAAwB,CAAC;AAKhC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAExF,wBAAsB,eAAe,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAGjF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,8BAA8B,EAAE,WAAW,CAAC,EAAE,8BAA8B,QAIhH;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,QAEpE;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,8BAA8B,EAAE,KAAK,EAAE,MAAM,QAE3F;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,QAIhG;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,QAEnF;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QASxF;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,CAAC,EAAE,EAAE,QAElG;AAED,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,EAAE,EACb,KAAK,EAAE,EAAE,EACT,mBAAmB,CAAC,EAAE,EAAE,QAWzB;AAED,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,2BAA2B,QAEhH;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,mBAAmB,QAElG"}