@aztec/simulator 0.0.0-test.1 → 0.0.1-commit.5daedc8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (492) hide show
  1. package/README.md +6 -0
  2. package/dest/client.d.ts +6 -4
  3. package/dest/client.d.ts.map +1 -1
  4. package/dest/client.js +4 -2
  5. package/dest/common/errors.d.ts +5 -14
  6. package/dest/common/errors.d.ts.map +1 -1
  7. package/dest/common/errors.js +51 -32
  8. package/dest/common/index.d.ts +1 -2
  9. package/dest/common/index.d.ts.map +1 -1
  10. package/dest/common/index.js +0 -1
  11. package/dest/common/stats/index.d.ts +1 -1
  12. package/dest/common/stats/stats.d.ts +1 -1
  13. package/dest/private/acvm/acvm.d.ts +12 -6
  14. package/dest/private/acvm/acvm.d.ts.map +1 -1
  15. package/dest/private/acvm/acvm.js +10 -16
  16. package/dest/private/acvm/acvm_types.d.ts +2 -2
  17. package/dest/private/acvm/acvm_types.d.ts.map +1 -1
  18. package/dest/private/acvm/deserialize.d.ts +18 -19
  19. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  20. package/dest/private/acvm/deserialize.js +31 -23
  21. package/dest/private/acvm/index.d.ts +1 -2
  22. package/dest/private/acvm/index.d.ts.map +1 -1
  23. package/dest/private/acvm/index.js +0 -1
  24. package/dest/private/acvm/serialize.d.ts +20 -3
  25. package/dest/private/acvm/serialize.d.ts.map +1 -1
  26. package/dest/private/acvm/serialize.js +53 -0
  27. package/dest/private/acvm_native.d.ts +39 -0
  28. package/dest/private/acvm_native.d.ts.map +1 -0
  29. package/dest/private/{providers/acvm_native.js → acvm_native.js} +26 -20
  30. package/dest/private/acvm_wasm.d.ts +15 -0
  31. package/dest/private/acvm_wasm.d.ts.map +1 -0
  32. package/dest/private/{providers/acvm_wasm.js → acvm_wasm.js} +22 -19
  33. package/dest/private/acvm_wasm_with_blobs.d.ts +20 -0
  34. package/dest/private/acvm_wasm_with_blobs.d.ts.map +1 -0
  35. package/dest/private/acvm_wasm_with_blobs.js +35 -0
  36. package/dest/private/circuit_recording/circuit_recorder.d.ts +108 -0
  37. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -0
  38. package/dest/private/circuit_recording/circuit_recorder.js +209 -0
  39. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +31 -0
  40. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -0
  41. package/dest/private/circuit_recording/file_circuit_recorder.js +135 -0
  42. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +5 -0
  43. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -0
  44. package/dest/private/circuit_recording/memory_circuit_recorder.js +9 -0
  45. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +21 -0
  46. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -0
  47. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +44 -0
  48. package/dest/private/circuit_simulator.d.ts +35 -0
  49. package/dest/private/circuit_simulator.d.ts.map +1 -0
  50. package/dest/private/circuit_simulator.js +43 -0
  51. package/dest/private/factory.d.ts +12 -0
  52. package/dest/private/factory.d.ts.map +1 -0
  53. package/dest/private/{providers/factory.js → factory.js} +2 -2
  54. package/dest/public/avm/avm_context.d.ts +6 -6
  55. package/dest/public/avm/avm_context.d.ts.map +1 -1
  56. package/dest/public/avm/avm_contract_call_result.d.ts +5 -3
  57. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  58. package/dest/public/avm/avm_contract_call_result.js +11 -7
  59. package/dest/public/avm/avm_execution_environment.d.ts +4 -2
  60. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  61. package/dest/public/avm/avm_execution_environment.js +4 -2
  62. package/dest/public/avm/avm_gas.d.ts +5 -21
  63. package/dest/public/avm/avm_gas.d.ts.map +1 -1
  64. package/dest/public/avm/avm_gas.js +27 -35
  65. package/dest/public/avm/avm_machine_state.d.ts +3 -1
  66. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  67. package/dest/public/avm/avm_machine_state.js +2 -0
  68. package/dest/public/avm/avm_memory_types.d.ts +99 -88
  69. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  70. package/dest/public/avm/avm_memory_types.js +17 -6
  71. package/dest/public/avm/avm_simulator.d.ts +6 -6
  72. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  73. package/dest/public/avm/avm_simulator.js +23 -35
  74. package/dest/public/avm/avm_simulator_interface.d.ts +9 -0
  75. package/dest/public/avm/avm_simulator_interface.d.ts.map +1 -0
  76. package/dest/public/avm/avm_simulator_interface.js +3 -0
  77. package/dest/public/avm/errors.d.ts +7 -31
  78. package/dest/public/avm/errors.d.ts.map +1 -1
  79. package/dest/public/avm/errors.js +7 -57
  80. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +6 -5
  81. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  82. package/dest/public/avm/fixtures/avm_simulation_tester.js +22 -15
  83. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +7 -5
  84. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  85. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +37 -14
  86. package/dest/public/avm/fixtures/initializers.d.ts +42 -0
  87. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -0
  88. package/dest/public/avm/fixtures/initializers.js +44 -0
  89. package/dest/public/avm/fixtures/utils.d.ts +38 -0
  90. package/dest/public/avm/fixtures/utils.d.ts.map +1 -0
  91. package/dest/public/avm/fixtures/utils.js +95 -0
  92. package/dest/public/avm/index.d.ts +1 -3
  93. package/dest/public/avm/index.d.ts.map +1 -1
  94. package/dest/public/avm/index.js +0 -2
  95. package/dest/public/avm/opcodes/accrued_substate.d.ts +3 -3
  96. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  97. package/dest/public/avm/opcodes/accrued_substate.js +28 -25
  98. package/dest/public/avm/opcodes/addressing_mode.d.ts +12 -8
  99. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -1
  100. package/dest/public/avm/opcodes/addressing_mode.js +46 -26
  101. package/dest/public/avm/opcodes/arithmetic.d.ts +17 -7
  102. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  103. package/dest/public/avm/opcodes/arithmetic.js +16 -2
  104. package/dest/public/avm/opcodes/bitwise.d.ts +10 -18
  105. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  106. package/dest/public/avm/opcodes/bitwise.js +19 -26
  107. package/dest/public/avm/opcodes/comparators.d.ts +4 -4
  108. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  109. package/dest/public/avm/opcodes/comparators.js +3 -3
  110. package/dest/public/avm/opcodes/contract.d.ts +2 -3
  111. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  112. package/dest/public/avm/opcodes/contract.js +9 -10
  113. package/dest/public/avm/opcodes/control_flow.d.ts +1 -1
  114. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  115. package/dest/public/avm/opcodes/control_flow.js +10 -8
  116. package/dest/public/avm/opcodes/conversion.d.ts +2 -1
  117. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  118. package/dest/public/avm/opcodes/conversion.js +267 -3
  119. package/dest/public/avm/opcodes/ec_add.d.ts +2 -2
  120. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  121. package/dest/public/avm/opcodes/ec_add.js +6 -6
  122. package/dest/public/avm/opcodes/environment_getters.d.ts +3 -3
  123. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  124. package/dest/public/avm/opcodes/environment_getters.js +17 -19
  125. package/dest/public/avm/opcodes/external_calls.d.ts +9 -8
  126. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  127. package/dest/public/avm/opcodes/external_calls.js +39 -34
  128. package/dest/public/avm/opcodes/hashing.d.ts +2 -2
  129. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  130. package/dest/public/avm/opcodes/hashing.js +6 -6
  131. package/dest/public/avm/opcodes/index.d.ts +1 -1
  132. package/dest/public/avm/opcodes/instruction.d.ts +15 -11
  133. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -1
  134. package/dest/public/avm/opcodes/instruction.js +23 -19
  135. package/dest/public/avm/opcodes/instruction_impl.d.ts +1 -1
  136. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  137. package/dest/public/avm/opcodes/memory.d.ts +6 -6
  138. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  139. package/dest/public/avm/opcodes/memory.js +37 -33
  140. package/dest/public/avm/opcodes/misc.d.ts +3 -2
  141. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  142. package/dest/public/avm/opcodes/misc.js +41 -16
  143. package/dest/public/avm/opcodes/storage.d.ts +3 -3
  144. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  145. package/dest/public/avm/opcodes/storage.js +7 -5
  146. package/dest/public/avm/revert_reason.d.ts +18 -0
  147. package/dest/public/avm/revert_reason.d.ts.map +1 -0
  148. package/dest/public/avm/revert_reason.js +38 -0
  149. package/dest/public/avm/serialization/buffer_cursor.d.ts +1 -3
  150. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -1
  151. package/dest/public/avm/serialization/bytecode_serialization.d.ts +3 -7
  152. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  153. package/dest/public/avm/serialization/bytecode_serialization.js +70 -69
  154. package/dest/public/avm/serialization/instruction_serialization.d.ts +14 -5
  155. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  156. package/dest/public/avm/serialization/instruction_serialization.js +70 -35
  157. package/dest/public/avm/test_utils.d.ts +11 -14
  158. package/dest/public/avm/test_utils.d.ts.map +1 -1
  159. package/dest/public/avm/test_utils.js +16 -24
  160. package/dest/public/contracts_db_checkpoint.d.ts +16 -0
  161. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -0
  162. package/dest/public/contracts_db_checkpoint.js +30 -0
  163. package/dest/public/db_interfaces.d.ts +68 -0
  164. package/dest/public/db_interfaces.d.ts.map +1 -0
  165. package/dest/public/db_interfaces.js +3 -0
  166. package/dest/public/debug_fn_name.d.ts +5 -0
  167. package/dest/public/debug_fn_name.d.ts.map +1 -0
  168. package/dest/public/debug_fn_name.js +9 -0
  169. package/dest/public/executor_metrics.d.ts +12 -4
  170. package/dest/public/executor_metrics.d.ts.map +1 -1
  171. package/dest/public/executor_metrics.js +37 -6
  172. package/dest/public/executor_metrics_interface.d.ts +10 -0
  173. package/dest/public/executor_metrics_interface.d.ts.map +1 -0
  174. package/dest/public/executor_metrics_interface.js +1 -0
  175. package/dest/public/fixtures/amm_test.d.ts +10 -0
  176. package/dest/public/fixtures/amm_test.d.ts.map +1 -0
  177. package/dest/public/fixtures/amm_test.js +213 -0
  178. package/dest/public/fixtures/bulk_test.d.ts +6 -0
  179. package/dest/public/fixtures/bulk_test.d.ts.map +1 -0
  180. package/dest/public/fixtures/bulk_test.js +326 -0
  181. package/dest/public/fixtures/custom_bytecode_tester.d.ts +12 -0
  182. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -0
  183. package/dest/public/fixtures/custom_bytecode_tester.js +29 -0
  184. package/dest/public/fixtures/custom_bytecode_tests.d.ts +9 -0
  185. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -0
  186. package/dest/public/fixtures/custom_bytecode_tests.js +109 -0
  187. package/dest/public/fixtures/index.d.ts +8 -1
  188. package/dest/public/fixtures/index.d.ts.map +1 -1
  189. package/dest/public/fixtures/index.js +7 -0
  190. package/dest/public/fixtures/minimal_public_tx.d.ts +9 -0
  191. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -0
  192. package/dest/public/fixtures/minimal_public_tx.js +29 -0
  193. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +35 -14
  194. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  195. package/dest/public/fixtures/public_tx_simulation_tester.js +100 -71
  196. package/dest/public/fixtures/simple_contract_data_source.d.ts +35 -0
  197. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -0
  198. package/dest/public/{avm/fixtures → fixtures}/simple_contract_data_source.js +31 -10
  199. package/dest/public/fixtures/token_test.d.ts +8 -0
  200. package/dest/public/fixtures/token_test.d.ts.map +1 -0
  201. package/dest/public/fixtures/token_test.js +94 -0
  202. package/dest/public/fixtures/utils.d.ts +17 -4
  203. package/dest/public/fixtures/utils.d.ts.map +1 -1
  204. package/dest/public/fixtures/utils.js +100 -58
  205. package/dest/public/hinting_db_sources.d.ts +78 -0
  206. package/dest/public/hinting_db_sources.d.ts.map +1 -0
  207. package/dest/public/hinting_db_sources.js +350 -0
  208. package/dest/public/index.d.ts +6 -9
  209. package/dest/public/index.d.ts.map +1 -1
  210. package/dest/public/index.js +4 -7
  211. package/dest/public/public_db_sources.d.ts +51 -101
  212. package/dest/public/public_db_sources.d.ts.map +1 -1
  213. package/dest/public/public_db_sources.js +219 -192
  214. package/dest/public/public_errors.d.ts +12 -0
  215. package/dest/public/public_errors.d.ts.map +1 -0
  216. package/dest/public/public_errors.js +13 -0
  217. package/dest/public/public_processor/guarded_merkle_tree.d.ts +49 -0
  218. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -0
  219. package/dest/public/public_processor/guarded_merkle_tree.js +108 -0
  220. package/dest/public/public_processor/public_processor.d.ts +25 -37
  221. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  222. package/dest/public/public_processor/public_processor.js +154 -111
  223. package/dest/public/public_processor/public_processor_metrics.d.ts +3 -3
  224. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  225. package/dest/public/public_processor/public_processor_metrics.js +1 -1
  226. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +30 -0
  227. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -0
  228. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +133 -0
  229. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +66 -0
  230. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -0
  231. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +210 -0
  232. package/dest/public/public_tx_simulator/index.d.ts +5 -0
  233. package/dest/public/public_tx_simulator/index.d.ts.map +1 -0
  234. package/dest/public/public_tx_simulator/index.js +2 -0
  235. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +31 -0
  236. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -0
  237. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +51 -0
  238. package/dest/public/public_tx_simulator/public_tx_context.d.ts +23 -30
  239. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  240. package/dest/public/public_tx_simulator/public_tx_context.js +71 -91
  241. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +36 -58
  242. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  243. package/dest/public/public_tx_simulator/public_tx_simulator.js +208 -206
  244. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +9 -0
  245. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -0
  246. package/dest/public/public_tx_simulator/public_tx_simulator_interface.js +1 -0
  247. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +21 -0
  248. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -0
  249. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +39 -0
  250. package/dest/public/side_effect_errors.d.ts +42 -2
  251. package/dest/public/side_effect_errors.d.ts.map +1 -1
  252. package/dest/public/side_effect_errors.js +70 -1
  253. package/dest/public/side_effect_trace.d.ts +21 -67
  254. package/dest/public/side_effect_trace.d.ts.map +1 -1
  255. package/dest/public/side_effect_trace.js +71 -121
  256. package/dest/public/side_effect_trace_interface.d.ts +12 -24
  257. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  258. package/dest/public/state_manager/index.d.ts +2 -0
  259. package/dest/public/state_manager/index.d.ts.map +1 -0
  260. package/dest/public/state_manager/index.js +1 -0
  261. package/dest/public/{avm/journal → state_manager}/nullifiers.d.ts +3 -6
  262. package/dest/public/state_manager/nullifiers.d.ts.map +1 -0
  263. package/dest/public/{avm/journal → state_manager}/nullifiers.js +3 -8
  264. package/dest/public/{avm/journal → state_manager}/public_storage.d.ts +3 -3
  265. package/dest/public/state_manager/public_storage.d.ts.map +1 -0
  266. package/dest/public/state_manager/state_manager.d.ts +159 -0
  267. package/dest/public/state_manager/state_manager.d.ts.map +1 -0
  268. package/dest/public/state_manager/state_manager.js +392 -0
  269. package/dest/public/test_executor_metrics.d.ts +55 -0
  270. package/dest/public/test_executor_metrics.d.ts.map +1 -0
  271. package/dest/public/test_executor_metrics.js +307 -0
  272. package/dest/public/unique_class_ids.d.ts +1 -1
  273. package/dest/public/unique_class_ids.d.ts.map +1 -1
  274. package/dest/public/utils.d.ts +3 -5
  275. package/dest/public/utils.d.ts.map +1 -1
  276. package/dest/public/utils.js +4 -21
  277. package/dest/server.d.ts +7 -4
  278. package/dest/server.d.ts.map +1 -1
  279. package/dest/server.js +5 -2
  280. package/dest/testing.d.ts +2 -0
  281. package/dest/testing.d.ts.map +1 -0
  282. package/dest/testing.js +1 -0
  283. package/package.json +39 -33
  284. package/src/client.ts +5 -3
  285. package/src/common/errors.ts +79 -44
  286. package/src/common/index.ts +0 -1
  287. package/src/private/acvm/acvm.ts +17 -32
  288. package/src/private/acvm/acvm_types.ts +1 -1
  289. package/src/private/acvm/deserialize.ts +35 -29
  290. package/src/private/acvm/index.ts +0 -1
  291. package/src/private/acvm/serialize.ts +63 -0
  292. package/src/private/{providers/acvm_native.ts → acvm_native.ts} +47 -24
  293. package/src/private/acvm_wasm.ts +72 -0
  294. package/src/private/acvm_wasm_with_blobs.ts +54 -0
  295. package/src/private/circuit_recording/circuit_recorder.ts +260 -0
  296. package/src/private/circuit_recording/file_circuit_recorder.ts +158 -0
  297. package/src/private/circuit_recording/memory_circuit_recorder.ts +11 -0
  298. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +91 -0
  299. package/src/private/circuit_simulator.ts +90 -0
  300. package/src/private/{providers/factory.ts → factory.ts} +6 -6
  301. package/src/public/avm/avm_context.ts +4 -4
  302. package/src/public/avm/avm_contract_call_result.ts +17 -5
  303. package/src/public/avm/avm_execution_environment.ts +8 -1
  304. package/src/public/avm/avm_gas.ts +23 -35
  305. package/src/public/avm/avm_machine_state.ts +5 -0
  306. package/src/public/avm/avm_memory_types.ts +19 -6
  307. package/src/public/avm/avm_simulator.ts +43 -54
  308. package/src/public/avm/avm_simulator_interface.ts +8 -0
  309. package/src/public/avm/errors.ts +8 -77
  310. package/src/public/avm/fixtures/avm_simulation_tester.ts +32 -21
  311. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +45 -12
  312. package/src/public/avm/fixtures/initializers.ts +102 -0
  313. package/src/public/avm/fixtures/utils.ts +150 -0
  314. package/src/public/avm/index.ts +0 -2
  315. package/src/public/avm/opcodes/accrued_substate.ts +64 -29
  316. package/src/public/avm/opcodes/addressing_mode.ts +56 -32
  317. package/src/public/avm/opcodes/arithmetic.ts +24 -2
  318. package/src/public/avm/opcodes/bitwise.ts +33 -29
  319. package/src/public/avm/opcodes/comparators.ts +6 -3
  320. package/src/public/avm/opcodes/contract.ts +10 -7
  321. package/src/public/avm/opcodes/control_flow.ts +19 -10
  322. package/src/public/avm/opcodes/conversion.ts +27 -3
  323. package/src/public/avm/opcodes/ec_add.ts +9 -6
  324. package/src/public/avm/opcodes/environment_getters.ts +27 -22
  325. package/src/public/avm/opcodes/external_calls.ts +61 -29
  326. package/src/public/avm/opcodes/hashing.ts +28 -8
  327. package/src/public/avm/opcodes/instruction.ts +31 -21
  328. package/src/public/avm/opcodes/memory.ts +71 -32
  329. package/src/public/avm/opcodes/misc.ts +60 -18
  330. package/src/public/avm/opcodes/storage.ts +22 -6
  331. package/src/public/avm/revert_reason.ts +55 -0
  332. package/src/public/avm/serialization/buffer_cursor.ts +4 -1
  333. package/src/public/avm/serialization/bytecode_serialization.ts +72 -74
  334. package/src/public/avm/serialization/instruction_serialization.ts +75 -34
  335. package/src/public/avm/test_utils.ts +24 -41
  336. package/src/public/contracts_db_checkpoint.ts +41 -0
  337. package/src/public/db_interfaces.ts +76 -0
  338. package/src/{common → public}/debug_fn_name.ts +7 -7
  339. package/src/public/executor_metrics.ts +56 -6
  340. package/src/public/executor_metrics_interface.ts +15 -0
  341. package/src/public/fixtures/amm_test.ts +331 -0
  342. package/src/public/fixtures/bulk_test.ts +169 -0
  343. package/src/public/fixtures/custom_bytecode_tester.ts +49 -0
  344. package/src/public/fixtures/custom_bytecode_tests.ts +135 -0
  345. package/src/public/fixtures/index.ts +7 -0
  346. package/src/public/fixtures/minimal_public_tx.ts +35 -0
  347. package/src/public/fixtures/public_tx_simulation_tester.ts +166 -113
  348. package/src/public/{avm/fixtures → fixtures}/simple_contract_data_source.ts +36 -18
  349. package/src/public/fixtures/token_test.ts +139 -0
  350. package/src/public/fixtures/utils.ts +141 -68
  351. package/src/public/hinting_db_sources.ts +602 -0
  352. package/src/public/index.ts +5 -8
  353. package/src/public/public_db_sources.ts +278 -258
  354. package/src/public/public_errors.ts +14 -0
  355. package/src/public/public_processor/guarded_merkle_tree.ts +153 -0
  356. package/src/public/public_processor/public_processor.ts +212 -164
  357. package/src/public/public_processor/public_processor_metrics.ts +2 -2
  358. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +162 -0
  359. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +306 -0
  360. package/src/public/public_tx_simulator/index.ts +4 -0
  361. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +105 -0
  362. package/src/public/public_tx_simulator/public_tx_context.ts +167 -194
  363. package/src/public/public_tx_simulator/public_tx_simulator.ts +292 -265
  364. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +10 -0
  365. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +63 -0
  366. package/src/public/side_effect_errors.ts +91 -1
  367. package/src/public/side_effect_trace.ts +94 -320
  368. package/src/public/side_effect_trace_interface.ts +10 -58
  369. package/src/public/state_manager/index.ts +1 -0
  370. package/src/public/{avm/journal → state_manager}/nullifiers.ts +5 -11
  371. package/src/public/{avm/journal → state_manager}/public_storage.ts +2 -2
  372. package/src/public/state_manager/state_manager.ts +553 -0
  373. package/src/public/test_executor_metrics.ts +397 -0
  374. package/src/public/utils.ts +5 -21
  375. package/src/server.ts +6 -3
  376. package/src/testing.ts +1 -0
  377. package/dest/common/db_interfaces.d.ts +0 -80
  378. package/dest/common/db_interfaces.d.ts.map +0 -1
  379. package/dest/common/db_interfaces.js +0 -1
  380. package/dest/common/debug_fn_name.d.ts +0 -5
  381. package/dest/common/debug_fn_name.d.ts.map +0 -1
  382. package/dest/common/debug_fn_name.js +0 -6
  383. package/dest/common/message_load_oracle_inputs.d.ts +0 -15
  384. package/dest/common/message_load_oracle_inputs.d.ts.map +0 -1
  385. package/dest/common/message_load_oracle_inputs.js +0 -15
  386. package/dest/private/acvm/oracle/index.d.ts +0 -14
  387. package/dest/private/acvm/oracle/index.d.ts.map +0 -1
  388. package/dest/private/acvm/oracle/index.js +0 -2
  389. package/dest/private/acvm/oracle/oracle.d.ts +0 -49
  390. package/dest/private/acvm/oracle/oracle.d.ts.map +0 -1
  391. package/dest/private/acvm/oracle/oracle.js +0 -263
  392. package/dest/private/acvm/oracle/typed_oracle.d.ts +0 -83
  393. package/dest/private/acvm/oracle/typed_oracle.d.ts.map +0 -1
  394. package/dest/private/acvm/oracle/typed_oracle.js +0 -132
  395. package/dest/private/execution_data_provider.d.ts +0 -261
  396. package/dest/private/execution_data_provider.d.ts.map +0 -1
  397. package/dest/private/execution_data_provider.js +0 -14
  398. package/dest/private/execution_note_cache.d.ts +0 -93
  399. package/dest/private/execution_note_cache.d.ts.map +0 -1
  400. package/dest/private/execution_note_cache.js +0 -180
  401. package/dest/private/hashed_values_cache.d.ts +0 -28
  402. package/dest/private/hashed_values_cache.d.ts.map +0 -1
  403. package/dest/private/hashed_values_cache.js +0 -46
  404. package/dest/private/index.d.ts +0 -13
  405. package/dest/private/index.d.ts.map +0 -1
  406. package/dest/private/index.js +0 -12
  407. package/dest/private/pick_notes.d.ts +0 -85
  408. package/dest/private/pick_notes.d.ts.map +0 -1
  409. package/dest/private/pick_notes.js +0 -51
  410. package/dest/private/private_execution.d.ts +0 -25
  411. package/dest/private/private_execution.d.ts.map +0 -1
  412. package/dest/private/private_execution.js +0 -92
  413. package/dest/private/private_execution_oracle.d.ts +0 -215
  414. package/dest/private/private_execution_oracle.d.ts.map +0 -1
  415. package/dest/private/private_execution_oracle.js +0 -382
  416. package/dest/private/providers/acvm_native.d.ts +0 -40
  417. package/dest/private/providers/acvm_native.d.ts.map +0 -1
  418. package/dest/private/providers/acvm_wasm.d.ts +0 -15
  419. package/dest/private/providers/acvm_wasm.d.ts.map +0 -1
  420. package/dest/private/providers/acvm_wasm_with_blobs.d.ts +0 -19
  421. package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
  422. package/dest/private/providers/acvm_wasm_with_blobs.js +0 -32
  423. package/dest/private/providers/factory.d.ts +0 -12
  424. package/dest/private/providers/factory.d.ts.map +0 -1
  425. package/dest/private/providers/simulation_provider.d.ts +0 -19
  426. package/dest/private/providers/simulation_provider.d.ts.map +0 -1
  427. package/dest/private/providers/simulation_provider.js +0 -24
  428. package/dest/private/simulator.d.ts +0 -34
  429. package/dest/private/simulator.d.ts.map +0 -1
  430. package/dest/private/simulator.js +0 -76
  431. package/dest/private/unconstrained_execution.d.ts +0 -10
  432. package/dest/private/unconstrained_execution.d.ts.map +0 -1
  433. package/dest/private/unconstrained_execution.js +0 -27
  434. package/dest/private/unconstrained_execution_oracle.d.ts +0 -161
  435. package/dest/private/unconstrained_execution_oracle.d.ts.map +0 -1
  436. package/dest/private/unconstrained_execution_oracle.js +0 -258
  437. package/dest/public/avm/bytecode_utils.d.ts +0 -5
  438. package/dest/public/avm/bytecode_utils.d.ts.map +0 -1
  439. package/dest/public/avm/bytecode_utils.js +0 -17
  440. package/dest/public/avm/fixtures/index.d.ts +0 -84
  441. package/dest/public/avm/fixtures/index.d.ts.map +0 -1
  442. package/dest/public/avm/fixtures/index.js +0 -175
  443. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts +0 -35
  444. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
  445. package/dest/public/avm/journal/index.d.ts +0 -2
  446. package/dest/public/avm/journal/index.d.ts.map +0 -1
  447. package/dest/public/avm/journal/index.js +0 -1
  448. package/dest/public/avm/journal/journal.d.ts +0 -209
  449. package/dest/public/avm/journal/journal.d.ts.map +0 -1
  450. package/dest/public/avm/journal/journal.js +0 -486
  451. package/dest/public/avm/journal/nullifiers.d.ts.map +0 -1
  452. package/dest/public/avm/journal/public_storage.d.ts.map +0 -1
  453. package/dest/public/bytecode_errors.d.ts +0 -4
  454. package/dest/public/bytecode_errors.d.ts.map +0 -1
  455. package/dest/public/bytecode_errors.js +0 -6
  456. package/dest/public/execution.d.ts +0 -108
  457. package/dest/public/execution.d.ts.map +0 -1
  458. package/dest/public/execution.js +0 -9
  459. package/dest/public/tx_contract_cache.d.ts +0 -41
  460. package/dest/public/tx_contract_cache.d.ts.map +0 -1
  461. package/dest/public/tx_contract_cache.js +0 -49
  462. package/dest/test/utils.d.ts +0 -13
  463. package/dest/test/utils.d.ts.map +0 -1
  464. package/dest/test/utils.js +0 -22
  465. package/src/common/db_interfaces.ts +0 -94
  466. package/src/common/message_load_oracle_inputs.ts +0 -15
  467. package/src/private/acvm/oracle/index.ts +0 -16
  468. package/src/private/acvm/oracle/oracle.ts +0 -455
  469. package/src/private/acvm/oracle/typed_oracle.ts +0 -259
  470. package/src/private/execution_data_provider.ts +0 -323
  471. package/src/private/execution_note_cache.ts +0 -217
  472. package/src/private/hashed_values_cache.ts +0 -55
  473. package/src/private/index.ts +0 -16
  474. package/src/private/pick_notes.ts +0 -141
  475. package/src/private/private_execution.ts +0 -151
  476. package/src/private/private_execution_oracle.ts +0 -614
  477. package/src/private/providers/acvm_wasm.ts +0 -63
  478. package/src/private/providers/acvm_wasm_with_blobs.ts +0 -50
  479. package/src/private/providers/simulation_provider.ts +0 -45
  480. package/src/private/simulator.ts +0 -147
  481. package/src/private/unconstrained_execution.ts +0 -50
  482. package/src/private/unconstrained_execution_oracle.ts +0 -373
  483. package/src/public/avm/bytecode_utils.ts +0 -17
  484. package/src/public/avm/fixtures/index.ts +0 -296
  485. package/src/public/avm/journal/index.ts +0 -1
  486. package/src/public/avm/journal/journal.ts +0 -742
  487. package/src/public/avm/opcodes/.eslintrc.cjs +0 -8
  488. package/src/public/bytecode_errors.ts +0 -6
  489. package/src/public/execution.ts +0 -140
  490. package/src/public/tx_contract_cache.ts +0 -69
  491. package/src/test/utils.ts +0 -36
  492. /package/dest/public/{avm/journal → state_manager}/public_storage.js +0 -0
@@ -1,486 +0,0 @@
1
- import { CANONICAL_AUTH_REGISTRY_ADDRESS, DEPLOYER_CONTRACT_ADDRESS, FEE_JUICE_ADDRESS, MULTI_CALL_ENTRYPOINT_ADDRESS, REGISTERER_CONTRACT_ADDRESS, ROUTER_ADDRESS } from '@aztec/constants';
2
- import { poseidon2Hash } from '@aztec/foundation/crypto';
3
- import { Fr } from '@aztec/foundation/fields';
4
- import { jsonStringify } from '@aztec/foundation/json-rpc';
5
- import { createLogger } from '@aztec/foundation/log';
6
- import { ProtocolContractAddress } from '@aztec/protocol-contracts';
7
- import { AvmPublicDataReadTreeHint, PublicDataWrite } from '@aztec/stdlib/avm';
8
- import { AztecAddress } from '@aztec/stdlib/aztec-address';
9
- import { SerializableContractInstance } from '@aztec/stdlib/contract';
10
- import { computeNoteHashNonce, computePublicDataTreeLeafSlot, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
11
- import { SharedMutableValues, SharedMutableValuesWithHash } from '@aztec/stdlib/shared-mutable';
12
- import { MerkleTreeId } from '@aztec/stdlib/trees';
13
- import { strict as assert } from 'assert';
14
- import cloneDeep from 'lodash.clonedeep';
15
- import { getPublicFunctionDebugName } from '../../../common/debug_fn_name.js';
16
- import { NullifierCollisionError, NullifierManager } from './nullifiers.js';
17
- import { PublicStorage } from './public_storage.js';
18
- /**
19
- * A class to manage persistable AVM state for contract calls.
20
- * Maintains a cache of the current world state,
21
- * a trace of all side effects.
22
- *
23
- * The simulator should make any world state / tree queries through this object.
24
- *
25
- * Manages merging of successful/reverted child state into current state.
26
- */ export class AvmPersistableStateManager {
27
- worldStateDB;
28
- trace;
29
- publicStorage;
30
- nullifiers;
31
- doMerkleOperations;
32
- db;
33
- firstNullifier;
34
- log;
35
- /** Make sure a forked state is never merged twice. */ alreadyMergedIntoParent;
36
- constructor(/** Reference to node storage */ worldStateDB, /** Side effect trace */ // TODO(5818): make private once no longer accessed in executor
37
- trace, /** Public storage, including cached writes */ publicStorage = new PublicStorage(worldStateDB), /** Nullifier set, including cached/recently-emitted nullifiers */ nullifiers = new NullifierManager(worldStateDB), doMerkleOperations = false, /** DB interface for merkle tree operations */ db, firstNullifier){
38
- this.worldStateDB = worldStateDB;
39
- this.trace = trace;
40
- this.publicStorage = publicStorage;
41
- this.nullifiers = nullifiers;
42
- this.doMerkleOperations = doMerkleOperations;
43
- this.db = db;
44
- this.firstNullifier = firstNullifier;
45
- this.log = createLogger('simulator:avm:state_manager');
46
- this.alreadyMergedIntoParent = false;
47
- }
48
- /**
49
- * Create a new state manager
50
- */ static create(worldStateDB, trace, doMerkleOperations = false, firstNullifier) {
51
- // TODO(dbanks12): temporary until we establish a better world state interface
52
- const db = worldStateDB.getMerkleInterface();
53
- return new AvmPersistableStateManager(worldStateDB, trace, /*publicStorage=*/ new PublicStorage(worldStateDB), /*nullifiers=*/ new NullifierManager(worldStateDB), /*doMerkleOperations=*/ doMerkleOperations, db, firstNullifier);
54
- }
55
- /**
56
- * Create a new state manager forked from this one
57
- */ async fork() {
58
- await this.worldStateDB.createCheckpoint();
59
- return new AvmPersistableStateManager(this.worldStateDB, this.trace.fork(), this.publicStorage.fork(), this.nullifiers.fork(), this.doMerkleOperations, this.db, this.firstNullifier);
60
- }
61
- /**
62
- * Accept forked world state modifications & traced side effects / hints
63
- */ async merge(forkedState) {
64
- await this._merge(forkedState, /*reverted=*/ false);
65
- }
66
- /**
67
- * Reject forked world state modifications & traced side effects, keep traced hints
68
- */ async reject(forkedState) {
69
- await this._merge(forkedState, /*reverted=*/ true);
70
- }
71
- async _merge(forkedState, reverted) {
72
- // sanity check to avoid merging the same forked trace twice
73
- assert(!forkedState.alreadyMergedIntoParent, 'Cannot merge forked state that has already been merged into its parent!');
74
- forkedState.alreadyMergedIntoParent = true;
75
- this.publicStorage.acceptAndMerge(forkedState.publicStorage);
76
- this.nullifiers.acceptAndMerge(forkedState.nullifiers);
77
- this.trace.merge(forkedState.trace, reverted);
78
- if (reverted) {
79
- await this.worldStateDB.revertCheckpoint();
80
- if (this.doMerkleOperations) {
81
- this.log.trace(`Rolled back nullifier tree to root ${new Fr((await this.db.getTreeInfo(MerkleTreeId.NULLIFIER_TREE)).root)}`);
82
- }
83
- } else {
84
- this.log.trace('Merging forked state into parent...');
85
- await this.worldStateDB.commitCheckpoint();
86
- }
87
- }
88
- /**
89
- * Write to public storage, journal/trace the write.
90
- *
91
- * @param contractAddress - the address of the contract whose storage is being written to
92
- * @param slot - the slot in the contract's storage being written to
93
- * @param value - the value being written to the slot
94
- */ async writeStorage(contractAddress, slot, value, protocolWrite = false) {
95
- const leafSlot = await computePublicDataTreeLeafSlot(contractAddress, slot);
96
- this.log.trace(`Storage write (address=${contractAddress}, slot=${slot}): value=${value}, leafSlot=${leafSlot}`);
97
- if (this.doMerkleOperations) {
98
- // write to native merkle trees
99
- const publicDataWrite = new PublicDataWrite(leafSlot, value);
100
- const result = await this.db.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, [
101
- publicDataWrite.toBuffer()
102
- ]);
103
- assert(result !== undefined, 'Public data tree insertion error. You might want to disable doMerkleOperations.');
104
- this.log.trace(`Inserted public data tree leaf at leafSlot ${leafSlot}, value: ${value}`);
105
- // low leaf hint
106
- const lowLeafPreimage = result.lowLeavesWitnessData[0].leafPreimage;
107
- const lowLeafIndex = result.lowLeavesWitnessData[0].index;
108
- const lowLeafPath = result.lowLeavesWitnessData[0].siblingPath.toFields();
109
- // new leaf insertion
110
- const newLeafPreimage = cloneDeep(lowLeafPreimage);
111
- let insertionPath;
112
- if (result.insertionWitnessData.length === 0) {
113
- assert(newLeafPreimage.value.equals(value), `Value mismatch when performing public data write (got value: ${value}, value in tree: ${newLeafPreimage.value})`);
114
- } else {
115
- // The new leaf preimage should have the new value and slot
116
- newLeafPreimage.slot = leafSlot;
117
- newLeafPreimage.value = value;
118
- // TODO: is this necessary?! Why doesn't sequentialInsert return the newLeafPreimage via
119
- // result.insertionWitnessData[0].leafPreimage?
120
- this.log.trace(`newLeafPreimage.slot: ${newLeafPreimage.slot}, newLeafPreimage.value: ${newLeafPreimage.value}, insertionIndex: ${result.insertionWitnessData[0].index}`);
121
- insertionPath = result.insertionWitnessData[0].siblingPath.toFields();
122
- }
123
- await this.trace.tracePublicStorageWrite(contractAddress, slot, value, protocolWrite, lowLeafPreimage, new Fr(lowLeafIndex), lowLeafPath, newLeafPreimage, insertionPath);
124
- } else {
125
- // Cache storage writes for later reference/reads
126
- this.publicStorage.write(contractAddress, slot, value);
127
- await this.trace.tracePublicStorageWrite(contractAddress, slot, value, protocolWrite);
128
- }
129
- }
130
- /**
131
- * Read from public storage, trace the read.
132
- *
133
- * @param contractAddress - the address of the contract whose storage is being read from
134
- * @param slot - the slot in the contract's storage being read from
135
- * @returns the latest value written to slot, or 0 if never written to before
136
- */ async readStorage(contractAddress, slot) {
137
- if (this.doMerkleOperations) {
138
- const { value, leafPreimage, leafIndex, leafPath } = await this.getPublicDataMembership(contractAddress, slot);
139
- this.trace.tracePublicStorageRead(contractAddress, slot, value, leafPreimage, leafIndex, leafPath);
140
- return value;
141
- } else {
142
- const read = await this.publicStorage.read(contractAddress, slot);
143
- this.log.trace(`Storage read results (address=${contractAddress}, slot=${slot}): value=${read.value}, cached=${read.cached}`);
144
- this.trace.tracePublicStorageRead(contractAddress, slot, read.value);
145
- return read.value;
146
- }
147
- }
148
- async getPublicDataMembership(contractAddress, slot) {
149
- const leafSlot = await computePublicDataTreeLeafSlot(contractAddress, slot);
150
- const treeId = MerkleTreeId.PUBLIC_DATA_TREE;
151
- // Get leaf if present, low leaf if absent
152
- // If leaf is present, hint/trace it. Otherwise, hint/trace the low leaf.
153
- const { preimage, leafOrLowLeafIndex, alreadyPresent } = await this.getLeafOrLowLeafInfo(treeId, leafSlot.toBigInt());
154
- // The index and preimage here is either the low leaf or the leaf itself (depending on the value of update flag)
155
- // In either case, we just want the sibling path to this leaf - it's up to the avm to distinguish if it's a low leaf or not
156
- const leafPath = await this.db.getSiblingPath(MerkleTreeId.PUBLIC_DATA_TREE, leafOrLowLeafIndex);
157
- const leafPreimage = preimage;
158
- const value = alreadyPresent ? leafPreimage.value : Fr.zero(); // default value of 0
159
- if (!alreadyPresent) {
160
- this.log.trace(`Slot has never been written before!`);
161
- // Sanity check that the leaf slot is skipped by low leaf when it doesn't exist
162
- assert(leafPreimage.slot.toBigInt() < leafSlot.toBigInt() && (leafPreimage.nextIndex === 0n || leafPreimage.nextSlot.toBigInt() > leafSlot.toBigInt()), 'Public data tree low leaf should skip the target leaf slot when the target leaf does not exist or is the max value.');
163
- }
164
- this.log.trace(`Storage read results (address=${contractAddress}, slot=${slot}, leafSlot=${leafSlot}): value=${value}, previouslyWritten=${alreadyPresent}`);
165
- return {
166
- value,
167
- leafPreimage,
168
- leafIndex: new Fr(leafOrLowLeafIndex),
169
- leafPath: leafPath.toFields()
170
- };
171
- }
172
- /**
173
- * Read from public storage, don't trace the read.
174
- *
175
- * @param contractAddress - the address of the contract whose storage is being read from
176
- * @param slot - the slot in the contract's storage being read from
177
- * @returns the latest value written to slot, or 0 if never written to before
178
- */ async peekStorage(contractAddress, slot) {
179
- const { value, cached } = await this.publicStorage.read(contractAddress, slot);
180
- this.log.trace(`Storage peek (address=${contractAddress}, slot=${slot}): value=${value}, cached=${cached}`);
181
- return Promise.resolve(value);
182
- }
183
- // TODO(4886): We currently don't silo note hashes.
184
- /**
185
- * Check if a note hash exists at the given leaf index, trace the check.
186
- *
187
- * @param contractAddress - the address of the contract whose storage is being read from
188
- * @param noteHash - the unsiloed note hash being checked
189
- * @param leafIndex - the leaf index being checked
190
- * @returns true if the note hash exists at the given leaf index, false otherwise
191
- */ async checkNoteHashExists(contractAddress, noteHash, leafIndex) {
192
- const gotLeafValue = await this.worldStateDB.getCommitmentValue(leafIndex.toBigInt()) ?? Fr.ZERO;
193
- const exists = gotLeafValue.equals(noteHash);
194
- this.log.trace(`noteHashes(${contractAddress})@${noteHash} ?? leafIndex: ${leafIndex} | gotLeafValue: ${gotLeafValue}, exists: ${exists}.`);
195
- if (this.doMerkleOperations) {
196
- const path = await this.db.getSiblingPath(MerkleTreeId.NOTE_HASH_TREE, leafIndex.toBigInt());
197
- this.trace.traceNoteHashCheck(contractAddress, gotLeafValue, leafIndex, exists, path.toFields());
198
- } else {
199
- this.trace.traceNoteHashCheck(contractAddress, gotLeafValue, leafIndex, exists);
200
- }
201
- return Promise.resolve(exists);
202
- }
203
- /**
204
- * Write a raw note hash, silo it and make it unique, then trace the write.
205
- * @param noteHash - the unsiloed note hash to write
206
- */ async writeNoteHash(contractAddress, noteHash) {
207
- this.log.trace(`noteHashes(${contractAddress}) += ${noteHash}.`);
208
- const siloedNoteHash = await siloNoteHash(contractAddress, noteHash);
209
- await this.writeSiloedNoteHash(siloedNoteHash);
210
- }
211
- /**
212
- * Write a note hash, make it unique, trace the write.
213
- * @param siloedNoteHash - the non unique note hash to write
214
- */ async writeSiloedNoteHash(siloedNoteHash) {
215
- const nonce = await computeNoteHashNonce(this.firstNullifier, this.trace.getNoteHashCount());
216
- const uniqueNoteHash = await computeUniqueNoteHash(nonce, siloedNoteHash);
217
- await this.writeUniqueNoteHash(uniqueNoteHash);
218
- }
219
- /**
220
- * Write a note hash, trace the write.
221
- * @param uniqueNoteHash - the siloed unique hash to write
222
- */ async writeUniqueNoteHash(uniqueNoteHash) {
223
- this.log.trace(`noteHashes += @${uniqueNoteHash}.`);
224
- if (this.doMerkleOperations) {
225
- // Should write a helper for this
226
- const treeInfo = await this.db.getTreeInfo(MerkleTreeId.NOTE_HASH_TREE);
227
- const leafIndex = new Fr(treeInfo.size);
228
- await this.db.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, [
229
- uniqueNoteHash
230
- ]);
231
- const insertionPath = await this.db.getSiblingPath(MerkleTreeId.NOTE_HASH_TREE, leafIndex.toBigInt());
232
- this.trace.traceNewNoteHash(uniqueNoteHash, leafIndex, insertionPath.toFields());
233
- } else {
234
- this.trace.traceNewNoteHash(uniqueNoteHash);
235
- }
236
- }
237
- /**
238
- * Check if a nullifier exists, trace the check.
239
- * @param contractAddress - address of the contract that the nullifier is associated with
240
- * @param nullifier - the unsiloed nullifier to check
241
- * @returns exists - whether the nullifier exists in the nullifier set
242
- */ async checkNullifierExists(contractAddress, nullifier) {
243
- this.log.trace(`Checking existence of nullifier (address=${contractAddress}, nullifier=${nullifier})`);
244
- const siloedNullifier = await siloNullifier(contractAddress, nullifier);
245
- if (this.doMerkleOperations) {
246
- const { exists, leafOrLowLeafPreimage, leafOrLowLeafIndex, leafOrLowLeafPath } = await this.getNullifierMembership(siloedNullifier);
247
- this.trace.traceNullifierCheck(siloedNullifier, exists, leafOrLowLeafPreimage, new Fr(leafOrLowLeafIndex), leafOrLowLeafPath);
248
- return Promise.resolve(exists);
249
- } else {
250
- const { exists, cacheHit } = await this.nullifiers.checkExists(siloedNullifier);
251
- this.log.trace(`Checked siloed nullifier ${siloedNullifier} (exists=${exists}), cacheHit=${cacheHit}`);
252
- this.trace.traceNullifierCheck(siloedNullifier, exists);
253
- return Promise.resolve(exists);
254
- }
255
- }
256
- /**
257
- * Helper to get membership information for a siloed nullifier when checking its existence.
258
- * Optionally trace the nullifier check.
259
- *
260
- * @param siloedNullifier - the siloed nullifier to get membership information for
261
- * @returns
262
- * - exists - whether the nullifier exists in the nullifier set
263
- * - leafOrLowLeafPreimage - the preimage of the nullifier leaf or its low-leaf if it doesn't exist
264
- * - leafOrLowLeafIndex - the leaf index of the nullifier leaf or its low-leaf if it doesn't exist
265
- * - leafOrLowLeafPath - the sibling path of the nullifier leaf or its low-leaf if it doesn't exist
266
- */ async getNullifierMembership(siloedNullifier) {
267
- // Get leaf if present, low leaf if absent
268
- // If leaf is present, hint/trace it. Otherwise, hint/trace the low leaf.
269
- const treeId = MerkleTreeId.NULLIFIER_TREE;
270
- const { preimage: leafPreimage, leafOrLowLeafIndex, alreadyPresent } = await this.getLeafOrLowLeafInfo(treeId, siloedNullifier.toBigInt());
271
- this.log.trace(`Checked siloed nullifier ${siloedNullifier} (exists=${alreadyPresent})`);
272
- const leafPath = await this.db.getSiblingPath(treeId, leafOrLowLeafIndex);
273
- if (alreadyPresent) {
274
- this.log.trace(`Siloed nullifier ${siloedNullifier} exists at leafIndex=${leafOrLowLeafIndex}`);
275
- } else {
276
- // Sanity check that the leaf value is skipped by low leaf when it doesn't exist
277
- assert(leafPreimage.nullifier.toBigInt() < siloedNullifier.toBigInt() && (leafPreimage.nextIndex === 0n || leafPreimage.nextNullifier.toBigInt() > siloedNullifier.toBigInt()), 'Nullifier tree low leaf should skip the target leaf nullifier when the target leaf does not exist.');
278
- }
279
- return {
280
- exists: alreadyPresent,
281
- leafOrLowLeafPreimage: leafPreimage,
282
- leafOrLowLeafIndex,
283
- leafOrLowLeafPath: leafPath.toFields()
284
- };
285
- }
286
- /**
287
- * Write a nullifier to the nullifier set, trace the write.
288
- * @param contractAddress - address of the contract that the nullifier is associated with
289
- * @param nullifier - the unsiloed nullifier to write
290
- */ async writeNullifier(contractAddress, nullifier) {
291
- this.log.trace(`Inserting new nullifier (address=${nullifier}, nullifier=${contractAddress})`);
292
- const siloedNullifier = await siloNullifier(contractAddress, nullifier);
293
- await this.writeSiloedNullifier(siloedNullifier);
294
- }
295
- /**
296
- * Write a nullifier to the nullifier set, trace the write.
297
- * @param siloedNullifier - the siloed nullifier to write
298
- */ async writeSiloedNullifier(siloedNullifier) {
299
- this.log.trace(`Inserting siloed nullifier=${siloedNullifier}`);
300
- if (this.doMerkleOperations) {
301
- const treeId = MerkleTreeId.NULLIFIER_TREE;
302
- const { preimage: leafPreimage, leafOrLowLeafIndex, alreadyPresent } = await this.getLeafOrLowLeafInfo(treeId, siloedNullifier.toBigInt());
303
- if (alreadyPresent) {
304
- this.log.verbose(`Siloed nullifier ${siloedNullifier} already present in tree at index ${leafOrLowLeafIndex}!`);
305
- // If the nullifier is already present, we should not insert it again
306
- // instead we provide the direct membership path
307
- const membershipPath = await this.db.getSiblingPath(treeId, leafOrLowLeafIndex);
308
- // This just becomes a nullifier read hint
309
- this.trace.traceNullifierCheck(siloedNullifier, /*exists=*/ alreadyPresent, leafPreimage, new Fr(leafOrLowLeafIndex), membershipPath.toFields());
310
- throw new NullifierCollisionError(`Siloed nullifier ${siloedNullifier} already exists in parent cache or host.`);
311
- } else {
312
- const appendResult = await this.db.sequentialInsert(treeId, [
313
- siloedNullifier.toBuffer()
314
- ]);
315
- const lowLeafWitnessData = appendResult.lowLeavesWitnessData[0];
316
- const lowLeafPreimage = lowLeafWitnessData.leafPreimage;
317
- const lowLeafIndex = lowLeafWitnessData.index;
318
- const lowLeafPath = lowLeafWitnessData.siblingPath.toFields();
319
- const insertionPath = appendResult.insertionWitnessData[0].siblingPath.toFields();
320
- this.trace.traceNewNullifier(siloedNullifier, lowLeafPreimage, new Fr(lowLeafIndex), lowLeafPath, insertionPath);
321
- }
322
- } else {
323
- // Cache pending nullifiers for later access
324
- await this.nullifiers.append(siloedNullifier);
325
- this.trace.traceNewNullifier(siloedNullifier);
326
- }
327
- }
328
- async writeSiloedNullifiersFromPrivate(siloedNullifiers) {
329
- for (const siloedNullifier of siloedNullifiers.filter((n)=>!n.isEmpty())){
330
- await this.writeSiloedNullifier(siloedNullifier);
331
- }
332
- }
333
- /**
334
- * Check if an L1 to L2 message exists, trace the check.
335
- * @param msgHash - the message hash to check existence of
336
- * @param msgLeafIndex - the message leaf index to use in the check
337
- * @returns exists - whether the message exists in the L1 to L2 Messages tree
338
- */ async checkL1ToL2MessageExists(contractAddress, msgHash, msgLeafIndex) {
339
- const valueAtIndex = await this.worldStateDB.getL1ToL2LeafValue(msgLeafIndex.toBigInt()) ?? Fr.ZERO;
340
- const exists = valueAtIndex.equals(msgHash);
341
- this.log.trace(`l1ToL2Messages(@${msgLeafIndex}) ?? exists: ${exists}, expected: ${msgHash}, found: ${valueAtIndex}.`);
342
- if (this.doMerkleOperations) {
343
- const path = await this.db.getSiblingPath(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, msgLeafIndex.toBigInt());
344
- this.trace.traceL1ToL2MessageCheck(contractAddress, valueAtIndex, msgLeafIndex, exists, path.toFields());
345
- } else {
346
- this.trace.traceL1ToL2MessageCheck(contractAddress, valueAtIndex, msgLeafIndex, exists);
347
- }
348
- return Promise.resolve(exists);
349
- }
350
- /**
351
- * Write an L2 to L1 message.
352
- * @param contractAddress - L2 contract address that created this message
353
- * @param recipient - L1 contract address to send the message to.
354
- * @param content - Message content.
355
- */ writeL2ToL1Message(contractAddress, recipient, content) {
356
- this.log.trace(`L2ToL1Messages(${contractAddress}) += (recipient: ${recipient}, content: ${content}).`);
357
- this.trace.traceNewL2ToL1Message(contractAddress, recipient, content);
358
- }
359
- /**
360
- * Write a public log
361
- * @param contractAddress - address of the contract that emitted the log
362
- * @param log - log contents
363
- */ writePublicLog(contractAddress, log) {
364
- this.log.trace(`PublicLog(${contractAddress}) += event with ${log.length} fields.`);
365
- this.trace.tracePublicLog(contractAddress, log);
366
- }
367
- /**
368
- * Get a contract instance.
369
- * @param contractAddress - address of the contract instance to retrieve.
370
- * @returns the contract instance or undefined if it does not exist.
371
- */ async getContractInstance(contractAddress) {
372
- this.log.trace(`Getting contract instance for address ${contractAddress}`);
373
- const instanceWithAddress = await this.worldStateDB.getContractInstance(contractAddress);
374
- const exists = instanceWithAddress !== undefined;
375
- const instance = exists ? new SerializableContractInstance(instanceWithAddress) : undefined;
376
- if (!exists) {
377
- this.log.debug(`Contract instance NOT FOUND (address=${contractAddress})`);
378
- this.trace.traceGetContractInstance(contractAddress, exists);
379
- return undefined;
380
- }
381
- this.log.trace(`Got contract instance (address=${contractAddress}): instance=${jsonStringify(instance)}`);
382
- // Canonical addresses do not trigger nullifier & public storage checks
383
- if (contractAddressIsCanonical(contractAddress)) {
384
- this.trace.traceGetContractInstance(contractAddress, exists, instance);
385
- return instance;
386
- }
387
- // This will decide internally whether to check the nullifier tree or not depending on doMerkleOperations.
388
- const nullifierExistsInTree = await this.checkNullifierExists(AztecAddress.fromNumber(DEPLOYER_CONTRACT_ADDRESS), contractAddress.toField());
389
- assert(exists == nullifierExistsInTree, 'WorldStateDB contains contract instance, but nullifier tree does not contain contract address (or vice versa).... This is a bug!');
390
- if (this.doMerkleOperations) {
391
- // TODO(fcarreiro): this should be done via a public read.
392
- const { updateMembership, updatePreimage } = await this.getContractUpdateHints(contractAddress);
393
- this.trace.traceGetContractInstance(contractAddress, exists, instance, updateMembership, updatePreimage);
394
- } else {
395
- this.trace.traceGetContractInstance(contractAddress, exists, instance);
396
- }
397
- return instance;
398
- }
399
- /**
400
- * Get a contract class.
401
- * @param classId - class id to retrieve.
402
- * @returns the contract class or undefined if it does not exist.
403
- */ async getContractClass(classId) {
404
- this.log.trace(`Getting contract class for id ${classId}`);
405
- const klass = await this.worldStateDB.getContractClass(classId);
406
- const exists = klass !== undefined;
407
- let extendedClass = undefined;
408
- // Note: We currently do not generate info to check the nullifier tree, because
409
- // this is not needed for our use cases.
410
- if (exists) {
411
- this.log.trace(`Got contract class (id=${classId})`);
412
- // Extend class information with public bytecode commitment.
413
- const bytecodeCommitment = await this.worldStateDB.getBytecodeCommitment(classId);
414
- assert(bytecodeCommitment, `Bytecode commitment was not found in DB for contract class (${classId}). This should not happen!`);
415
- extendedClass = {
416
- ...klass,
417
- publicBytecodeCommitment: bytecodeCommitment
418
- };
419
- } else {
420
- this.log.debug(`Contract instance NOT FOUND (id=${classId})`);
421
- }
422
- this.trace.traceGetContractClass(classId, exists, extendedClass);
423
- return extendedClass;
424
- }
425
- /**
426
- * Get a contract's bytecode from the contracts DB, also trace the contract class and instance indirectly.
427
- */ async getBytecode(contractAddress) {
428
- this.log.debug(`Getting bytecode for contract address ${contractAddress}`);
429
- const contractInstance = await this.getContractInstance(contractAddress);
430
- if (!contractInstance) {
431
- return undefined;
432
- }
433
- const contractClass = await this.getContractClass(contractInstance.currentContractClassId);
434
- assert(contractClass, `Contract class not found in DB, but a contract instance was found with this class ID (${contractInstance.currentContractClassId}). This should not happen!`);
435
- // NOTE: If the contract instance is not found, we assume it has not been deployed.
436
- // It doesnt matter what the values of the contract instance are in this case, as long as we tag it with exists=false.
437
- // This will hint to the avm circuit to just perform the non-membership check on the address and disregard the bytecode hash
438
- return contractClass.packedBytecode;
439
- }
440
- async getContractUpdateHints(contractAddress) {
441
- const { sharedMutableSlot, sharedMutableHashSlot } = await SharedMutableValuesWithHash.getContractUpdateSlots(contractAddress);
442
- const { value: hash, leafPreimage, leafIndex, leafPath } = await this.getPublicDataMembership(ProtocolContractAddress.ContractInstanceDeployer, sharedMutableHashSlot);
443
- const updateMembership = new AvmPublicDataReadTreeHint(leafPreimage, leafIndex, leafPath);
444
- const readStorage = async (storageSlot)=>(await this.publicStorage.read(ProtocolContractAddress.ContractInstanceDeployer, storageSlot)).value;
445
- const sharedMutableValues = await SharedMutableValues.readFromTree(sharedMutableSlot, readStorage);
446
- const updatePreimage = sharedMutableValues.toFields();
447
- if (!hash.isZero()) {
448
- const hashed = await poseidon2Hash(updatePreimage);
449
- if (!hashed.equals(hash)) {
450
- throw new Error(`Update hint hash mismatch: ${hash} != ${hashed}`);
451
- }
452
- this.log.trace(`Non empty update hint found for contract ${contractAddress}`);
453
- } else {
454
- if (updatePreimage.some((f)=>!f.isZero())) {
455
- throw new Error(`Update hint hash is zero, but update preimage is not: ${updatePreimage}`);
456
- }
457
- this.log.trace(`No update hint found for contract ${contractAddress}`);
458
- }
459
- return {
460
- updateMembership,
461
- updatePreimage
462
- };
463
- }
464
- traceEnqueuedCall(publicCallRequest, calldata, reverted) {
465
- this.trace.traceEnqueuedCall(publicCallRequest, calldata, reverted);
466
- }
467
- async getPublicFunctionDebugName(avmEnvironment) {
468
- return await getPublicFunctionDebugName(this.worldStateDB, avmEnvironment.address, avmEnvironment.calldata);
469
- }
470
- async getLeafOrLowLeafInfo(treeId, key) {
471
- // "key" is siloed slot (leafSlot) or siloed nullifier
472
- const leafOrLowLeafInfo = await this.db.getPreviousValueIndex(treeId, key);
473
- assert(leafOrLowLeafInfo !== undefined, `${MerkleTreeId[treeId]} low leaf index should always be found (even if target leaf does not exist)`);
474
- const { index: leafOrLowLeafIndex, alreadyPresent } = leafOrLowLeafInfo;
475
- const leafPreimage = await this.db.getLeafPreimage(treeId, leafOrLowLeafIndex);
476
- assert(leafPreimage !== undefined, `${MerkleTreeId[treeId]} low leaf preimage should never be undefined (even if target leaf does not exist)`);
477
- return {
478
- preimage: leafPreimage,
479
- leafOrLowLeafIndex,
480
- alreadyPresent
481
- };
482
- }
483
- }
484
- function contractAddressIsCanonical(contractAddress) {
485
- return contractAddress.equals(AztecAddress.fromNumber(CANONICAL_AUTH_REGISTRY_ADDRESS)) || contractAddress.equals(AztecAddress.fromNumber(DEPLOYER_CONTRACT_ADDRESS)) || contractAddress.equals(AztecAddress.fromNumber(REGISTERER_CONTRACT_ADDRESS)) || contractAddress.equals(AztecAddress.fromNumber(MULTI_CALL_ENTRYPOINT_ADDRESS)) || contractAddress.equals(AztecAddress.fromNumber(FEE_JUICE_ADDRESS)) || contractAddress.equals(AztecAddress.fromNumber(ROUTER_ADDRESS));
486
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"nullifiers.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/journal/nullifiers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D;;;;GAIG;AACH,qBAAa,gBAAgB;IAEzB,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,kCAAkC;IAClC,OAAO,CAAC,KAAK;IACb,+CAA+C;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;;IALxB,+DAA+D;IAC9C,cAAc,EAAE,YAAY;IAC7C,kCAAkC;IAC1B,KAAK,GAAE,GAAG,CAAC,MAAM,CAAa;IACtC,+CAA+C;IAC9B,MAAM,CAAC,8BAAkB;IAG5C;;OAEG;IACI,IAAI;IAIX;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAW/B;;;;;;;;;;OAUG;IACU,WAAW,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAmB9F;;;;OAIG;IACU,MAAM,CAAC,eAAe,EAAE,EAAE;IAQvC;;;;OAIG;IACI,cAAc,CAAC,kBAAkB,EAAE,gBAAgB;CAU3D;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE;CAI5C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"public_storage.d.ts","sourceRoot":"","sources":["../../../../src/public/avm/journal/public_storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEtE,KAAK,uBAAuB,GAAG;IAC7B,KAAK,EAAE,EAAE,CAAC;IACV,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,aAAa;IAKtB,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,qDAAqD;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAP1B,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;;IAGzC,+DAA+D;IAC9C,iBAAiB,EAAE,aAAa;IACjD,qDAAqD;IACpC,MAAM,CAAC,2BAAe;IAKzC;;OAEG;IACI,IAAI;IAIX;;;;;;;OAOG;IACI,gBAAgB,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,SAAS;IAWhF;;;;;;;;;;OAUG;IACU,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmB5F;;;;;;OAMG;IACI,KAAK,CAAC,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAI/D;;;;OAIG;IACI,cAAc,CAAC,qBAAqB,EAAE,aAAa;CAG3D"}
@@ -1,4 +0,0 @@
1
- export declare class ContractClassBytecodeError extends Error {
2
- constructor(contractAddress: string);
3
- }
4
- //# sourceMappingURL=bytecode_errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bytecode_errors.d.ts","sourceRoot":"","sources":["../../src/public/bytecode_errors.ts"],"names":[],"mappings":"AAAA,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,eAAe,EAAE,MAAM;CAIpC"}
@@ -1,6 +0,0 @@
1
- export class ContractClassBytecodeError extends Error {
2
- constructor(contractAddress){
3
- super(`Failed to get bytecode for contract at address ${contractAddress}`);
4
- this.name = 'ContractClassBytecodeError';
5
- }
6
- }
@@ -1,108 +0,0 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
- /// <reference types="node" resolution-mode="require"/>
3
- import type { Fr } from '@aztec/foundation/fields';
4
- import { type AvmExecutionHints, type ContractStorageRead, type ContractStorageUpdateRequest, type PublicDataUpdateRequest, PublicInnerCallRequest } from '@aztec/stdlib/avm';
5
- import type { SimulationError } from '@aztec/stdlib/errors';
6
- import { Gas } from '@aztec/stdlib/gas';
7
- import type { NoteHash, Nullifier, ReadRequest, TreeLeafReadRequest } from '@aztec/stdlib/kernel';
8
- import type { PublicLog } from '@aztec/stdlib/logs';
9
- import type { L2ToL1Message, ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
10
- import type { PublicExecutionRequest } from '@aztec/stdlib/tx';
11
- export interface PublicSideEffects {
12
- /** The contract storage update requests performed. */
13
- publicDataWrites: PublicDataUpdateRequest[];
14
- /** The new note hashes to be inserted into the note hashes tree. */
15
- noteHashes: NoteHash[];
16
- /** The new nullifiers to be inserted into the nullifier tree. */
17
- nullifiers: Nullifier[];
18
- /** The new l2 to l1 messages generated to be inserted into the messages tree. */
19
- l2ToL1Messages: ScopedL2ToL1Message[];
20
- /** Public logs emitted during execution. */
21
- publicLogs: PublicLog[];
22
- }
23
- export interface EnqueuedPublicCallExecutionResult {
24
- /** How much gas was left after this public execution. */
25
- endGasLeft: Gas;
26
- /** The side effect counter after execution */
27
- endSideEffectCounter: Fr;
28
- /** The return values of the function. */
29
- returnValues: Fr[];
30
- /** Whether the execution reverted. */
31
- reverted: boolean;
32
- /** The revert reason if the execution reverted. */
33
- revertReason?: SimulationError;
34
- }
35
- export interface EnqueuedPublicCallExecutionResultWithSideEffects {
36
- /** How much gas was left after this public execution. */
37
- endGasLeft: Gas;
38
- /** The side effect counter after execution */
39
- endSideEffectCounter: Fr;
40
- /** The return values of the function. */
41
- returnValues: Fr[];
42
- /** Whether the execution reverted. */
43
- reverted: boolean;
44
- /** The revert reason if the execution reverted. */
45
- revertReason?: SimulationError;
46
- /** The public side effects of the function. */
47
- sideEffects: PublicSideEffects;
48
- }
49
- /**
50
- * The public function execution result.
51
- */
52
- export interface PublicFunctionCallResult {
53
- /** The execution request that triggered this result. */
54
- executionRequest: PublicExecutionRequest;
55
- /** The side effect counter at the start of the function call. */
56
- startSideEffectCounter: Fr;
57
- /** The side effect counter after executing this function call */
58
- endSideEffectCounter: Fr;
59
- /** How much gas was available for this public execution. */
60
- startGasLeft: Gas;
61
- /** How much gas was left after this public execution. */
62
- endGasLeft: Gas;
63
- /** Transaction fee set for this tx. */
64
- transactionFee: Fr;
65
- /** Bytecode used for this execution. */
66
- bytecode?: Buffer;
67
- /** Calldata used for this execution. */
68
- calldata: Fr[];
69
- /** The return values of the function. */
70
- returnValues: Fr[];
71
- /** Whether the execution reverted. */
72
- reverted: boolean;
73
- /** The revert reason if the execution reverted. */
74
- revertReason?: SimulationError;
75
- /** The contract storage reads performed by the function. */
76
- contractStorageReads: ContractStorageRead[];
77
- /** The contract storage update requests performed by the function. */
78
- contractStorageUpdateRequests: ContractStorageUpdateRequest[];
79
- /** The new note hashes to be inserted into the note hashes tree. */
80
- noteHashes: NoteHash[];
81
- /** The new l2 to l1 messages generated in this call. */
82
- l2ToL1Messages: L2ToL1Message[];
83
- /** The new nullifiers to be inserted into the nullifier tree. */
84
- nullifiers: Nullifier[];
85
- /** The note hash read requests emitted in this call. */
86
- noteHashReadRequests: TreeLeafReadRequest[];
87
- /** The nullifier read requests emitted in this call. */
88
- nullifierReadRequests: ReadRequest[];
89
- /** The nullifier non existent read requests emitted in this call. */
90
- nullifierNonExistentReadRequests: ReadRequest[];
91
- /** L1 to L2 message read requests emitted in this call. */
92
- l1ToL2MsgReadRequests: TreeLeafReadRequest[];
93
- /**
94
- * The public logs emitted in this call.
95
- * Note: PublicLog has no counter - unsure if this is needed bc this struct is unused
96
- */
97
- publicLogs: PublicLog[];
98
- /** The requests to call public functions made by this call. */
99
- publicCallRequests: PublicInnerCallRequest[];
100
- /** The results of nested calls. */
101
- nestedExecutions: this[];
102
- /** Hints for proving AVM execution. */
103
- avmCircuitHints: AvmExecutionHints;
104
- /** The name of the function that was executed. Only used for logging. */
105
- functionName: string;
106
- }
107
- export declare function resultToPublicCallRequest(result: PublicFunctionCallResult): Promise<PublicInnerCallRequest>;
108
- //# sourceMappingURL=execution.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/public/execution.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EAEjC,KAAK,uBAAuB,EAC5B,sBAAsB,EAEvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;IAC5C,oEAAoE;IACpE,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,iEAAiE;IACjE,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,iFAAiF;IACjF,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACtC,4CAA4C;IAC5C,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,iCAAiC;IAChD,yDAAyD;IACzD,UAAU,EAAE,GAAG,CAAC;IAChB,8CAA8C;IAC9C,oBAAoB,EAAE,EAAE,CAAC;IAEzB,yCAAyC;IACzC,YAAY,EAAE,EAAE,EAAE,CAAC;IACnB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC;AAED,MAAM,WAAW,gDAAgD;IAC/D,yDAAyD;IACzD,UAAU,EAAE,GAAG,CAAC;IAChB,8CAA8C;IAC9C,oBAAoB,EAAE,EAAE,CAAC;IAEzB,yCAAyC;IACzC,YAAY,EAAE,EAAE,EAAE,CAAC;IACnB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,YAAY,CAAC,EAAE,eAAe,CAAC;IAE/B,+CAA+C;IAC/C,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,wDAAwD;IACxD,gBAAgB,EAAE,sBAAsB,CAAC;IAEzC,iEAAiE;IACjE,sBAAsB,EAAE,EAAE,CAAC;IAC3B,iEAAiE;IACjE,oBAAoB,EAAE,EAAE,CAAC;IACzB,4DAA4D;IAC5D,YAAY,EAAE,GAAG,CAAC;IAClB,yDAAyD;IACzD,UAAU,EAAE,GAAG,CAAC;IAChB,uCAAuC;IACvC,cAAc,EAAE,EAAE,CAAC;IAEnB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,QAAQ,EAAE,EAAE,EAAE,CAAC;IACf,yCAAyC;IACzC,YAAY,EAAE,EAAE,EAAE,CAAC;IACnB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,YAAY,CAAC,EAAE,eAAe,CAAC;IAE/B,4DAA4D;IAC5D,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,sEAAsE;IACtE,6BAA6B,EAAE,4BAA4B,EAAE,CAAC;IAC9D,oEAAoE;IACpE,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,wDAAwD;IACxD,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,iEAAiE;IACjE,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,wDAAwD;IACxD,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,wDAAwD;IACxD,qBAAqB,EAAE,WAAW,EAAE,CAAC;IACrC,qEAAqE;IACrE,gCAAgC,EAAE,WAAW,EAAE,CAAC;IAChD,2DAA2D;IAC3D,qBAAqB,EAAE,mBAAmB,EAAE,CAAC;IAC7C;;;OAGG;IACH,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,+DAA+D;IAC/D,kBAAkB,EAAE,sBAAsB,EAAE,CAAC;IAC7C,mCAAmC;IACnC,gBAAgB,EAAE,IAAI,EAAE,CAAC;IAEzB,uCAAuC;IACvC,eAAe,EAAE,iBAAiB,CAAC;IAEnC,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,wBAAwB,mCAa/E"}
@@ -1,9 +0,0 @@
1
- import { PublicCallStackItemCompressed, PublicInnerCallRequest, RevertCode } from '@aztec/stdlib/avm';
2
- import { Gas } from '@aztec/stdlib/gas';
3
- import { computeVarArgsHash } from '@aztec/stdlib/hash';
4
- export async function resultToPublicCallRequest(result) {
5
- const request = result.executionRequest;
6
- const item = new PublicCallStackItemCompressed(request.callContext.contractAddress, request.callContext, await computeVarArgsHash(request.args), await computeVarArgsHash(result.returnValues), // TODO(@just-mitch): need better mapping from simulator to revert code.
7
- result.reverted ? RevertCode.APP_LOGIC_REVERTED : RevertCode.OK, Gas.from(result.startGasLeft), Gas.from(result.endGasLeft));
8
- return new PublicInnerCallRequest(item, result.startSideEffectCounter.toNumber());
9
- }