@aztec/simulator 0.76.4 → 0.77.0-testnet-ignition.21

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 (517) hide show
  1. package/README.md +3 -3
  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/{public → common}/db_interfaces.d.ts +8 -33
  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 +3 -2
  9. package/dest/common/debug_fn_name.d.ts.map +1 -1
  10. package/dest/common/debug_fn_name.js +2 -5
  11. package/dest/common/errors.d.ts +4 -4
  12. package/dest/common/errors.d.ts.map +1 -1
  13. package/dest/common/errors.js +30 -39
  14. package/dest/common/index.d.ts +2 -1
  15. package/dest/common/index.d.ts.map +1 -1
  16. package/dest/common/index.js +2 -2
  17. package/dest/common/message_load_oracle_inputs.d.ts +2 -2
  18. package/dest/common/message_load_oracle_inputs.d.ts.map +1 -1
  19. package/dest/common/message_load_oracle_inputs.js +8 -8
  20. package/dest/common/stats/index.d.ts.map +1 -0
  21. package/dest/{stats → common/stats}/stats.d.ts +2 -2
  22. package/dest/common/stats/stats.d.ts.map +1 -0
  23. package/dest/common/stats/stats.js +10 -0
  24. package/dest/{acvm → private/acvm}/acvm.d.ts +4 -4
  25. package/dest/private/acvm/acvm.d.ts.map +1 -0
  26. package/dest/private/acvm/acvm.js +70 -0
  27. package/dest/{acvm → private/acvm}/acvm_types.d.ts +1 -1
  28. package/dest/private/acvm/acvm_types.d.ts.map +1 -0
  29. package/dest/private/acvm/acvm_types.js +3 -0
  30. package/dest/{acvm → private/acvm}/deserialize.d.ts +2 -2
  31. package/dest/private/acvm/deserialize.d.ts.map +1 -0
  32. package/dest/private/acvm/deserialize.js +42 -0
  33. package/dest/private/acvm/index.d.ts.map +1 -0
  34. package/dest/private/acvm/index.js +5 -0
  35. package/dest/{acvm → private/acvm}/oracle/index.d.ts +1 -1
  36. package/dest/private/acvm/oracle/index.d.ts.map +1 -0
  37. package/dest/private/acvm/oracle/index.js +2 -0
  38. package/dest/{acvm → private/acvm}/oracle/oracle.d.ts +4 -3
  39. package/dest/private/acvm/oracle/oracle.d.ts.map +1 -0
  40. package/dest/private/acvm/oracle/oracle.js +263 -0
  41. package/dest/{acvm → private/acvm}/oracle/typed_oracle.d.ts +12 -6
  42. package/dest/private/acvm/oracle/typed_oracle.d.ts.map +1 -0
  43. package/dest/private/acvm/oracle/typed_oracle.js +132 -0
  44. package/dest/{acvm → private/acvm}/serialize.d.ts +7 -3
  45. package/dest/private/acvm/serialize.d.ts.map +1 -0
  46. package/dest/private/acvm/serialize.js +46 -0
  47. package/dest/{client → private}/client_execution_context.d.ts +20 -17
  48. package/dest/private/client_execution_context.d.ts.map +1 -0
  49. package/dest/private/client_execution_context.js +378 -0
  50. package/dest/{client → private}/db_oracle.d.ts +19 -7
  51. package/dest/private/db_oracle.d.ts.map +1 -0
  52. package/dest/private/db_oracle.js +14 -0
  53. package/dest/{client → private}/execution_note_cache.d.ts +2 -2
  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/{common → private}/hashed_values_cache.d.ts +2 -2
  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/{client → private}/pick_notes.d.ts +1 -1
  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 +24 -0
  66. package/dest/private/private_execution.d.ts.map +1 -0
  67. package/dest/private/private_execution.js +90 -0
  68. package/dest/{providers → private/providers}/acvm_native.d.ts +5 -5
  69. package/dest/private/providers/acvm_native.d.ts.map +1 -0
  70. package/dest/private/providers/acvm_native.js +139 -0
  71. package/dest/{providers → private/providers}/acvm_wasm.d.ts +4 -4
  72. package/dest/private/providers/acvm_wasm.d.ts.map +1 -0
  73. package/dest/private/providers/acvm_wasm.js +62 -0
  74. package/dest/{providers → private/providers}/acvm_wasm_with_blobs.d.ts +5 -5
  75. package/dest/private/providers/acvm_wasm_with_blobs.d.ts.map +1 -0
  76. package/dest/{providers → private/providers}/acvm_wasm_with_blobs.js +3 -6
  77. package/dest/{providers → private/providers}/factory.d.ts +1 -1
  78. package/dest/private/providers/factory.d.ts.map +1 -0
  79. package/dest/private/providers/factory.js +27 -0
  80. package/dest/{common → private/providers}/simulation_provider.d.ts +5 -5
  81. package/dest/private/providers/simulation_provider.d.ts.map +1 -0
  82. package/dest/private/providers/simulation_provider.js +24 -0
  83. package/dest/private/simulator.d.ts +36 -0
  84. package/dest/private/simulator.d.ts.map +1 -0
  85. package/dest/private/simulator.js +78 -0
  86. package/dest/{client → private}/unconstrained_execution.d.ts +5 -5
  87. package/dest/private/unconstrained_execution.d.ts.map +1 -0
  88. package/dest/private/unconstrained_execution.js +27 -0
  89. package/dest/{client → private}/view_data_oracle.d.ts +15 -7
  90. package/dest/private/view_data_oracle.d.ts.map +1 -0
  91. package/dest/private/view_data_oracle.js +260 -0
  92. package/dest/{avm → public/avm}/avm_context.d.ts +7 -5
  93. package/dest/public/avm/avm_context.d.ts.map +1 -0
  94. package/dest/public/avm/avm_context.js +44 -0
  95. package/dest/{avm → public/avm}/avm_contract_call_result.d.ts +5 -5
  96. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -0
  97. package/dest/public/avm/avm_contract_call_result.js +50 -0
  98. package/dest/{avm → public/avm}/avm_execution_environment.d.ts +2 -2
  99. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -0
  100. package/dest/public/avm/avm_execution_environment.js +31 -0
  101. package/dest/public/avm/avm_gas.d.ts.map +1 -0
  102. package/dest/public/avm/avm_gas.js +202 -0
  103. package/dest/{avm → public/avm}/avm_machine_state.d.ts +2 -2
  104. package/dest/public/avm/avm_machine_state.d.ts.map +1 -0
  105. package/dest/public/avm/avm_machine_state.js +106 -0
  106. package/dest/{avm → public/avm}/avm_memory_types.d.ts +2 -2
  107. package/dest/public/avm/avm_memory_types.d.ts.map +1 -0
  108. package/dest/public/avm/avm_memory_types.js +340 -0
  109. package/dest/{avm → public/avm}/avm_simulator.d.ts +5 -3
  110. package/dest/public/avm/avm_simulator.d.ts.map +1 -0
  111. package/dest/public/avm/avm_simulator.js +202 -0
  112. package/dest/public/avm/bytecode_utils.d.ts.map +1 -0
  113. package/dest/public/avm/bytecode_utils.js +17 -0
  114. package/dest/{avm → public/avm}/errors.d.ts +5 -4
  115. package/dest/public/avm/errors.d.ts.map +1 -0
  116. package/dest/public/avm/errors.js +179 -0
  117. package/dest/{avm → public/avm}/fixtures/avm_simulation_tester.d.ts +6 -6
  118. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -0
  119. package/dest/public/avm/fixtures/avm_simulation_tester.js +76 -0
  120. package/dest/{avm → public/avm}/fixtures/base_avm_simulation_tester.d.ts +13 -12
  121. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -0
  122. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +83 -0
  123. package/dest/{avm → public/avm}/fixtures/index.d.ts +24 -7
  124. package/dest/public/avm/fixtures/index.d.ts.map +1 -0
  125. package/dest/public/avm/fixtures/index.js +175 -0
  126. package/dest/{avm → public/avm}/fixtures/simple_contract_data_source.d.ts +10 -6
  127. package/dest/public/avm/fixtures/simple_contract_data_source.d.ts.map +1 -0
  128. package/dest/public/avm/fixtures/simple_contract_data_source.js +74 -0
  129. package/dest/public/avm/index.d.ts +4 -0
  130. package/dest/public/avm/index.d.ts.map +1 -0
  131. package/dest/{avm/index.d.ts → public/avm/index.js} +1 -2
  132. package/dest/public/avm/journal/index.d.ts.map +1 -0
  133. package/dest/{avm → public/avm}/journal/journal.d.ts +51 -18
  134. package/dest/public/avm/journal/journal.d.ts.map +1 -0
  135. package/dest/public/avm/journal/journal.js +486 -0
  136. package/dest/{avm → public/avm}/journal/nullifiers.d.ts +8 -6
  137. package/dest/public/avm/journal/nullifiers.d.ts.map +1 -0
  138. package/dest/public/avm/journal/nullifiers.js +97 -0
  139. package/dest/{avm → public/avm}/journal/public_storage.d.ts +2 -2
  140. package/dest/public/avm/journal/public_storage.d.ts.map +1 -0
  141. package/dest/public/avm/journal/public_storage.js +145 -0
  142. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -0
  143. package/dest/public/avm/opcodes/accrued_substate.js +252 -0
  144. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +1 -0
  145. package/dest/public/avm/opcodes/addressing_mode.js +74 -0
  146. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -0
  147. package/dest/public/avm/opcodes/arithmetic.js +73 -0
  148. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -0
  149. package/dest/public/avm/opcodes/bitwise.js +106 -0
  150. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -0
  151. package/dest/public/avm/opcodes/comparators.js +43 -0
  152. package/dest/public/avm/opcodes/contract.d.ts.map +1 -0
  153. package/dest/public/avm/opcodes/contract.js +66 -0
  154. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -0
  155. package/dest/public/avm/opcodes/control_flow.js +105 -0
  156. package/dest/{avm → public/avm}/opcodes/conversion.d.ts +1 -1
  157. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -0
  158. package/dest/public/avm/opcodes/conversion.js +69 -0
  159. package/dest/{avm → public/avm}/opcodes/ec_add.d.ts +1 -1
  160. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -0
  161. package/dest/public/avm/opcodes/ec_add.js +84 -0
  162. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -0
  163. package/dest/public/avm/opcodes/environment_getters.js +79 -0
  164. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -0
  165. package/dest/public/avm/opcodes/external_calls.js +180 -0
  166. package/dest/{avm → public/avm}/opcodes/hashing.d.ts +1 -1
  167. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -0
  168. package/dest/public/avm/opcodes/hashing.js +114 -0
  169. package/dest/public/avm/opcodes/index.d.ts.map +1 -0
  170. package/dest/{avm → public/avm}/opcodes/instruction.d.ts +2 -2
  171. package/dest/public/avm/opcodes/instruction.d.ts.map +1 -0
  172. package/dest/public/avm/opcodes/instruction.js +91 -0
  173. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -0
  174. package/dest/public/avm/opcodes/instruction_impl.js +30 -0
  175. package/dest/public/avm/opcodes/memory.d.ts.map +1 -0
  176. package/dest/public/avm/opcodes/memory.js +253 -0
  177. package/dest/{avm → public/avm}/opcodes/misc.d.ts +1 -1
  178. package/dest/public/avm/opcodes/misc.d.ts.map +1 -0
  179. package/dest/public/avm/opcodes/misc.js +48 -0
  180. package/dest/public/avm/opcodes/storage.d.ts.map +1 -0
  181. package/dest/public/avm/opcodes/storage.js +66 -0
  182. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +1 -0
  183. package/dest/public/avm/serialization/buffer_cursor.js +99 -0
  184. package/dest/{avm → public/avm}/serialization/bytecode_serialization.d.ts +1 -1
  185. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +1 -0
  186. package/dest/public/avm/serialization/bytecode_serialization.js +328 -0
  187. package/dest/{avm → public/avm}/serialization/instruction_serialization.d.ts +1 -2
  188. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -0
  189. package/dest/public/avm/serialization/instruction_serialization.js +225 -0
  190. package/dest/{avm → public/avm}/test_utils.d.ts +6 -4
  191. package/dest/public/avm/test_utils.d.ts.map +1 -0
  192. package/dest/public/avm/test_utils.js +52 -0
  193. package/dest/public/bytecode_errors.js +1 -2
  194. package/dest/public/execution.d.ts +8 -2
  195. package/dest/public/execution.d.ts.map +1 -1
  196. package/dest/public/execution.js +4 -5
  197. package/dest/public/executor_metrics.js +16 -12
  198. package/dest/public/fixtures/index.js +0 -1
  199. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +15 -9
  200. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  201. package/dest/public/fixtures/public_tx_simulation_tester.js +54 -53
  202. package/dest/public/fixtures/utils.d.ts +7 -11
  203. package/dest/public/fixtures/utils.d.ts.map +1 -1
  204. package/dest/public/fixtures/utils.js +92 -32
  205. package/dest/public/index.d.ts +5 -4
  206. package/dest/public/index.d.ts.map +1 -1
  207. package/dest/public/index.js +5 -5
  208. package/dest/public/public_db_sources.d.ts +82 -34
  209. package/dest/public/public_db_sources.d.ts.map +1 -1
  210. package/dest/public/public_db_sources.js +171 -196
  211. package/dest/public/{public_processor.d.ts → public_processor/public_processor.d.ts} +10 -8
  212. package/dest/public/public_processor/public_processor.d.ts.map +1 -0
  213. package/dest/public/public_processor/public_processor.js +379 -0
  214. package/dest/public/{public_processor_metrics.d.ts → public_processor/public_processor_metrics.d.ts} +3 -3
  215. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -0
  216. package/dest/public/public_processor/public_processor_metrics.js +125 -0
  217. package/dest/public/{public_tx_context.d.ts → public_tx_simulator/public_tx_context.d.ts} +14 -8
  218. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -0
  219. package/dest/public/public_tx_simulator/public_tx_context.js +320 -0
  220. package/dest/public/{public_tx_simulator.d.ts → public_tx_simulator/public_tx_simulator.d.ts} +10 -7
  221. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -0
  222. package/dest/public/public_tx_simulator/public_tx_simulator.js +325 -0
  223. package/dest/public/side_effect_errors.js +1 -2
  224. package/dest/public/side_effect_trace.d.ts +16 -10
  225. package/dest/public/side_effect_trace.d.ts.map +1 -1
  226. package/dest/public/side_effect_trace.js +82 -149
  227. package/dest/public/side_effect_trace_interface.d.ts +9 -7
  228. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  229. package/dest/public/side_effect_trace_interface.js +1 -2
  230. package/dest/public/tx_contract_cache.d.ts +41 -0
  231. package/dest/public/tx_contract_cache.d.ts.map +1 -0
  232. package/dest/public/tx_contract_cache.js +49 -0
  233. package/dest/public/unique_class_ids.js +23 -28
  234. package/dest/public/utils.d.ts +2 -2
  235. package/dest/public/utils.d.ts.map +1 -1
  236. package/dest/public/utils.js +17 -12
  237. package/dest/server.d.ts +4 -4
  238. package/dest/server.d.ts.map +1 -1
  239. package/dest/server.js +3 -5
  240. package/dest/test/utils.d.ts +3 -2
  241. package/dest/test/utils.d.ts.map +1 -1
  242. package/dest/test/utils.js +9 -7
  243. package/package.json +19 -21
  244. package/src/client.ts +4 -0
  245. package/src/{public → common}/db_interfaces.ts +8 -40
  246. package/src/common/debug_fn_name.ts +4 -2
  247. package/src/common/errors.ts +5 -5
  248. package/src/common/index.ts +2 -1
  249. package/src/common/message_load_oracle_inputs.ts +2 -2
  250. package/src/common/stats/index.ts +1 -0
  251. package/src/{stats → common/stats}/stats.ts +2 -2
  252. package/src/{acvm → private/acvm}/acvm.ts +5 -5
  253. package/src/{acvm → private/acvm}/acvm_types.ts +1 -1
  254. package/src/{acvm → private/acvm}/deserialize.ts +2 -2
  255. package/src/{acvm → private/acvm}/oracle/index.ts +1 -1
  256. package/src/{acvm → private/acvm}/oracle/oracle.ts +22 -12
  257. package/src/{acvm → private/acvm}/oracle/typed_oracle.ts +50 -55
  258. package/src/{acvm → private/acvm}/serialize.ts +10 -3
  259. package/src/{client → private}/client_execution_context.ts +54 -37
  260. package/src/{client → private}/db_oracle.ts +20 -20
  261. package/src/{client → private}/execution_note_cache.ts +3 -3
  262. package/src/{common → private}/hashed_values_cache.ts +2 -2
  263. package/src/private/index.ts +12 -0
  264. package/src/{client → private}/pick_notes.ts +1 -1
  265. package/src/{client → private}/private_execution.ts +46 -14
  266. package/src/{providers → private/providers}/acvm_native.ts +6 -6
  267. package/src/{providers → private/providers}/acvm_wasm.ts +4 -4
  268. package/src/{providers → private/providers}/acvm_wasm_with_blobs.ts +5 -5
  269. package/src/{providers → private/providers}/factory.ts +1 -1
  270. package/src/{common → private/providers}/simulation_provider.ts +5 -5
  271. package/src/{client → private}/simulator.ts +31 -123
  272. package/src/{client → private}/unconstrained_execution.ts +7 -7
  273. package/src/{client → private}/view_data_oracle.ts +25 -28
  274. package/src/{avm → public/avm}/avm_context.ts +12 -7
  275. package/src/{avm → public/avm}/avm_contract_call_result.ts +6 -6
  276. package/src/{avm → public/avm}/avm_execution_environment.ts +2 -2
  277. package/src/{avm → public/avm}/avm_gas.ts +1 -3
  278. package/src/{avm → public/avm}/avm_machine_state.ts +2 -2
  279. package/src/{avm → public/avm}/avm_memory_types.ts +4 -4
  280. package/src/{avm → public/avm}/avm_simulator.ts +12 -6
  281. package/src/{avm → public/avm}/errors.ts +5 -4
  282. package/src/{avm → public/avm}/fixtures/avm_simulation_tester.ts +16 -15
  283. package/src/{avm → public/avm}/fixtures/base_avm_simulation_tester.ts +45 -40
  284. package/src/{avm → public/avm}/fixtures/index.ts +77 -12
  285. package/src/{avm → public/avm}/fixtures/simple_contract_data_source.ts +26 -19
  286. package/src/{avm → public/avm}/index.ts +1 -1
  287. package/src/public/avm/journal/index.ts +1 -0
  288. package/src/{avm → public/avm}/journal/journal.ts +330 -305
  289. package/src/{avm → public/avm}/journal/nullifiers.ts +20 -19
  290. package/src/{avm → public/avm}/journal/public_storage.ts +2 -2
  291. package/src/{avm → public/avm}/opcodes/contract.ts +1 -1
  292. package/src/{avm → public/avm}/opcodes/control_flow.ts +1 -1
  293. package/src/{avm → public/avm}/opcodes/conversion.ts +1 -1
  294. package/src/{avm → public/avm}/opcodes/ec_add.ts +2 -2
  295. package/src/{avm → public/avm}/opcodes/external_calls.ts +5 -6
  296. package/src/{avm → public/avm}/opcodes/hashing.ts +1 -1
  297. package/src/public/avm/opcodes/index.ts +15 -0
  298. package/src/{avm → public/avm}/opcodes/instruction.ts +2 -2
  299. package/src/{avm → public/avm}/opcodes/misc.ts +1 -1
  300. package/src/public/avm/serialization/bytecode_serialization.ts +204 -0
  301. package/src/{avm → public/avm}/serialization/instruction_serialization.ts +0 -1
  302. package/src/{avm → public/avm}/test_utils.ts +10 -7
  303. package/src/public/execution.ts +9 -12
  304. package/src/public/fixtures/public_tx_simulation_tester.ts +66 -72
  305. package/src/public/fixtures/utils.ts +122 -33
  306. package/src/public/index.ts +5 -4
  307. package/src/public/public_db_sources.ts +216 -222
  308. package/src/public/{public_processor.ts → public_processor/public_processor.ts} +78 -53
  309. package/src/public/{public_processor_metrics.ts → public_processor/public_processor_metrics.ts} +3 -3
  310. package/src/public/{public_tx_context.ts → public_tx_simulator/public_tx_context.ts} +70 -75
  311. package/src/public/{public_tx_simulator.ts → public_tx_simulator/public_tx_simulator.ts} +104 -91
  312. package/src/public/side_effect_trace.ts +85 -160
  313. package/src/public/side_effect_trace_interface.ts +10 -23
  314. package/src/public/tx_contract_cache.ts +69 -0
  315. package/src/public/unique_class_ids.ts +1 -1
  316. package/src/public/utils.ts +2 -2
  317. package/src/server.ts +4 -4
  318. package/src/test/utils.ts +5 -3
  319. package/dest/acvm/acvm.d.ts.map +0 -1
  320. package/dest/acvm/acvm.js +0 -73
  321. package/dest/acvm/acvm_types.d.ts.map +0 -1
  322. package/dest/acvm/acvm_types.js +0 -2
  323. package/dest/acvm/deserialize.d.ts.map +0 -1
  324. package/dest/acvm/deserialize.js +0 -46
  325. package/dest/acvm/index.d.ts.map +0 -1
  326. package/dest/acvm/index.js +0 -6
  327. package/dest/acvm/oracle/index.d.ts.map +0 -1
  328. package/dest/acvm/oracle/index.js +0 -3
  329. package/dest/acvm/oracle/oracle.d.ts.map +0 -1
  330. package/dest/acvm/oracle/oracle.js +0 -230
  331. package/dest/acvm/oracle/typed_oracle.d.ts.map +0 -1
  332. package/dest/acvm/oracle/typed_oracle.js +0 -131
  333. package/dest/acvm/serialize.d.ts.map +0 -1
  334. package/dest/acvm/serialize.js +0 -48
  335. package/dest/avm/avm_context.d.ts.map +0 -1
  336. package/dest/avm/avm_context.js +0 -44
  337. package/dest/avm/avm_contract_call_result.d.ts.map +0 -1
  338. package/dest/avm/avm_contract_call_result.js +0 -45
  339. package/dest/avm/avm_execution_environment.d.ts.map +0 -1
  340. package/dest/avm/avm_execution_environment.js +0 -28
  341. package/dest/avm/avm_gas.d.ts.map +0 -1
  342. package/dest/avm/avm_gas.js +0 -170
  343. package/dest/avm/avm_machine_state.d.ts.map +0 -1
  344. package/dest/avm/avm_machine_state.js +0 -112
  345. package/dest/avm/avm_memory_types.d.ts.map +0 -1
  346. package/dest/avm/avm_memory_types.js +0 -327
  347. package/dest/avm/avm_simulator.d.ts.map +0 -1
  348. package/dest/avm/avm_simulator.js +0 -193
  349. package/dest/avm/avm_tree.d.ts +0 -282
  350. package/dest/avm/avm_tree.d.ts.map +0 -1
  351. package/dest/avm/avm_tree.js +0 -684
  352. package/dest/avm/bytecode_utils.d.ts.map +0 -1
  353. package/dest/avm/bytecode_utils.js +0 -15
  354. package/dest/avm/errors.d.ts.map +0 -1
  355. package/dest/avm/errors.js +0 -196
  356. package/dest/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  357. package/dest/avm/fixtures/avm_simulation_tester.js +0 -73
  358. package/dest/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  359. package/dest/avm/fixtures/base_avm_simulation_tester.js +0 -76
  360. package/dest/avm/fixtures/index.d.ts.map +0 -1
  361. package/dest/avm/fixtures/index.js +0 -134
  362. package/dest/avm/fixtures/simple_contract_data_source.d.ts.map +0 -1
  363. package/dest/avm/fixtures/simple_contract_data_source.js +0 -75
  364. package/dest/avm/index.d.ts.map +0 -1
  365. package/dest/avm/index.js +0 -4
  366. package/dest/avm/journal/index.d.ts.map +0 -1
  367. package/dest/avm/journal/index.js +0 -2
  368. package/dest/avm/journal/journal.d.ts.map +0 -1
  369. package/dest/avm/journal/journal.js +0 -499
  370. package/dest/avm/journal/nullifiers.d.ts.map +0 -1
  371. package/dest/avm/journal/nullifiers.js +0 -99
  372. package/dest/avm/journal/public_storage.d.ts.map +0 -1
  373. package/dest/avm/journal/public_storage.js +0 -159
  374. package/dest/avm/opcodes/accrued_substate.d.ts.map +0 -1
  375. package/dest/avm/opcodes/accrued_substate.js +0 -215
  376. package/dest/avm/opcodes/addressing_mode.d.ts.map +0 -1
  377. package/dest/avm/opcodes/addressing_mode.js +0 -81
  378. package/dest/avm/opcodes/arithmetic.d.ts.map +0 -1
  379. package/dest/avm/opcodes/arithmetic.js +0 -70
  380. package/dest/avm/opcodes/bitwise.d.ts.map +0 -1
  381. package/dest/avm/opcodes/bitwise.js +0 -90
  382. package/dest/avm/opcodes/comparators.d.ts.map +0 -1
  383. package/dest/avm/opcodes/comparators.js +0 -40
  384. package/dest/avm/opcodes/contract.d.ts.map +0 -1
  385. package/dest/avm/opcodes/contract.js +0 -63
  386. package/dest/avm/opcodes/control_flow.d.ts.map +0 -1
  387. package/dest/avm/opcodes/control_flow.js +0 -97
  388. package/dest/avm/opcodes/conversion.d.ts.map +0 -1
  389. package/dest/avm/opcodes/conversion.js +0 -64
  390. package/dest/avm/opcodes/ec_add.d.ts.map +0 -1
  391. package/dest/avm/opcodes/ec_add.js +0 -82
  392. package/dest/avm/opcodes/environment_getters.d.ts.map +0 -1
  393. package/dest/avm/opcodes/environment_getters.js +0 -78
  394. package/dest/avm/opcodes/external_calls.d.ts.map +0 -1
  395. package/dest/avm/opcodes/external_calls.js +0 -169
  396. package/dest/avm/opcodes/hashing.d.ts.map +0 -1
  397. package/dest/avm/opcodes/hashing.js +0 -103
  398. package/dest/avm/opcodes/index.d.ts.map +0 -1
  399. package/dest/avm/opcodes/index.js +0 -16
  400. package/dest/avm/opcodes/instruction.d.ts.map +0 -1
  401. package/dest/avm/opcodes/instruction.js +0 -100
  402. package/dest/avm/opcodes/instruction_impl.d.ts.map +0 -1
  403. package/dest/avm/opcodes/instruction_impl.js +0 -33
  404. package/dest/avm/opcodes/memory.d.ts.map +0 -1
  405. package/dest/avm/opcodes/memory.js +0 -226
  406. package/dest/avm/opcodes/misc.d.ts.map +0 -1
  407. package/dest/avm/opcodes/misc.js +0 -45
  408. package/dest/avm/opcodes/multi_scalar_mul.d.ts +0 -16
  409. package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +0 -1
  410. package/dest/avm/opcodes/multi_scalar_mul.js +0 -112
  411. package/dest/avm/opcodes/storage.d.ts.map +0 -1
  412. package/dest/avm/opcodes/storage.js +0 -61
  413. package/dest/avm/serialization/buffer_cursor.d.ts.map +0 -1
  414. package/dest/avm/serialization/buffer_cursor.js +0 -99
  415. package/dest/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  416. package/dest/avm/serialization/bytecode_serialization.js +0 -132
  417. package/dest/avm/serialization/instruction_serialization.d.ts.map +0 -1
  418. package/dest/avm/serialization/instruction_serialization.js +0 -187
  419. package/dest/avm/test_utils.d.ts.map +0 -1
  420. package/dest/avm/test_utils.js +0 -52
  421. package/dest/client/client_execution_context.d.ts.map +0 -1
  422. package/dest/client/client_execution_context.js +0 -392
  423. package/dest/client/db_oracle.d.ts.map +0 -1
  424. package/dest/client/db_oracle.js +0 -17
  425. package/dest/client/execution_note_cache.d.ts.map +0 -1
  426. package/dest/client/execution_note_cache.js +0 -181
  427. package/dest/client/index.d.ts +0 -16
  428. package/dest/client/index.d.ts.map +0 -1
  429. package/dest/client/index.js +0 -15
  430. package/dest/client/pick_notes.d.ts.map +0 -1
  431. package/dest/client/pick_notes.js +0 -54
  432. package/dest/client/private_execution.d.ts +0 -19
  433. package/dest/client/private_execution.d.ts.map +0 -1
  434. package/dest/client/private_execution.js +0 -72
  435. package/dest/client/simulator.d.ts +0 -60
  436. package/dest/client/simulator.d.ts.map +0 -1
  437. package/dest/client/simulator.js +0 -136
  438. package/dest/client/unconstrained_execution.d.ts.map +0 -1
  439. package/dest/client/unconstrained_execution.js +0 -30
  440. package/dest/client/view_data_oracle.d.ts.map +0 -1
  441. package/dest/client/view_data_oracle.js +0 -268
  442. package/dest/common/hashed_values_cache.d.ts.map +0 -1
  443. package/dest/common/hashed_values_cache.js +0 -50
  444. package/dest/common/simulation_provider.d.ts.map +0 -1
  445. package/dest/common/simulation_provider.js +0 -27
  446. package/dest/common.d.ts +0 -2
  447. package/dest/common.d.ts.map +0 -1
  448. package/dest/common.js +0 -2
  449. package/dest/providers/acvm_native.d.ts.map +0 -1
  450. package/dest/providers/acvm_native.js +0 -125
  451. package/dest/providers/acvm_wasm.d.ts.map +0 -1
  452. package/dest/providers/acvm_wasm.js +0 -54
  453. package/dest/providers/acvm_wasm_with_blobs.d.ts.map +0 -1
  454. package/dest/providers/factory.d.ts.map +0 -1
  455. package/dest/providers/factory.js +0 -27
  456. package/dest/providers/index.d.ts +0 -5
  457. package/dest/providers/index.d.ts.map +0 -1
  458. package/dest/providers/index.js +0 -5
  459. package/dest/public/db_interfaces.d.ts.map +0 -1
  460. package/dest/public/db_interfaces.js +0 -2
  461. package/dest/public/fee_payment.d.ts +0 -11
  462. package/dest/public/fee_payment.d.ts.map +0 -1
  463. package/dest/public/fee_payment.js +0 -21
  464. package/dest/public/public_processor.d.ts.map +0 -1
  465. package/dest/public/public_processor.js +0 -352
  466. package/dest/public/public_processor_metrics.d.ts.map +0 -1
  467. package/dest/public/public_processor_metrics.js +0 -106
  468. package/dest/public/public_tx_context.d.ts.map +0 -1
  469. package/dest/public/public_tx_context.js +0 -341
  470. package/dest/public/public_tx_simulator.d.ts.map +0 -1
  471. package/dest/public/public_tx_simulator.js +0 -333
  472. package/dest/stats/index.d.ts.map +0 -1
  473. package/dest/stats/index.js +0 -2
  474. package/dest/stats/stats.d.ts.map +0 -1
  475. package/dest/stats/stats.js +0 -11
  476. package/src/avm/avm_tree.ts +0 -887
  477. package/src/avm/opcodes/multi_scalar_mul.ts +0 -121
  478. package/src/avm/serialization/bytecode_serialization.ts +0 -212
  479. package/src/client/index.ts +0 -15
  480. package/src/common.ts +0 -1
  481. package/src/providers/index.ts +0 -4
  482. package/src/public/fee_payment.ts +0 -23
  483. /package/dest/{stats → common/stats}/index.d.ts +0 -0
  484. /package/{src/stats/index.ts → dest/common/stats/index.js} +0 -0
  485. /package/dest/{acvm → private/acvm}/index.d.ts +0 -0
  486. /package/dest/{avm → public/avm}/avm_gas.d.ts +0 -0
  487. /package/dest/{avm → public/avm}/bytecode_utils.d.ts +0 -0
  488. /package/dest/{avm → public/avm}/journal/index.d.ts +0 -0
  489. /package/{src/avm/journal/index.ts → dest/public/avm/journal/index.js} +0 -0
  490. /package/dest/{avm → public/avm}/opcodes/accrued_substate.d.ts +0 -0
  491. /package/dest/{avm → public/avm}/opcodes/addressing_mode.d.ts +0 -0
  492. /package/dest/{avm → public/avm}/opcodes/arithmetic.d.ts +0 -0
  493. /package/dest/{avm → public/avm}/opcodes/bitwise.d.ts +0 -0
  494. /package/dest/{avm → public/avm}/opcodes/comparators.d.ts +0 -0
  495. /package/dest/{avm → public/avm}/opcodes/contract.d.ts +0 -0
  496. /package/dest/{avm → public/avm}/opcodes/control_flow.d.ts +0 -0
  497. /package/dest/{avm → public/avm}/opcodes/environment_getters.d.ts +0 -0
  498. /package/dest/{avm → public/avm}/opcodes/external_calls.d.ts +0 -0
  499. /package/dest/{avm → public/avm}/opcodes/index.d.ts +0 -0
  500. /package/{src/avm/opcodes/index.ts → dest/public/avm/opcodes/index.js} +0 -0
  501. /package/dest/{avm → public/avm}/opcodes/instruction_impl.d.ts +0 -0
  502. /package/dest/{avm → public/avm}/opcodes/memory.d.ts +0 -0
  503. /package/dest/{avm → public/avm}/opcodes/storage.d.ts +0 -0
  504. /package/dest/{avm → public/avm}/serialization/buffer_cursor.d.ts +0 -0
  505. /package/src/{acvm → private/acvm}/index.ts +0 -0
  506. /package/src/{avm → public/avm}/bytecode_utils.ts +0 -0
  507. /package/src/{avm → public/avm}/opcodes/.eslintrc.cjs +0 -0
  508. /package/src/{avm → public/avm}/opcodes/accrued_substate.ts +0 -0
  509. /package/src/{avm → public/avm}/opcodes/addressing_mode.ts +0 -0
  510. /package/src/{avm → public/avm}/opcodes/arithmetic.ts +0 -0
  511. /package/src/{avm → public/avm}/opcodes/bitwise.ts +0 -0
  512. /package/src/{avm → public/avm}/opcodes/comparators.ts +0 -0
  513. /package/src/{avm → public/avm}/opcodes/environment_getters.ts +0 -0
  514. /package/src/{avm → public/avm}/opcodes/instruction_impl.ts +0 -0
  515. /package/src/{avm → public/avm}/opcodes/memory.ts +0 -0
  516. /package/src/{avm → public/avm}/opcodes/storage.ts +0 -0
  517. /package/src/{avm → public/avm}/serialization/buffer_cursor.ts +0 -0
@@ -0,0 +1,46 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import { HashedValues } from '@aztec/stdlib/tx';
3
+ /**
4
+ * A cache for hashed values (arguments, returns) during transaction execution.
5
+ */ export class HashedValuesCache {
6
+ cache;
7
+ constructor(initialArguments = []){
8
+ this.cache = new Map();
9
+ for (const initialArg of initialArguments){
10
+ this.cache.set(initialArg.hash.toBigInt(), initialArg.values);
11
+ }
12
+ }
13
+ /**
14
+ * Creates a new hashed values cache.
15
+ * @param initialArguments - The initial arguments to add to the cache.
16
+ * @returns The new hashed values cache.
17
+ */ static create(initialArguments = []) {
18
+ return new HashedValuesCache(initialArguments);
19
+ }
20
+ /**
21
+ * Gets preimage of a hash.
22
+ * @param hash - The hash to get the preimage of.
23
+ * @returns The preimage.
24
+ */ getPreimage(hash) {
25
+ if (hash.equals(Fr.ZERO)) {
26
+ return [];
27
+ }
28
+ const hashedValues = this.cache.get(hash.toBigInt());
29
+ if (!hashedValues) {
30
+ throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
31
+ }
32
+ return hashedValues;
33
+ }
34
+ /**
35
+ * Stores values in cache and returns its hash.
36
+ * @param values - The values to store.
37
+ * @returns The hash of the values.
38
+ */ async store(values) {
39
+ if (values.length === 0) {
40
+ return Fr.ZERO;
41
+ }
42
+ const hashedValues = await HashedValues.fromValues(values);
43
+ this.cache.set(hashedValues.hash.toBigInt(), hashedValues.values);
44
+ return hashedValues.hash;
45
+ }
46
+ }
@@ -0,0 +1,13 @@
1
+ export { AcirSimulator } from './simulator.js';
2
+ export { ViewDataOracle } from './view_data_oracle.js';
3
+ export { type DBOracle, ContractClassNotFoundError, ContractNotFoundError } from './db_oracle.js';
4
+ export * from './pick_notes.js';
5
+ export { ExecutionNoteCache } from './execution_note_cache.js';
6
+ export { extractPrivateCircuitPublicInputs, readCurrentClassId } from './private_execution.js';
7
+ export { witnessMapToFields } from './acvm/deserialize.js';
8
+ export { toACVMWitness } from './acvm/serialize.js';
9
+ export { extractCallStack } from './acvm/acvm.js';
10
+ export { type NoteData, TypedOracle } from './acvm/oracle/typed_oracle.js';
11
+ export { Oracle } from './acvm/oracle/oracle.js';
12
+ export { HashedValuesCache } from './hashed_values_cache.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/private/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,KAAK,QAAQ,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAClG,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iCAAiC,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,KAAK,QAAQ,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,12 @@
1
+ export { AcirSimulator } from './simulator.js';
2
+ export { ViewDataOracle } from './view_data_oracle.js';
3
+ export { ContractClassNotFoundError, ContractNotFoundError } from './db_oracle.js';
4
+ export * from './pick_notes.js';
5
+ export { ExecutionNoteCache } from './execution_note_cache.js';
6
+ export { extractPrivateCircuitPublicInputs, readCurrentClassId } from './private_execution.js';
7
+ export { witnessMapToFields } from './acvm/deserialize.js';
8
+ export { toACVMWitness } from './acvm/serialize.js';
9
+ export { extractCallStack } from './acvm/acvm.js';
10
+ export { TypedOracle } from './acvm/oracle/typed_oracle.js';
11
+ export { Oracle } from './acvm/oracle/oracle.js';
12
+ export { HashedValuesCache } from './hashed_values_cache.js';
@@ -1,5 +1,5 @@
1
- import { Comparator, type Note } from '@aztec/circuit-types';
2
1
  import { Fr } from '@aztec/foundation/fields';
2
+ import { Comparator, type Note } from '@aztec/stdlib/note';
3
3
  export interface PropertySelector {
4
4
  index: number;
5
5
  offset: number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick_notes.d.ts","sourceRoot":"","sources":["../../src/private/pick_notes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;OAEG;IACH,QAAQ,EAAE,gBAAgB,CAAC;IAC3B;;OAEG;IACH,KAAK,EAAE,EAAE,CAAC;IACV;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;CACxB;AAED;;GAEG;AACH,oBAAY,SAAS;IACnB,IAAI,IAAI;IACR,IAAI,IAAI;IACR,GAAG,IAAI;CACR;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB;;OAEG;IACH,QAAQ,EAAE,gBAAgB,CAAC;IAC3B;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;CAClB;AAED;;GAEG;AACH,UAAU,UAAU;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC;CACZ;AA8CD;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,YAAY,EAC9C,SAAS,EAAE,CAAC,EAAE,EACd,EAAE,OAAY,EAAE,KAAU,EAAE,KAAS,EAAE,MAAU,EAAE,EAAE,UAAU,GAC9D,CAAC,EAAE,CAIL"}
@@ -0,0 +1,51 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import { Comparator } from '@aztec/stdlib/note';
3
+ /**
4
+ * The order to sort an array.
5
+ */ export var SortOrder = /*#__PURE__*/ function(SortOrder) {
6
+ SortOrder[SortOrder["NADA"] = 0] = "NADA";
7
+ SortOrder[SortOrder["DESC"] = 1] = "DESC";
8
+ SortOrder[SortOrder["ASC"] = 2] = "ASC";
9
+ return SortOrder;
10
+ }({});
11
+ const selectPropertyFromPackedNoteContent = (noteData, selector)=>{
12
+ const noteValueBuffer = noteData[selector.index].toBuffer();
13
+ const noteValue = noteValueBuffer.subarray(selector.offset, selector.offset + selector.length);
14
+ return Fr.fromBuffer(noteValue);
15
+ };
16
+ const selectNotes = (noteDatas, selects)=>noteDatas.filter((noteData)=>selects.every(({ selector, value, comparator })=>{
17
+ const noteValueFr = selectPropertyFromPackedNoteContent(noteData.note.items, selector);
18
+ const comparatorSelector = {
19
+ [Comparator.EQ]: ()=>noteValueFr.equals(value),
20
+ [Comparator.NEQ]: ()=>!noteValueFr.equals(value),
21
+ [Comparator.LT]: ()=>noteValueFr.lt(value),
22
+ [Comparator.LTE]: ()=>noteValueFr.lt(value) || noteValueFr.equals(value),
23
+ [Comparator.GT]: ()=>!noteValueFr.lt(value) && !noteValueFr.equals(value),
24
+ [Comparator.GTE]: ()=>!noteValueFr.lt(value)
25
+ };
26
+ return comparatorSelector[comparator]();
27
+ }));
28
+ const sortNotes = (a, b, sorts, level = 0)=>{
29
+ if (sorts[level] === undefined) {
30
+ return 0;
31
+ }
32
+ const { selector, order } = sorts[level];
33
+ if (order === 0) {
34
+ return 0;
35
+ }
36
+ const aValue = selectPropertyFromPackedNoteContent(a, selector);
37
+ const bValue = selectPropertyFromPackedNoteContent(b, selector);
38
+ const dir = order === 1 ? [
39
+ -1,
40
+ 1
41
+ ] : [
42
+ 1,
43
+ -1
44
+ ];
45
+ return aValue.toBigInt() === bValue.toBigInt() ? sortNotes(a, b, sorts, level + 1) : aValue.toBigInt() > bValue.toBigInt() ? dir[0] : dir[1];
46
+ };
47
+ /**
48
+ * Pick from a note array a number of notes that meet the criteria.
49
+ */ export function pickNotes(noteDatas, { selects = [], sorts = [], limit = 0, offset = 0 }) {
50
+ return selectNotes(noteDatas, selects).sort((a, b)=>sortNotes(a.note.items, b.note.items, sorts)).slice(offset, limit ? offset + limit : undefined);
51
+ }
@@ -0,0 +1,24 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import { type FunctionArtifact, type FunctionSelector } from '@aztec/stdlib/abi';
3
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import type { ContractInstance } from '@aztec/stdlib/contract';
5
+ import type { AztecNode } from '@aztec/stdlib/interfaces/client';
6
+ import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
7
+ import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
8
+ import { type ACVMWitness } from './acvm/index.js';
9
+ import type { ClientExecutionContext } from './client_execution_context.js';
10
+ import type { SimulationProvider } from './providers/simulation_provider.js';
11
+ /**
12
+ * Execute a private function and return the execution result.
13
+ */
14
+ export declare function executePrivateFunction(simulator: SimulationProvider, context: ClientExecutionContext, artifact: FunctionArtifact, contractAddress: AztecAddress, functionSelector: FunctionSelector, log?: import("@aztec/foundation/log").Logger): Promise<PrivateCallExecutionResult>;
15
+ /**
16
+ * Get the private circuit public inputs from the partial witness.
17
+ * @param artifact - The function artifact
18
+ * @param partialWitness - The partial witness, result of simulating the function.
19
+ * @returns - The public inputs.
20
+ */
21
+ export declare function extractPrivateCircuitPublicInputs(artifact: FunctionArtifact, partialWitness: ACVMWitness): PrivateCircuitPublicInputs;
22
+ export declare function readCurrentClassId(contractAddress: AztecAddress, instance: ContractInstance, node: AztecNode, blockNumber: number): Promise<Fr>;
23
+ export declare function verifyCurrentClassId(contractAddress: AztecAddress, instance: ContractInstance, node: AztecNode, blockNumber: number): Promise<void>;
24
+ //# sourceMappingURL=private_execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"private_execution.d.ts","sourceRoot":"","sources":["../../src/private/private_execution.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAI9C,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAsB,MAAM,mBAAmB,CAAC;AACrG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAGlE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAI9D,OAAO,EAAE,KAAK,WAAW,EAA4B,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE7E;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,kBAAkB,EAC7B,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,EAAE,gBAAgB,EAC1B,eAAe,EAAE,YAAY,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,yCAA8C,GAChD,OAAO,CAAC,0BAA0B,CAAC,CA+DrC;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,gBAAgB,EAC1B,cAAc,EAAE,WAAW,GAC1B,0BAA0B,CAa5B;AAED,wBAAsB,kBAAkB,CACtC,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,MAAM,eAWpB;AAED,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,YAAY,EAC7B,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,MAAM,iBAQpB"}
@@ -0,0 +1,90 @@
1
+ import { PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH, PRIVATE_CONTEXT_INPUTS_LENGTH } from '@aztec/constants';
2
+ import { Fr } from '@aztec/foundation/fields';
3
+ import { createLogger } from '@aztec/foundation/log';
4
+ import { Timer } from '@aztec/foundation/timer';
5
+ import { ProtocolContractAddress } from '@aztec/protocol-contracts';
6
+ import { countArgumentsSize } from '@aztec/stdlib/abi';
7
+ import { PrivateCircuitPublicInputs } from '@aztec/stdlib/kernel';
8
+ import { SharedMutableValues, SharedMutableValuesWithHash } from '@aztec/stdlib/shared-mutable';
9
+ import { PrivateCallExecutionResult } from '@aztec/stdlib/tx';
10
+ import { ExecutionError, resolveAssertionMessageFromError } from '../common/errors.js';
11
+ import { fromACVMField, witnessMapToFields } from './acvm/deserialize.js';
12
+ import { Oracle, extractCallStack } from './acvm/index.js';
13
+ /**
14
+ * Execute a private function and return the execution result.
15
+ */ export async function executePrivateFunction(simulator, context, artifact, contractAddress, functionSelector, log = createLogger('simulator:private_execution')) {
16
+ const functionName = await context.getDebugFunctionName();
17
+ log.verbose(`Executing private function ${functionName}`, {
18
+ contract: contractAddress
19
+ });
20
+ const acir = artifact.bytecode;
21
+ const initialWitness = context.getInitialWitness(artifact);
22
+ const acvmCallback = new Oracle(context);
23
+ const timer = new Timer();
24
+ const acirExecutionResult = await simulator.executeUserCircuit(acir, initialWitness, acvmCallback).catch((err)=>{
25
+ err.message = resolveAssertionMessageFromError(err, artifact);
26
+ throw new ExecutionError(err.message, {
27
+ contractAddress,
28
+ functionSelector
29
+ }, extractCallStack(err, artifact.debug), {
30
+ cause: err
31
+ });
32
+ });
33
+ const duration = timer.ms();
34
+ const partialWitness = acirExecutionResult.partialWitness;
35
+ const publicInputs = extractPrivateCircuitPublicInputs(artifact, partialWitness);
36
+ // TODO (alexg) estimate this size
37
+ const initialWitnessSize = witnessMapToFields(initialWitness).length * Fr.SIZE_IN_BYTES;
38
+ log.debug(`Ran external function ${contractAddress.toString()}:${functionSelector}`, {
39
+ circuitName: 'app-circuit',
40
+ duration,
41
+ eventName: 'circuit-witness-generation',
42
+ inputSize: initialWitnessSize,
43
+ outputSize: publicInputs.toBuffer().length,
44
+ appCircuitName: functionName
45
+ });
46
+ const contractClassLogs = context.getContractClassLogs();
47
+ const rawReturnValues = await context.loadFromExecutionCache(publicInputs.returnsHash);
48
+ const noteHashLeafIndexMap = context.getNoteHashLeafIndexMap();
49
+ const newNotes = context.getNewNotes();
50
+ const noteHashNullifierCounterMap = context.getNoteHashNullifierCounterMap();
51
+ const nestedExecutions = context.getNestedExecutions();
52
+ const enqueuedPublicFunctionCalls = context.getEnqueuedPublicFunctionCalls();
53
+ const publicTeardownFunctionCall = context.getPublicTeardownFunctionCall();
54
+ log.debug(`Returning from call to ${contractAddress.toString()}:${functionSelector}`);
55
+ return new PrivateCallExecutionResult(acir, Buffer.from(artifact.verificationKey, 'base64'), partialWitness, publicInputs, noteHashLeafIndexMap, newNotes, noteHashNullifierCounterMap, rawReturnValues, nestedExecutions, enqueuedPublicFunctionCalls, publicTeardownFunctionCall, contractClassLogs);
56
+ }
57
+ /**
58
+ * Get the private circuit public inputs from the partial witness.
59
+ * @param artifact - The function artifact
60
+ * @param partialWitness - The partial witness, result of simulating the function.
61
+ * @returns - The public inputs.
62
+ */ export function extractPrivateCircuitPublicInputs(artifact, partialWitness) {
63
+ const parametersSize = countArgumentsSize(artifact) + PRIVATE_CONTEXT_INPUTS_LENGTH;
64
+ const returnsSize = PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH;
65
+ const returnData = [];
66
+ // Return values always appear in the witness after arguments.
67
+ for(let i = parametersSize; i < parametersSize + returnsSize; i++){
68
+ const returnedField = partialWitness.get(i);
69
+ if (returnedField === undefined) {
70
+ throw new Error(`Missing return value for index ${i}`);
71
+ }
72
+ returnData.push(fromACVMField(returnedField));
73
+ }
74
+ return PrivateCircuitPublicInputs.fromFields(returnData);
75
+ }
76
+ export async function readCurrentClassId(contractAddress, instance, node, blockNumber) {
77
+ const { sharedMutableSlot } = await SharedMutableValuesWithHash.getContractUpdateSlots(contractAddress);
78
+ const sharedMutableValues = await SharedMutableValues.readFromTree(sharedMutableSlot, (slot)=>node.getPublicStorageAt(ProtocolContractAddress.ContractInstanceDeployer, slot, blockNumber));
79
+ let currentClassId = sharedMutableValues.svc.getCurrentAt(blockNumber)[0];
80
+ if (currentClassId.isZero()) {
81
+ currentClassId = instance.originalContractClassId;
82
+ }
83
+ return currentClassId;
84
+ }
85
+ export async function verifyCurrentClassId(contractAddress, instance, node, blockNumber) {
86
+ const currentClassId = await readCurrentClassId(contractAddress, instance, node, blockNumber);
87
+ if (!instance.currentContractClassId.equals(currentClassId)) {
88
+ throw new Error(`Contract ${contractAddress} is outdated, current class id is ${currentClassId}, local class id is ${instance.currentContractClassId}`);
89
+ }
90
+ }
@@ -1,10 +1,10 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  /// <reference types="node" resolution-mode="require"/>
3
- import { type NoirCompiledCircuit } from '@aztec/types/noir';
4
- import { type WitnessMap } from '@noir-lang/types';
5
- import { type ACIRCallback, type ACIRExecutionResult } from '../acvm/acvm.js';
6
- import { type ACVMWitness } from '../acvm/acvm_types.js';
7
- import { type SimulationProvider } from '../common/simulation_provider.js';
3
+ import type { NoirCompiledCircuit } from '@aztec/stdlib/noir';
4
+ import type { WitnessMap } from '@noir-lang/types';
5
+ import type { ACIRCallback, ACIRExecutionResult } from '../acvm/acvm.js';
6
+ import type { ACVMWitness } from '../acvm/acvm_types.js';
7
+ import type { SimulationProvider } from './simulation_provider.js';
8
8
  export declare enum ACVM_RESULT {
9
9
  SUCCESS = 0,
10
10
  FAILURE = 1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acvm_native.d.ts","sourceRoot":"","sources":["../../../src/private/providers/acvm_native.ts"],"names":[],"mappings":";;AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAInE,oBAAY,WAAW;IACrB,OAAO,IAAA;IACP,OAAO,IAAA;CACR;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;AAmBnD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,UAAU,EACxB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,UAAU,CAAC,CAqErB;AAED,qBAAa,mBAAoB,YAAW,kBAAkB;IAChD,OAAO,CAAC,gBAAgB;IAAU,OAAO,CAAC,UAAU;IAAU,OAAO,CAAC,eAAe,CAAC;gBAA9E,gBAAgB,EAAE,MAAM,EAAU,UAAU,EAAE,MAAM,EAAU,eAAe,CAAC,oBAAQ;IACpG,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAyB1G,kBAAkB,CAChB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,WAAW,EAC5B,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,mBAAmB,CAAC;CAGhC"}
@@ -0,0 +1,139 @@
1
+ import { runInDirectory } from '@aztec/foundation/fs';
2
+ import { createLogger } from '@aztec/foundation/log';
3
+ import { Timer } from '@aztec/foundation/timer';
4
+ import * as proc from 'child_process';
5
+ import { promises as fs } from 'fs';
6
+ const logger = createLogger('simulator:acvm-native');
7
+ export var ACVM_RESULT = /*#__PURE__*/ function(ACVM_RESULT) {
8
+ ACVM_RESULT[ACVM_RESULT["SUCCESS"] = 0] = "SUCCESS";
9
+ ACVM_RESULT[ACVM_RESULT["FAILURE"] = 1] = "FAILURE";
10
+ return ACVM_RESULT;
11
+ }({});
12
+ /**
13
+ * Parses a TOML format witness map string into a Map structure
14
+ * @param outputString - The witness map in TOML format
15
+ * @returns The parsed witness map
16
+ */ function parseIntoWitnessMap(outputString) {
17
+ const lines = outputString.split('\n');
18
+ return new Map(lines.filter((line)=>line.length).map((line)=>{
19
+ const pair = line.replaceAll(' ', '').split('=');
20
+ return [
21
+ Number(pair[0]),
22
+ pair[1].replaceAll('"', '')
23
+ ];
24
+ }));
25
+ }
26
+ /**
27
+ *
28
+ * @param inputWitness - The circuit's input witness
29
+ * @param bytecode - The circuit bytecode
30
+ * @param workingDirectory - A directory to use for temporary files by the ACVM
31
+ * @param pathToAcvm - The path to the ACVM binary
32
+ * @param outputFilename - If specified, the output will be stored as a file, encoded using Bincode
33
+ * @returns The completed partial witness outputted from the circuit
34
+ */ export async function executeNativeCircuit(inputWitness, bytecode, workingDirectory, pathToAcvm, outputFilename) {
35
+ const bytecodeFilename = 'bytecode';
36
+ const witnessFilename = 'input_witness.toml';
37
+ // convert the witness map to TOML format
38
+ let witnessMap = '';
39
+ inputWitness.forEach((value, key)=>{
40
+ witnessMap = witnessMap.concat(`${key} = '${value}'\n`);
41
+ });
42
+ try {
43
+ // Check that the directory exists
44
+ await fs.access(workingDirectory);
45
+ } catch (error) {
46
+ return {
47
+ status: 1,
48
+ reason: `Working directory ${workingDirectory} does not exist`
49
+ };
50
+ }
51
+ try {
52
+ // Write the bytecode and input witness to the working directory
53
+ await fs.writeFile(`${workingDirectory}/${bytecodeFilename}`, bytecode);
54
+ await fs.writeFile(`${workingDirectory}/${witnessFilename}`, witnessMap);
55
+ // Execute the ACVM using the given args
56
+ const args = [
57
+ `execute`,
58
+ `--working-directory`,
59
+ `${workingDirectory}`,
60
+ `--bytecode`,
61
+ `${bytecodeFilename}`,
62
+ `--input-witness`,
63
+ `${witnessFilename}`,
64
+ '--print',
65
+ '--output-witness',
66
+ 'output-witness'
67
+ ];
68
+ logger.debug(`Calling ACVM with ${args.join(' ')}`);
69
+ const processPromise = new Promise((resolve, reject)=>{
70
+ let outputWitness = Buffer.alloc(0);
71
+ let errorBuffer = Buffer.alloc(0);
72
+ const acvm = proc.spawn(pathToAcvm, args);
73
+ acvm.stdout.on('data', (data)=>{
74
+ outputWitness = Buffer.concat([
75
+ outputWitness,
76
+ data
77
+ ]);
78
+ });
79
+ acvm.stderr.on('data', (data)=>{
80
+ errorBuffer = Buffer.concat([
81
+ errorBuffer,
82
+ data
83
+ ]);
84
+ });
85
+ acvm.on('close', (code)=>{
86
+ if (code === 0) {
87
+ resolve(outputWitness.toString('utf-8'));
88
+ } else {
89
+ logger.error(`From ACVM: ${errorBuffer.toString('utf-8')}`);
90
+ reject(errorBuffer.toString('utf-8'));
91
+ }
92
+ });
93
+ });
94
+ const duration = new Timer();
95
+ const output = await processPromise;
96
+ if (outputFilename) {
97
+ const outputWitnessFileName = `${workingDirectory}/output-witness.gz`;
98
+ await fs.copyFile(outputWitnessFileName, outputFilename);
99
+ }
100
+ const witness = parseIntoWitnessMap(output);
101
+ return {
102
+ status: 0,
103
+ witness,
104
+ duration: duration.ms()
105
+ };
106
+ } catch (error) {
107
+ return {
108
+ status: 1,
109
+ reason: `${error}`
110
+ };
111
+ }
112
+ }
113
+ export class NativeACVMSimulator {
114
+ workingDirectory;
115
+ pathToAcvm;
116
+ witnessFilename;
117
+ constructor(workingDirectory, pathToAcvm, witnessFilename){
118
+ this.workingDirectory = workingDirectory;
119
+ this.pathToAcvm = pathToAcvm;
120
+ this.witnessFilename = witnessFilename;
121
+ }
122
+ async executeProtocolCircuit(input, compiledCircuit) {
123
+ // Execute the circuit on those initial witness values
124
+ const operation = async (directory)=>{
125
+ // Decode the bytecode from base64 since the acvm does not know about base64 encoding
126
+ const decodedBytecode = Buffer.from(compiledCircuit.bytecode, 'base64');
127
+ // Execute the circuit
128
+ const result = await executeNativeCircuit(input, decodedBytecode, directory, this.pathToAcvm, this.witnessFilename);
129
+ if (result.status == 1) {
130
+ throw new Error(`Failed to generate witness: ${result.reason}`);
131
+ }
132
+ return result.witness;
133
+ };
134
+ return await runInDirectory(this.workingDirectory, operation, false, logger);
135
+ }
136
+ executeUserCircuit(_acir, _initialWitness, _callback) {
137
+ throw new Error('Not implemented');
138
+ }
139
+ }
@@ -1,10 +1,10 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  /// <reference types="node" resolution-mode="require"/>
3
- import { type NoirCompiledCircuit } from '@aztec/types/noir';
4
- import { type WitnessMap } from '@noir-lang/types';
3
+ import type { NoirCompiledCircuit } from '@aztec/stdlib/noir';
4
+ import type { WitnessMap } from '@noir-lang/types';
5
5
  import { type ACIRCallback } from '../acvm/acvm.js';
6
- import { type ACVMWitness } from '../acvm/acvm_types.js';
7
- import { type SimulationProvider } from '../common/simulation_provider.js';
6
+ import type { ACVMWitness } from '../acvm/acvm_types.js';
7
+ import { type SimulationProvider } from './simulation_provider.js';
8
8
  export declare class WASMSimulator implements SimulationProvider {
9
9
  protected log: import("@aztec/foundation/log").Logger;
10
10
  constructor(log?: import("@aztec/foundation/log").Logger);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acvm_wasm.d.ts","sourceRoot":"","sources":["../../../src/private/providers/acvm_wasm.ts"],"names":[],"mappings":";;AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,KAAK,kBAAkB,EAAqB,MAAM,0BAA0B,CAAC;AAEtF,qBAAa,aAAc,YAAW,kBAAkB;IAC1C,SAAS,CAAC,GAAG;gBAAH,GAAG,yCAAiC;IAEpD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrB,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAiCpG,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY;CAI3F"}
@@ -0,0 +1,62 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { foreignCallHandler } from '@aztec/noir-protocol-circuits-types/client';
3
+ import initACVM, { executeCircuit } from '@noir-lang/acvm_js';
4
+ import initAbi from '@noir-lang/noirc_abi';
5
+ import { acvm } from '../acvm/acvm.js';
6
+ import { parseErrorPayload } from './simulation_provider.js';
7
+ export class WASMSimulator {
8
+ log;
9
+ constructor(log = createLogger('wasm-simulator')){
10
+ this.log = log;
11
+ }
12
+ async init() {
13
+ // If these are available, then we are in the
14
+ // web environment. For the node environment, this
15
+ // is a no-op.
16
+ if (typeof initAbi === 'function') {
17
+ /** @ts-expect-error The node bundle doesn't include these default imports, so TS complains */ await Promise.all([
18
+ initAbi(),
19
+ initACVM()
20
+ ]);
21
+ }
22
+ }
23
+ async executeProtocolCircuit(input, compiledCircuit) {
24
+ this.log.debug('init', {
25
+ hash: compiledCircuit.hash
26
+ });
27
+ await this.init();
28
+ // Execute the circuit on those initial witness values
29
+ //
30
+ // Decode the bytecode from base64 since the acvm does not know about base64 encoding
31
+ const decodedBytecode = Buffer.from(compiledCircuit.bytecode, 'base64');
32
+ //
33
+ // Execute the circuit
34
+ try {
35
+ const _witnessMap = await executeCircuit(decodedBytecode, input, foreignCallHandler);
36
+ this.log.debug('execution successful', {
37
+ hash: compiledCircuit.hash
38
+ });
39
+ return _witnessMap;
40
+ } catch (err) {
41
+ // Typescript types catched errors as unknown or any, so we need to narrow its type to check if it has raw assertion payload.
42
+ if (typeof err === 'object' && err !== null && 'rawAssertionPayload' in err) {
43
+ const parsed = parseErrorPayload(compiledCircuit.abi, err);
44
+ this.log.debug('execution failed', {
45
+ hash: compiledCircuit.hash,
46
+ error: parsed,
47
+ message: parsed.message
48
+ });
49
+ throw parsed;
50
+ }
51
+ this.log.debug('execution failed', {
52
+ hash: compiledCircuit.hash,
53
+ error: err
54
+ });
55
+ throw new Error(`Circuit execution failed: ${err}`);
56
+ }
57
+ }
58
+ async executeUserCircuit(acir, initialWitness, callback) {
59
+ await this.init();
60
+ return acvm(acir, initialWitness, callback);
61
+ }
62
+ }
@@ -1,10 +1,10 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  /// <reference types="node" resolution-mode="require"/>
3
- import { type NoirCompiledCircuit } from '@aztec/types/noir';
4
- import { type WitnessMap } from '@noir-lang/types';
5
- import { type ACIRCallback, type ACIRExecutionResult } from '../acvm/acvm.js';
6
- import { type ACVMWitness } from '../acvm/acvm_types.js';
7
- import { type SimulationProvider } from '../common/simulation_provider.js';
3
+ import type { NoirCompiledCircuit } from '@aztec/stdlib/noir';
4
+ import type { WitnessMap } from '@noir-lang/types';
5
+ import type { ACIRCallback, ACIRExecutionResult } from '../acvm/acvm.js';
6
+ import type { ACVMWitness } from '../acvm/acvm_types.js';
7
+ import { type SimulationProvider } from './simulation_provider.js';
8
8
  /**
9
9
  * A simulation provider that uses the WASM simulator with the ability to handle blobs via the foreign call handler.
10
10
  * This class is temporary while brillig cannot handle the blob math, and it is kept separate
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acvm_wasm_with_blobs.d.ts","sourceRoot":"","sources":["../../../src/private/providers/acvm_wasm_with_blobs.ts"],"names":[],"mappings":";;AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,KAAK,kBAAkB,EAAqB,MAAM,0BAA0B,CAAC;AAEtF;;;;;;GAMG;AACH,qBAAa,sBAAuB,YAAW,kBAAkB;IACzD,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAwB1G,kBAAkB,CAChB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,WAAW,EAC5B,SAAS,EAAE,YAAY,GACtB,OAAO,CAAC,mBAAmB,CAAC;CAGhC"}
@@ -1,14 +1,13 @@
1
1
  import { foreignCallHandler } from '@aztec/noir-protocol-circuits-types/server';
2
2
  import { executeCircuit } from '@noir-lang/acvm_js';
3
- import { parseErrorPayload } from '../common/simulation_provider.js';
3
+ import { parseErrorPayload } from './simulation_provider.js';
4
4
  /**
5
5
  * A simulation provider that uses the WASM simulator with the ability to handle blobs via the foreign call handler.
6
6
  * This class is temporary while brillig cannot handle the blob math, and it is kept separate
7
7
  * because the zkg commitment library used in the blob code is not browser compatible.
8
8
  *
9
9
  * It is only used in the context of server-side code executing simulated protocol circuits.
10
- */
11
- export class WASMSimulatorWithBlobs {
10
+ */ export class WASMSimulatorWithBlobs {
12
11
  async executeProtocolCircuit(input, compiledCircuit) {
13
12
  // Execute the circuit on those initial witness values
14
13
  //
@@ -19,8 +18,7 @@ export class WASMSimulatorWithBlobs {
19
18
  try {
20
19
  const _witnessMap = await executeCircuit(decodedBytecode, input, foreignCallHandler);
21
20
  return _witnessMap;
22
- }
23
- catch (err) {
21
+ } catch (err) {
24
22
  // Typescript types catched errors as unknown or any, so we need to narrow its type to check if it has raw assertion payload.
25
23
  if (typeof err === 'object' && err !== null && 'rawAssertionPayload' in err) {
26
24
  throw parseErrorPayload(compiledCircuit.abi, err);
@@ -32,4 +30,3 @@ export class WASMSimulatorWithBlobs {
32
30
  throw new Error('Not implemented');
33
31
  }
34
32
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN2bV93YXNtX3dpdGhfYmxvYnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL2Fjdm1fd2FzbV93aXRoX2Jsb2JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBR2hGLE9BQU8sRUFBdUIsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFLekUsT0FBTyxFQUEyQixpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTlGOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLEtBQWlCLEVBQUUsZUFBb0M7UUFDbEYsc0RBQXNEO1FBQ3RELEVBQUU7UUFDRixxRkFBcUY7UUFDckYsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3hFLEVBQUU7UUFDRixzQkFBc0I7UUFDdEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxXQUFXLEdBQUcsTUFBTSxjQUFjLENBQ3RDLGVBQWUsRUFDZixLQUFLLEVBQ0wsa0JBQWtCLENBQ25CLENBQUM7WUFFRixPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLDZIQUE2SDtZQUM3SCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLHFCQUFxQixJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUM1RSxNQUFNLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBcUIsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQ2hCLEtBQWEsRUFDYixlQUE0QixFQUM1QixTQUF1QjtRQUV2QixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNGIn0=
@@ -1,5 +1,5 @@
1
1
  import { type Logger } from '@aztec/foundation/log';
2
- import { type SimulationProvider } from '../common/simulation_provider.js';
2
+ import type { SimulationProvider } from './simulation_provider.js';
3
3
  export type SimulationProviderConfig = {
4
4
  acvmBinaryPath?: string;
5
5
  acvmWorkingDirectory?: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/private/providers/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAMlE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,MAAM,MAAM,wBAAwB,GAAG;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,wBAAgB,kCAAkC;;;EAMjD;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,wBAAwB,EAChC,MAAM,GAAE,MAAkC,GACzC,OAAO,CAAC,kBAAkB,CAAC,CAa7B"}
@@ -0,0 +1,27 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ import { promises as fs } from 'fs';
3
+ import { NativeACVMSimulator } from './acvm_native.js';
4
+ import { WASMSimulator } from './acvm_wasm.js';
5
+ export function getSimulationProviderConfigFromEnv() {
6
+ const { ACVM_BINARY_PATH, ACVM_WORKING_DIRECTORY } = process.env;
7
+ return {
8
+ acvmWorkingDirectory: ACVM_WORKING_DIRECTORY ? ACVM_WORKING_DIRECTORY : undefined,
9
+ acvmBinaryPath: ACVM_BINARY_PATH ? ACVM_BINARY_PATH : undefined
10
+ };
11
+ }
12
+ export async function createSimulationProvider(config, logger = createLogger('simulator')) {
13
+ if (config.acvmBinaryPath && config.acvmWorkingDirectory) {
14
+ try {
15
+ await fs.access(config.acvmBinaryPath, fs.constants.R_OK);
16
+ await fs.mkdir(config.acvmWorkingDirectory, {
17
+ recursive: true
18
+ });
19
+ logger.info(`Using native ACVM at ${config.acvmBinaryPath} and working directory ${config.acvmWorkingDirectory}`);
20
+ return new NativeACVMSimulator(config.acvmWorkingDirectory, config.acvmBinaryPath);
21
+ } catch {
22
+ logger.warn(`Failed to access ACVM at ${config.acvmBinaryPath}, falling back to WASM`);
23
+ }
24
+ }
25
+ logger.info('Using WASM ACVM simulation');
26
+ return new WASMSimulator();
27
+ }
@@ -1,10 +1,10 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  /// <reference types="node" resolution-mode="require"/>
3
- import { type NoirCompiledCircuit } from '@aztec/types/noir';
4
- import { type ExecutionError } from '@noir-lang/acvm_js';
5
- import { type Abi, type WitnessMap } from '@noir-lang/types';
6
- import { type ACIRCallback, type ACIRExecutionResult } from '../acvm/acvm.js';
7
- import { type ACVMWitness } from '../acvm/acvm_types.js';
3
+ import type { NoirCompiledCircuit } from '@aztec/stdlib/noir';
4
+ import type { ExecutionError } from '@noir-lang/acvm_js';
5
+ import type { Abi, WitnessMap } from '@noir-lang/types';
6
+ import type { ACIRCallback, ACIRExecutionResult } from '../acvm/acvm.js';
7
+ import type { ACVMWitness } from '../acvm/acvm_types.js';
8
8
  /**
9
9
  * Low level simulation interface
10
10
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulation_provider.d.ts","sourceRoot":"","sources":["../../../src/private/providers/simulation_provider.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrG,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrH;AAED,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG;IAAE,uBAAuB,CAAC,EAAE,GAAG,CAAA;CAAE,CAAC;AAIlF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,aAAa,EAAE,cAAc,GAAG,KAAK,CAuBhF"}