@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
@@ -1,38 +1,30 @@
1
- import { MerkleTreeId, type MerkleTreeWriteOperations, PublicExecutionRequest, type Tx } from '@aztec/circuit-types';
2
- import {
3
- type AvmCircuitPublicInputs,
4
- CallContext,
5
- FunctionSelector,
6
- GasFees,
7
- GlobalVariables,
8
- MAX_NOTE_HASHES_PER_TX,
9
- MAX_NULLIFIERS_PER_TX,
10
- NULLIFIER_SUBTREE_HEIGHT,
11
- PUBLIC_DATA_TREE_HEIGHT,
12
- PUBLIC_DISPATCH_SELECTOR,
13
- } from '@aztec/circuits.js';
14
- import { type ContractArtifact, encodeArguments } from '@aztec/foundation/abi';
15
- import { AztecAddress } from '@aztec/foundation/aztec-address';
16
- import { padArrayEnd } from '@aztec/foundation/collection';
1
+ import { PUBLIC_DISPATCH_SELECTOR } from '@aztec/constants';
17
2
  import { Fr } from '@aztec/foundation/fields';
18
- import { AvmTestContractArtifact } from '@aztec/noir-contracts.js/AvmTest';
3
+ import { type ContractArtifact, FunctionSelector, encodeArguments } from '@aztec/stdlib/abi';
4
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
5
+ import { GasFees } from '@aztec/stdlib/gas';
6
+ import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
7
+ import { PublicExecutionRequest, type Tx } from '@aztec/stdlib/tx';
8
+ import { CallContext, GlobalVariables } from '@aztec/stdlib/tx';
19
9
  import { NativeWorldStateService } from '@aztec/world-state';
20
10
 
21
- import { BaseAvmSimulationTester } from '../../avm/fixtures/base_avm_simulation_tester.js';
22
- import { getContractFunctionArtifact, getFunctionSelector } from '../../avm/fixtures/index.js';
23
- import { SimpleContractDataSource } from '../../avm/fixtures/simple_contract_data_source.js';
11
+ import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
12
+ import { getContractFunctionArtifact, getFunctionSelector } from '../avm/fixtures/index.js';
13
+ import { SimpleContractDataSource } from '../avm/fixtures/simple_contract_data_source.js';
24
14
  import { WorldStateDB } from '../public_db_sources.js';
25
- import { type PublicTxResult, PublicTxSimulator } from '../public_tx_simulator.js';
15
+ import { type PublicTxResult, PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js';
26
16
  import { createTxForPublicCalls } from './index.js';
27
17
 
28
18
  const TIMESTAMP = new Fr(99833);
29
19
  const DEFAULT_GAS_FEES = new GasFees(2, 3);
20
+ export const DEFAULT_BLOCK_NUMBER = 42;
30
21
 
31
22
  export type TestEnqueuedCall = {
32
23
  address: AztecAddress;
33
24
  fnName: string;
34
25
  args: any[];
35
26
  isStaticCall?: boolean;
27
+ contractArtifact?: ContractArtifact;
36
28
  };
37
29
 
38
30
  /**
@@ -47,56 +39,59 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
47
39
  private worldStateDB: WorldStateDB,
48
40
  contractDataSource: SimpleContractDataSource,
49
41
  merkleTrees: MerkleTreeWriteOperations,
50
- skipContractDeployments: boolean,
51
42
  ) {
52
- super(contractDataSource, merkleTrees, skipContractDeployments);
43
+ super(contractDataSource, merkleTrees);
53
44
  }
54
45
 
55
- public static async create(skipContractDeployments = false): Promise<PublicTxSimulationTester> {
46
+ public static async create(): Promise<PublicTxSimulationTester> {
56
47
  const contractDataSource = new SimpleContractDataSource();
57
48
  const merkleTrees = await (await NativeWorldStateService.tmp()).fork();
58
49
  const worldStateDB = new WorldStateDB(merkleTrees, contractDataSource);
59
- return new PublicTxSimulationTester(worldStateDB, contractDataSource, merkleTrees, skipContractDeployments);
50
+ return new PublicTxSimulationTester(worldStateDB, contractDataSource, merkleTrees);
60
51
  }
61
52
 
62
- public async simulateTx(
53
+ public async createTx(
63
54
  sender: AztecAddress,
64
55
  setupCalls: TestEnqueuedCall[] = [],
65
56
  appCalls: TestEnqueuedCall[] = [],
66
57
  teardownCall?: TestEnqueuedCall,
67
- feePayer: AztecAddress = AztecAddress.zero(),
68
- ): Promise<PublicTxResult> {
69
- const globals = GlobalVariables.empty();
70
- globals.timestamp = TIMESTAMP;
71
- globals.gasFees = DEFAULT_GAS_FEES;
72
-
73
- const simulator = new PublicTxSimulator(this.merkleTrees, this.worldStateDB, globals, /*doMerkleOperations=*/ true);
74
-
58
+ feePayer: AztecAddress = sender,
59
+ /* need some unique first nullifier for note-nonce computations */
60
+ firstNullifier = new Fr(420000 + this.txCount++),
61
+ ): Promise<Tx> {
75
62
  const setupExecutionRequests: PublicExecutionRequest[] = [];
76
63
  for (let i = 0; i < setupCalls.length; i++) {
77
64
  const address = setupCalls[i].address;
78
- const contractArtifact = await this.contractDataSource.getContractArtifact(address);
65
+ const contractArtifact =
66
+ setupCalls[i].contractArtifact || (await this.contractDataSource.getContractArtifact(address));
67
+ if (!contractArtifact) {
68
+ throw new Error(`Contract artifact not found for address: ${address}`);
69
+ }
79
70
  const req = await executionRequestForCall(
71
+ contractArtifact,
80
72
  sender,
81
73
  address,
82
74
  setupCalls[i].fnName,
83
75
  setupCalls[i].args,
84
76
  setupCalls[i].isStaticCall,
85
- contractArtifact,
86
77
  );
87
78
  setupExecutionRequests.push(req);
88
79
  }
89
80
  const appExecutionRequests: PublicExecutionRequest[] = [];
90
81
  for (let i = 0; i < appCalls.length; i++) {
91
82
  const address = appCalls[i].address;
92
- const contractArtifact = await this.contractDataSource.getContractArtifact(address);
83
+ const contractArtifact =
84
+ appCalls[i].contractArtifact || (await this.contractDataSource.getContractArtifact(address));
85
+ if (!contractArtifact) {
86
+ throw new Error(`Contract artifact not found for address: ${address}`);
87
+ }
93
88
  const req = await executionRequestForCall(
89
+ contractArtifact,
94
90
  sender,
95
91
  address,
96
92
  appCalls[i].fnName,
97
93
  appCalls[i].args,
98
94
  appCalls[i].isStaticCall,
99
- contractArtifact,
100
95
  );
101
96
  appExecutionRequests.push(req);
102
97
  }
@@ -104,71 +99,62 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
104
99
  let teardownExecutionRequest: PublicExecutionRequest | undefined = undefined;
105
100
  if (teardownCall) {
106
101
  const address = teardownCall.address;
107
- const contractArtifact = await this.contractDataSource.getContractArtifact(address);
102
+ const contractArtifact =
103
+ teardownCall.contractArtifact || (await this.contractDataSource.getContractArtifact(address));
104
+ if (!contractArtifact) {
105
+ throw new Error(`Contract artifact not found for address: ${address}`);
106
+ }
108
107
  teardownExecutionRequest = await executionRequestForCall(
108
+ contractArtifact,
109
109
  sender,
110
110
  address,
111
111
  teardownCall.fnName,
112
112
  teardownCall.args,
113
113
  teardownCall.isStaticCall,
114
- contractArtifact,
115
114
  );
116
115
  }
117
116
 
118
- // Use a fake "first nullifier" to make sure note hash nonces are computed properly,
119
- // but make sure each tx has a unique first nullifier.
120
- const firstNullifier = new Fr(420000 + this.txCount++);
121
-
122
- const tx: Tx = await createTxForPublicCalls(
117
+ return await createTxForPublicCalls(
123
118
  firstNullifier,
124
119
  setupExecutionRequests,
125
120
  appExecutionRequests,
126
121
  teardownExecutionRequest,
127
122
  feePayer,
128
123
  );
124
+ }
125
+
126
+ public async simulateTx(
127
+ sender: AztecAddress,
128
+ setupCalls: TestEnqueuedCall[] = [],
129
+ appCalls: TestEnqueuedCall[] = [],
130
+ teardownCall?: TestEnqueuedCall,
131
+ feePayer: AztecAddress = sender,
132
+ /* need some unique first nullifier for note-nonce computations */
133
+ firstNullifier = new Fr(420000 + this.txCount++),
134
+ globals = defaultGlobals(),
135
+ ): Promise<PublicTxResult> {
136
+ const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, firstNullifier);
137
+
138
+ await this.setFeePayerBalance(feePayer);
139
+
140
+ const simulator = new PublicTxSimulator(this.merkleTrees, this.worldStateDB, globals, /*doMerkleOperations=*/ true);
129
141
 
130
142
  const startTime = performance.now();
131
143
  const avmResult = await simulator.simulate(tx);
132
144
  const endTime = performance.now();
133
145
  this.logger.debug(`Public transaction simulation took ${endTime - startTime}ms`);
134
146
 
135
- if (avmResult.revertCode.isOK()) {
136
- await this.commitTxStateUpdates(avmResult.avmProvingRequest.inputs.publicInputs);
137
- }
138
-
139
147
  return avmResult;
140
148
  }
141
-
142
- private async commitTxStateUpdates(avmCircuitInputs: AvmCircuitPublicInputs) {
143
- await this.merkleTrees.appendLeaves(
144
- MerkleTreeId.NOTE_HASH_TREE,
145
- padArrayEnd(avmCircuitInputs.accumulatedData.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
146
- );
147
- try {
148
- await this.merkleTrees.batchInsert(
149
- MerkleTreeId.NULLIFIER_TREE,
150
- padArrayEnd(avmCircuitInputs.accumulatedData.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX).map(n => n.toBuffer()),
151
- NULLIFIER_SUBTREE_HEIGHT,
152
- );
153
- } catch (error) {
154
- this.logger.warn(`Detected duplicate nullifier.`);
155
- }
156
-
157
- await this.merkleTrees.batchInsert(
158
- MerkleTreeId.PUBLIC_DATA_TREE,
159
- avmCircuitInputs.accumulatedData.publicDataWrites.map(w => w.toBuffer()),
160
- PUBLIC_DATA_TREE_HEIGHT,
161
- );
162
- }
163
149
  }
164
150
 
165
151
  async function executionRequestForCall(
152
+ contractArtifact: ContractArtifact,
166
153
  sender: AztecAddress,
167
154
  address: AztecAddress,
168
155
  fnName: string,
169
156
  args: Fr[] = [],
170
157
  isStaticCall: boolean = false,
171
- contractArtifact: ContractArtifact = AvmTestContractArtifact,
172
158
  ): Promise<PublicExecutionRequest> {
173
159
  const fnSelector = await getFunctionSelector(fnName, contractArtifact);
174
160
  const fnAbi = getContractFunctionArtifact(fnName, contractArtifact);
@@ -183,3 +169,11 @@ async function executionRequestForCall(
183
169
  );
184
170
  return new PublicExecutionRequest(callContext, calldata);
185
171
  }
172
+
173
+ function defaultGlobals() {
174
+ const globals = GlobalVariables.empty();
175
+ globals.timestamp = TIMESTAMP;
176
+ globals.gasFees = DEFAULT_GAS_FEES; // apply some nonzero default gas fees
177
+ globals.blockNumber = new Fr(DEFAULT_BLOCK_NUMBER);
178
+ return globals;
179
+ }
@@ -1,27 +1,34 @@
1
- import { type PublicExecutionRequest, Tx } from '@aztec/circuit-types';
2
1
  import {
3
- BlockHeader,
2
+ CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS,
4
3
  DEFAULT_GAS_LIMIT,
5
- FunctionSelector,
6
- Gas,
7
- GasFees,
8
- GasSettings,
4
+ DEPLOYER_CONTRACT_ADDRESS,
9
5
  MAX_L2_GAS_PER_TX_PUBLIC_PORTION,
6
+ PRIVATE_LOG_SIZE_IN_FIELDS,
7
+ REGISTERER_CONTRACT_ADDRESS,
8
+ REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE,
9
+ } from '@aztec/constants';
10
+ import { Fr } from '@aztec/foundation/fields';
11
+ import { assertLength } from '@aztec/foundation/serialize';
12
+ import { DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG } from '@aztec/protocol-contracts';
13
+ import { bufferAsFields } from '@aztec/stdlib/abi';
14
+ import { AztecAddress } from '@aztec/stdlib/aztec-address';
15
+ import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
16
+ import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
17
+ import { siloNullifier } from '@aztec/stdlib/hash';
18
+ import {
10
19
  PartialPrivateTailPublicInputsForPublic,
20
+ PartialPrivateTailPublicInputsForRollup,
11
21
  PrivateKernelTailCircuitPublicInputs,
12
22
  RollupValidationRequests,
13
- TxConstantData,
14
- TxContext,
15
- } from '@aztec/circuits.js';
16
- import { type FunctionArtifact } from '@aztec/foundation/abi';
17
- import { AztecAddress } from '@aztec/foundation/aztec-address';
18
- import { Fr } from '@aztec/foundation/fields';
19
- import { AvmTestContractArtifact } from '@aztec/noir-contracts.js/AvmTest';
23
+ ScopedLogHash,
24
+ countAccumulatedItems,
25
+ } from '@aztec/stdlib/kernel';
26
+ import { ContractClassLog, PrivateLog } from '@aztec/stdlib/logs';
27
+ import { type PublicExecutionRequest, Tx } from '@aztec/stdlib/tx';
28
+ import { BlockHeader, TxConstantData, TxContext } from '@aztec/stdlib/tx';
20
29
 
21
30
  import { strict as assert } from 'assert';
22
31
 
23
- export const PUBLIC_DISPATCH_FN_NAME = 'public_dispatch';
24
-
25
32
  /**
26
33
  * Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
27
34
  */
@@ -44,7 +51,7 @@ export async function createTxForPublicCalls(
44
51
 
45
52
  const forPublic = PartialPrivateTailPublicInputsForPublic.empty();
46
53
  // TODO(#9269): Remove this fake nullifier method as we move away from 1st nullifier as hash.
47
- forPublic.nonRevertibleAccumulatedData.nullifiers[0] = firstNullifier; // fake tx nullifier
54
+ forPublic.nonRevertibleAccumulatedData.nullifiers[0] = firstNullifier;
48
55
 
49
56
  // We reverse order because the simulator expects it to be like a "stack" of calls to pop from
50
57
  for (let i = setupCallRequests.length - 1; i >= 0; i--) {
@@ -84,27 +91,109 @@ export async function createTxForPublicCalls(
84
91
  return tx;
85
92
  }
86
93
 
87
- export function getAvmTestContractFunctionSelector(functionName: string): Promise<FunctionSelector> {
88
- const artifact = AvmTestContractArtifact.functions.find(f => f.name === functionName)!;
89
- assert(!!artifact, `Function ${functionName} not found in AvmTestContractArtifact`);
90
- const params = artifact.parameters;
91
- return FunctionSelector.fromNameAndParameters(artifact.name, params);
92
- }
94
+ export function createTxForPrivateOnly(feePayer = AztecAddress.zero(), gasUsedByPrivate: Gas = new Gas(10, 10)): Tx {
95
+ // use max limits
96
+ const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
93
97
 
94
- export function getAvmTestContractArtifact(functionName: string): FunctionArtifact {
95
- const artifact = AvmTestContractArtifact.functions.find(f => f.name === functionName)!;
96
- assert(
97
- !!artifact?.bytecode,
98
- `No bytecode found for function ${functionName}. Try re-running bootstrap.sh on the repository root.`,
98
+ const forRollup = PartialPrivateTailPublicInputsForRollup.empty();
99
+
100
+ const maxFeesPerGas = feePayer.isZero() ? GasFees.empty() : new GasFees(10, 10);
101
+ const gasSettings = new GasSettings(gasLimits, Gas.empty(), maxFeesPerGas, GasFees.empty());
102
+ const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
103
+ const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
104
+
105
+ const txData = new PrivateKernelTailCircuitPublicInputs(
106
+ constantData,
107
+ RollupValidationRequests.empty(),
108
+ /*gasUsed=*/ gasUsedByPrivate,
109
+ feePayer,
110
+ /*forPublic=*/ undefined,
111
+ forRollup,
99
112
  );
100
- return artifact;
113
+ return Tx.newWithTxData(txData);
101
114
  }
102
115
 
103
- export function getAvmTestContractBytecode(functionName: string): Buffer {
104
- const artifact = getAvmTestContractArtifact(functionName);
105
- return artifact.bytecode;
116
+ export async function addNewContractClassToTx(
117
+ tx: Tx,
118
+ contractClass: ContractClassPublic,
119
+ skipNullifierInsertion = false,
120
+ ) {
121
+ const contractClassLogFields = [
122
+ new Fr(REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE),
123
+ contractClass.id,
124
+ new Fr(contractClass.version),
125
+ new Fr(contractClass.artifactHash),
126
+ new Fr(contractClass.privateFunctionsRoot),
127
+ ...bufferAsFields(contractClass.packedBytecode, Math.ceil(contractClass.packedBytecode.length / 31) + 1),
128
+ ];
129
+ const contractClassLog = ContractClassLog.fromFields([
130
+ new Fr(REGISTERER_CONTRACT_ADDRESS),
131
+ ...contractClassLogFields.concat(
132
+ new Array(CONTRACT_CLASS_LOG_DATA_SIZE_IN_FIELDS - contractClassLogFields.length).fill(Fr.ZERO),
133
+ ),
134
+ ]);
135
+ const contractClassLogHash = ScopedLogHash.fromFields([
136
+ await contractClassLog.hash(),
137
+ new Fr(7),
138
+ new Fr(contractClassLog.getEmittedLength()),
139
+ new Fr(REGISTERER_CONTRACT_ADDRESS),
140
+ ]);
141
+
142
+ const accumulatedData = tx.data.forPublic ? tx.data.forPublic!.revertibleAccumulatedData : tx.data.forRollup!.end;
143
+ if (!skipNullifierInsertion) {
144
+ const nextNullifierIndex = countAccumulatedItems(accumulatedData.nullifiers);
145
+ accumulatedData.nullifiers[nextNullifierIndex] = contractClass.id;
146
+ }
147
+
148
+ const nextLogIndex = countAccumulatedItems(accumulatedData.contractClassLogsHashes);
149
+ accumulatedData.contractClassLogsHashes[nextLogIndex] = contractClassLogHash;
150
+
151
+ tx.contractClassLogs.push(contractClassLog);
106
152
  }
107
153
 
108
- export function getAvmTestContractPublicDispatchBytecode(): Buffer {
109
- return getAvmTestContractBytecode(PUBLIC_DISPATCH_FN_NAME);
154
+ export async function addNewContractInstanceToTx(
155
+ tx: Tx,
156
+ contractInstance: ContractInstanceWithAddress,
157
+ skipNullifierInsertion = false,
158
+ ) {
159
+ // can't use publicKeys.toFields() because it includes isInfinite which
160
+ // is not broadcast in such private logs
161
+ const publicKeysAsFields = [
162
+ contractInstance.publicKeys.masterNullifierPublicKey.x,
163
+ contractInstance.publicKeys.masterNullifierPublicKey.y,
164
+ contractInstance.publicKeys.masterIncomingViewingPublicKey.x,
165
+ contractInstance.publicKeys.masterIncomingViewingPublicKey.y,
166
+ contractInstance.publicKeys.masterOutgoingViewingPublicKey.x,
167
+ contractInstance.publicKeys.masterOutgoingViewingPublicKey.y,
168
+ contractInstance.publicKeys.masterTaggingPublicKey.x,
169
+ contractInstance.publicKeys.masterTaggingPublicKey.y,
170
+ ];
171
+ const fields = [
172
+ DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG,
173
+ contractInstance.address.toField(),
174
+ new Fr(contractInstance.version),
175
+ new Fr(contractInstance.salt),
176
+ contractInstance.currentContractClassId,
177
+ contractInstance.initializationHash,
178
+ ...publicKeysAsFields,
179
+ contractInstance.deployer.toField(),
180
+ new Fr(0),
181
+ new Fr(0),
182
+ new Fr(0),
183
+ ];
184
+ const contractInstanceLog = new PrivateLog(assertLength(fields, PRIVATE_LOG_SIZE_IN_FIELDS));
185
+
186
+ const contractAddressNullifier = await siloNullifier(
187
+ AztecAddress.fromNumber(DEPLOYER_CONTRACT_ADDRESS),
188
+ contractInstance.address.toField(),
189
+ );
190
+
191
+ const accumulatedData = tx.data.forPublic ? tx.data.forPublic!.revertibleAccumulatedData : tx.data.forRollup!.end;
192
+ if (!skipNullifierInsertion) {
193
+ const nextNullifierIndex = countAccumulatedItems(accumulatedData.nullifiers);
194
+ accumulatedData.nullifiers[nextNullifierIndex] = contractAddressNullifier;
195
+ }
196
+
197
+ const nextLogIndex = countAccumulatedItems(accumulatedData.privateLogs);
198
+ accumulatedData.privateLogs[nextLogIndex] = contractInstanceLog;
110
199
  }
@@ -1,8 +1,9 @@
1
- export * from './db_interfaces.js';
2
- export * from './public_tx_simulator.js';
1
+ export * from '../common/db_interfaces.js';
2
+ export * from './public_tx_simulator/public_tx_simulator.js';
3
3
  export { type EnqueuedPublicCallExecutionResult, type PublicFunctionCallResult } from './execution.js';
4
- export * from './fee_payment.js';
5
4
  export * from './public_db_sources.js';
6
- export { PublicProcessor, PublicProcessorFactory } from './public_processor.js';
5
+ export { PublicProcessor, PublicProcessorFactory } from './public_processor/public_processor.js';
7
6
  export { SideEffectTrace } from './side_effect_trace.js';
8
7
  export { getExecutionRequestsByPhase } from './utils.js';
8
+ export { PublicTxSimulationTester } from './fixtures/index.js';
9
+ export * from './avm/index.js';