@aztec/simulator 0.0.1-commit.d3ec352c → 0.0.1-commit.e61ad554

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 (281) hide show
  1. package/README.md +2 -0
  2. package/dest/common/errors.d.ts +8 -2
  3. package/dest/common/errors.d.ts.map +1 -1
  4. package/dest/private/acvm/deserialize.d.ts +2 -2
  5. package/dest/private/acvm/deserialize.d.ts.map +1 -1
  6. package/dest/private/acvm/deserialize.js +1 -1
  7. package/dest/private/acvm/serialize.d.ts +2 -2
  8. package/dest/private/acvm/serialize.d.ts.map +1 -1
  9. package/dest/private/acvm/serialize.js +1 -1
  10. package/dest/private/circuit_recording/circuit_recorder.d.ts +1 -1
  11. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  12. package/dest/private/circuit_recording/circuit_recorder.js +16 -15
  13. package/dest/public/avm/avm_context.d.ts +3 -3
  14. package/dest/public/avm/avm_context.d.ts.map +1 -1
  15. package/dest/public/avm/avm_contract_call_result.d.ts +6 -6
  16. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  17. package/dest/public/avm/avm_contract_call_result.js +3 -3
  18. package/dest/public/avm/avm_execution_environment.d.ts +7 -6
  19. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  20. package/dest/public/avm/avm_execution_environment.js +1 -1
  21. package/dest/public/avm/avm_gas.d.ts +1 -1
  22. package/dest/public/avm/avm_gas.d.ts.map +1 -1
  23. package/dest/public/avm/avm_machine_state.d.ts +7 -6
  24. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  25. package/dest/public/avm/avm_machine_state.js +3 -2
  26. package/dest/public/avm/avm_memory_types.d.ts +2 -2
  27. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  28. package/dest/public/avm/avm_memory_types.js +4 -1
  29. package/dest/public/avm/avm_simulator.d.ts +4 -3
  30. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  31. package/dest/public/avm/avm_simulator.js +6 -5
  32. package/dest/public/avm/calldata.d.ts +51 -0
  33. package/dest/public/avm/calldata.d.ts.map +1 -0
  34. package/dest/public/avm/calldata.js +63 -0
  35. package/dest/public/avm/errors.d.ts +2 -2
  36. package/dest/public/avm/errors.d.ts.map +1 -1
  37. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +1 -1
  38. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  39. package/dest/public/avm/fixtures/avm_simulation_tester.js +4 -3
  40. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +2 -2
  41. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  42. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +1 -1
  43. package/dest/public/avm/fixtures/initializers.d.ts +2 -2
  44. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
  45. package/dest/public/avm/fixtures/initializers.js +3 -2
  46. package/dest/public/avm/fixtures/utils.d.ts +2 -2
  47. package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
  48. package/dest/public/avm/fixtures/utils.js +1 -1
  49. package/dest/public/avm/opcodes/accrued_substate.d.ts +15 -15
  50. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  51. package/dest/public/avm/opcodes/accrued_substate.js +33 -29
  52. package/dest/public/avm/opcodes/arithmetic.d.ts +10 -8
  53. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  54. package/dest/public/avm/opcodes/arithmetic.js +12 -2
  55. package/dest/public/avm/opcodes/bitwise.d.ts +7 -7
  56. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  57. package/dest/public/avm/opcodes/bitwise.js +5 -5
  58. package/dest/public/avm/opcodes/comparators.d.ts +4 -4
  59. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  60. package/dest/public/avm/opcodes/comparators.js +1 -1
  61. package/dest/public/avm/opcodes/contract.d.ts +3 -3
  62. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  63. package/dest/public/avm/opcodes/contract.js +8 -8
  64. package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
  65. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  66. package/dest/public/avm/opcodes/control_flow.js +4 -4
  67. package/dest/public/avm/opcodes/conversion.d.ts +3 -3
  68. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  69. package/dest/public/avm/opcodes/conversion.js +4 -4
  70. package/dest/public/avm/opcodes/ec_add.d.ts +4 -4
  71. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  72. package/dest/public/avm/opcodes/ec_add.js +17 -8
  73. package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
  74. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  75. package/dest/public/avm/opcodes/environment_getters.js +6 -6
  76. package/dest/public/avm/opcodes/external_calls.d.ts +9 -9
  77. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  78. package/dest/public/avm/opcodes/external_calls.js +23 -22
  79. package/dest/public/avm/opcodes/hashing.d.ts +8 -8
  80. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  81. package/dest/public/avm/opcodes/hashing.js +21 -16
  82. package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
  83. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  84. package/dest/public/avm/opcodes/instruction_impl.js +4 -4
  85. package/dest/public/avm/opcodes/memory.d.ts +14 -14
  86. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  87. package/dest/public/avm/opcodes/memory.js +26 -26
  88. package/dest/public/avm/opcodes/misc.d.ts +3 -3
  89. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  90. package/dest/public/avm/opcodes/misc.js +4 -4
  91. package/dest/public/avm/opcodes/storage.d.ts +16 -15
  92. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  93. package/dest/public/avm/opcodes/storage.js +34 -24
  94. package/dest/public/avm/revert_reason.d.ts +2 -2
  95. package/dest/public/avm/revert_reason.d.ts.map +1 -1
  96. package/dest/public/avm/serialization/instruction_serialization.js +1 -1
  97. package/dest/public/avm/test_utils.d.ts +2 -2
  98. package/dest/public/avm/test_utils.d.ts.map +1 -1
  99. package/dest/public/avm/test_utils.js +1 -1
  100. package/dest/public/contracts_db_checkpoint.d.ts +2 -2
  101. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -1
  102. package/dest/public/db_interfaces.d.ts +2 -2
  103. package/dest/public/db_interfaces.d.ts.map +1 -1
  104. package/dest/public/debug_fn_name.d.ts +4 -4
  105. package/dest/public/debug_fn_name.d.ts.map +1 -1
  106. package/dest/public/debug_fn_name.js +14 -5
  107. package/dest/public/executor_metrics.d.ts +1 -1
  108. package/dest/public/executor_metrics.d.ts.map +1 -1
  109. package/dest/public/executor_metrics.js +8 -34
  110. package/dest/public/fixtures/amm_test.js +2 -2
  111. package/dest/public/fixtures/bulk_test.d.ts +3 -3
  112. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  113. package/dest/public/fixtures/bulk_test.js +5 -69
  114. package/dest/public/fixtures/custom_bytecode_tester.d.ts +28 -6
  115. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  116. package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
  117. package/dest/public/fixtures/custom_bytecode_tests.d.ts +11 -8
  118. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
  119. package/dest/public/fixtures/custom_bytecode_tests.js +83 -18
  120. package/dest/public/fixtures/index.d.ts +4 -2
  121. package/dest/public/fixtures/index.d.ts.map +1 -1
  122. package/dest/public/fixtures/index.js +3 -1
  123. package/dest/public/fixtures/minimal_public_tx.d.ts +2 -7
  124. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -1
  125. package/dest/public/fixtures/minimal_public_tx.js +4 -14
  126. package/dest/public/fixtures/opcode_spammer.d.ts +123 -0
  127. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
  128. package/dest/public/fixtures/opcode_spammer.js +1693 -0
  129. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +15 -2
  130. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  131. package/dest/public/fixtures/public_tx_simulation_tester.js +36 -8
  132. package/dest/public/fixtures/simple_contract_data_source.d.ts +2 -2
  133. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
  134. package/dest/public/fixtures/token_test.js +1 -1
  135. package/dest/public/fixtures/utils.d.ts +2 -2
  136. package/dest/public/fixtures/utils.d.ts.map +1 -1
  137. package/dest/public/fixtures/utils.js +4 -3
  138. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +60 -0
  139. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  140. package/dest/public/fuzzing/avm_fuzzer_simulator.js +171 -0
  141. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  142. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  143. package/dest/public/fuzzing/avm_simulator_bin.js +118 -0
  144. package/dest/public/hinting_db_sources.d.ts +3 -2
  145. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  146. package/dest/public/hinting_db_sources.js +7 -2
  147. package/dest/public/index.d.ts +2 -2
  148. package/dest/public/index.d.ts.map +1 -1
  149. package/dest/public/index.js +1 -1
  150. package/dest/public/public_db_sources.d.ts +2 -2
  151. package/dest/public/public_db_sources.d.ts.map +1 -1
  152. package/dest/public/public_db_sources.js +1 -1
  153. package/dest/public/public_processor/guarded_merkle_tree.d.ts +2 -1
  154. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  155. package/dest/public/public_processor/guarded_merkle_tree.js +5 -0
  156. package/dest/public/public_processor/public_processor.d.ts +3 -3
  157. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  158. package/dest/public/public_processor/public_processor.js +425 -32
  159. package/dest/public/public_processor/public_processor_metrics.d.ts +1 -1
  160. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  161. package/dest/public/public_processor/public_processor_metrics.js +12 -45
  162. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +1 -13
  163. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -1
  164. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +18 -53
  165. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +16 -1
  166. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
  167. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +42 -3
  168. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +1 -1
  169. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -1
  170. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +7 -6
  171. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +22 -0
  172. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
  173. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
  174. package/dest/public/public_tx_simulator/factories.d.ts +13 -0
  175. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  176. package/dest/public/public_tx_simulator/factories.js +28 -0
  177. package/dest/public/public_tx_simulator/index.d.ts +3 -1
  178. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  179. package/dest/public/public_tx_simulator/index.js +2 -0
  180. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +3 -3
  181. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -1
  182. package/dest/public/public_tx_simulator/public_tx_context.d.ts +2 -2
  183. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  184. package/dest/public/public_tx_simulator/public_tx_context.js +1 -1
  185. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +5 -4
  186. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  187. package/dest/public/public_tx_simulator/public_tx_simulator.js +14 -9
  188. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +24 -1
  189. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
  190. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +2 -2
  191. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -1
  192. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +395 -19
  193. package/dest/public/side_effect_trace.d.ts +3 -2
  194. package/dest/public/side_effect_trace.d.ts.map +1 -1
  195. package/dest/public/side_effect_trace.js +1 -1
  196. package/dest/public/side_effect_trace_interface.d.ts +2 -2
  197. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  198. package/dest/public/state_manager/nullifiers.d.ts +2 -2
  199. package/dest/public/state_manager/nullifiers.d.ts.map +1 -1
  200. package/dest/public/state_manager/public_storage.d.ts +2 -2
  201. package/dest/public/state_manager/public_storage.d.ts.map +1 -1
  202. package/dest/public/state_manager/public_storage.js +1 -1
  203. package/dest/public/state_manager/state_manager.d.ts +2 -2
  204. package/dest/public/state_manager/state_manager.d.ts.map +1 -1
  205. package/dest/public/state_manager/state_manager.js +3 -3
  206. package/package.json +18 -18
  207. package/src/common/errors.ts +1 -1
  208. package/src/private/acvm/deserialize.ts +1 -1
  209. package/src/private/acvm/serialize.ts +1 -1
  210. package/src/private/circuit_recording/circuit_recorder.ts +17 -16
  211. package/src/public/avm/avm_context.ts +2 -2
  212. package/src/public/avm/avm_contract_call_result.ts +8 -6
  213. package/src/public/avm/avm_execution_environment.ts +10 -5
  214. package/src/public/avm/avm_gas.ts +3 -3
  215. package/src/public/avm/avm_machine_state.ts +7 -6
  216. package/src/public/avm/avm_memory_types.ts +5 -1
  217. package/src/public/avm/avm_simulator.ts +9 -6
  218. package/src/public/avm/calldata.ts +100 -0
  219. package/src/public/avm/errors.ts +1 -1
  220. package/src/public/avm/fixtures/avm_simulation_tester.ts +9 -3
  221. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +1 -1
  222. package/src/public/avm/fixtures/initializers.ts +3 -2
  223. package/src/public/avm/fixtures/utils.ts +1 -1
  224. package/src/public/avm/opcodes/accrued_substate.ts +21 -15
  225. package/src/public/avm/opcodes/arithmetic.ts +14 -2
  226. package/src/public/avm/opcodes/bitwise.ts +3 -3
  227. package/src/public/avm/opcodes/comparators.ts +1 -1
  228. package/src/public/avm/opcodes/contract.ts +4 -7
  229. package/src/public/avm/opcodes/control_flow.ts +2 -2
  230. package/src/public/avm/opcodes/conversion.ts +3 -3
  231. package/src/public/avm/opcodes/ec_add.ts +15 -6
  232. package/src/public/avm/opcodes/environment_getters.ts +7 -7
  233. package/src/public/avm/opcodes/external_calls.ts +17 -15
  234. package/src/public/avm/opcodes/hashing.ts +16 -10
  235. package/src/public/avm/opcodes/instruction_impl.ts +2 -2
  236. package/src/public/avm/opcodes/memory.ts +20 -20
  237. package/src/public/avm/opcodes/misc.ts +2 -2
  238. package/src/public/avm/opcodes/storage.ts +30 -22
  239. package/src/public/avm/revert_reason.ts +1 -1
  240. package/src/public/avm/serialization/instruction_serialization.ts +1 -1
  241. package/src/public/avm/test_utils.ts +1 -1
  242. package/src/public/contracts_db_checkpoint.ts +1 -1
  243. package/src/public/db_interfaces.ts +1 -1
  244. package/src/public/debug_fn_name.ts +17 -8
  245. package/src/public/executor_metrics.ts +7 -34
  246. package/src/public/fixtures/amm_test.ts +2 -2
  247. package/src/public/fixtures/bulk_test.ts +9 -9
  248. package/src/public/fixtures/custom_bytecode_tester.ts +53 -19
  249. package/src/public/fixtures/custom_bytecode_tests.ts +111 -18
  250. package/src/public/fixtures/index.ts +7 -1
  251. package/src/public/fixtures/minimal_public_tx.ts +6 -15
  252. package/src/public/fixtures/opcode_spammer.ts +1754 -0
  253. package/src/public/fixtures/public_tx_simulation_tester.ts +40 -6
  254. package/src/public/fixtures/simple_contract_data_source.ts +1 -1
  255. package/src/public/fixtures/token_test.ts +1 -1
  256. package/src/public/fixtures/utils.ts +2 -3
  257. package/src/public/fuzzing/avm_fuzzer_simulator.ts +288 -0
  258. package/src/public/fuzzing/avm_simulator_bin.ts +175 -0
  259. package/src/public/hinting_db_sources.ts +6 -2
  260. package/src/public/index.ts +2 -0
  261. package/src/public/public_db_sources.ts +1 -1
  262. package/src/public/public_processor/guarded_merkle_tree.ts +4 -0
  263. package/src/public/public_processor/public_processor.ts +31 -14
  264. package/src/public/public_processor/public_processor_metrics.ts +11 -45
  265. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +19 -60
  266. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +56 -3
  267. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +1 -1
  268. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +7 -10
  269. package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +81 -0
  270. package/src/public/public_tx_simulator/factories.ts +41 -0
  271. package/src/public/public_tx_simulator/index.ts +2 -0
  272. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +1 -1
  273. package/src/public/public_tx_simulator/public_tx_context.ts +1 -1
  274. package/src/public/public_tx_simulator/public_tx_simulator.ts +26 -8
  275. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +23 -0
  276. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +1 -1
  277. package/src/public/side_effect_trace.ts +1 -1
  278. package/src/public/side_effect_trace_interface.ts +1 -1
  279. package/src/public/state_manager/nullifiers.ts +1 -1
  280. package/src/public/state_manager/public_storage.ts +1 -1
  281. package/src/public/state_manager/state_manager.ts +4 -18
@@ -1,15 +1,16 @@
1
1
  import { AVM_MAX_PROCESSABLE_L2_GAS } from '@aztec/constants';
2
- import { Fr } from '@aztec/foundation/fields';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
3
  import { type Logger, createLogger } from '@aztec/foundation/log';
4
4
  import { ProtocolContractAddress, ProtocolContractsList } from '@aztec/protocol-contracts';
5
5
  import { computeFeePayerBalanceStorageSlot } from '@aztec/protocol-contracts/fee-juice';
6
- import { AvmExecutionHints, AvmTxHint, PublicSimulatorConfig, PublicTxResult } from '@aztec/stdlib/avm';
6
+ import { AvmExecutionHints, AvmTxHint, PublicSimulatorConfig, PublicTxEffect, PublicTxResult } from '@aztec/stdlib/avm';
7
7
  import { SimulationError } from '@aztec/stdlib/errors';
8
8
  import { Gas } from '@aztec/stdlib/gas';
9
9
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
10
10
  import {
11
11
  type GlobalVariables,
12
12
  NestedProcessReturnValues,
13
+ ProtocolContracts,
13
14
  PublicCallRequestWithCalldata,
14
15
  Tx,
15
16
  TxExecutionPhase,
@@ -18,6 +19,7 @@ import {
18
19
  import { strict as assert } from 'assert';
19
20
 
20
21
  import type { AvmFinalizedCallResult } from '../avm/avm_contract_call_result.js';
22
+ import { CallDataArray } from '../avm/calldata.js';
21
23
  import { AvmSimulator } from '../avm/index.js';
22
24
  import { getPublicFunctionDebugName } from '../debug_fn_name.js';
23
25
  import { HintingMerkleWriteOperations, HintingPublicContractsDB } from '../hinting_db_sources.js';
@@ -85,6 +87,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
85
87
  protected contractsDB: PublicContractsDB,
86
88
  protected globalVariables: GlobalVariables,
87
89
  config?: Partial<PublicSimulatorConfig>,
90
+ protected protocolContracts: ProtocolContracts = ProtocolContractsList,
88
91
  ) {
89
92
  this.config = PublicSimulatorConfig.from(config ?? {});
90
93
  this.log = createLogger(`simulator:public_tx_simulator`);
@@ -103,7 +106,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
103
106
  const hints = new AvmExecutionHints(
104
107
  this.globalVariables,
105
108
  AvmTxHint.fromTx(tx, this.globalVariables.gasFees),
106
- ProtocolContractsList, // imported from file
109
+ this.protocolContracts,
107
110
  );
108
111
  const hintingMerkleTree = await HintingMerkleWriteOperations.create(this.merkleTree, hints);
109
112
  const hintingTreesDB = new PublicTreesDB(hintingMerkleTree);
@@ -114,7 +117,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
114
117
  hintingContractsDB,
115
118
  tx,
116
119
  this.globalVariables,
117
- ProtocolContractsList, // imported from file
120
+ this.protocolContracts,
118
121
  this.config.proverId,
119
122
  );
120
123
 
@@ -209,6 +212,16 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
209
212
  (appLogicReturnValues as any).revertReason = context.revertReason;
210
213
  }
211
214
 
215
+ // Create PublicTxEffect from PublicInputs.
216
+ const publicTxEffect = new PublicTxEffect(
217
+ publicInputs.transactionFee,
218
+ publicInputs.accumulatedData.noteHashes.filter(h => !h.isEmpty()),
219
+ publicInputs.accumulatedData.nullifiers.filter(n => !n.isEmpty()),
220
+ publicInputs.accumulatedData.l2ToL1Msgs.filter(m => !m.isEmpty()),
221
+ publicInputs.accumulatedData.publicLogs.toLogs(),
222
+ publicInputs.accumulatedData.publicDataWrites.filter(w => !w.isEmpty()),
223
+ );
224
+
212
225
  return new PublicTxResult(
213
226
  /*gasUsed=*/ {
214
227
  totalGas: context.getActualGasUsed(),
@@ -217,6 +230,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
217
230
  billedGas: context.getTotalGasUsed(),
218
231
  },
219
232
  /*revertCode=*/ revertCode,
233
+ /*publicTxEffect=*/ publicTxEffect,
220
234
  /*callStackMetadata=*/ appLogicReturnValues,
221
235
  /*logs=*/ context.state.getActiveStateManager().getLogs(),
222
236
  /*hints=*/ hints,
@@ -254,7 +268,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
254
268
 
255
269
  const enqueuedCallResult = await this.simulateEnqueuedCall(phase, context, callRequest);
256
270
 
257
- returnValues.push(new NestedProcessReturnValues(enqueuedCallResult.output));
271
+ returnValues.push(new NestedProcessReturnValues(enqueuedCallResult.output.bestEffortReadAll()));
258
272
 
259
273
  if (enqueuedCallResult.reverted) {
260
274
  reverted = true;
@@ -284,7 +298,11 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
284
298
  ): Promise<AvmFinalizedCallResult> {
285
299
  const stateManager = context.state.getActiveStateManager();
286
300
  const contractAddress = callRequest.request.contractAddress;
287
- const fnName = await getPublicFunctionDebugName(this.contractsDB, contractAddress, callRequest.calldata);
301
+ const fnName = await getPublicFunctionDebugName(
302
+ this.contractsDB,
303
+ contractAddress,
304
+ new CallDataArray(callRequest.calldata),
305
+ );
288
306
 
289
307
  const allocatedGas = context.getGasLeftAtPhase(phase);
290
308
 
@@ -303,7 +321,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
303
321
  );
304
322
 
305
323
  if (result.reverted) {
306
- const culprit = `${contractAddress}:${callRequest.functionSelector}`;
324
+ const culprit = `${contractAddress}:${fnName}`;
307
325
  context.revert(phase, result.revertReason, culprit);
308
326
  }
309
327
 
@@ -344,7 +362,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
344
362
  transactionFee,
345
363
  this.globalVariables,
346
364
  request.isStaticCall,
347
- calldata,
365
+ new CallDataArray(calldata),
348
366
  allocatedGas,
349
367
  this.config,
350
368
  );
@@ -3,8 +3,31 @@ import type { Tx } from '@aztec/stdlib/tx';
3
3
 
4
4
  export interface PublicTxSimulatorInterface {
5
5
  simulate(tx: Tx): Promise<PublicTxResult>;
6
+ /**
7
+ * Cancel the current simulation if one is in progress.
8
+ * This signals the underlying simulator (e.g., C++) to stop at the next safe point.
9
+ * Safe to call even if no simulation is in progress.
10
+ * Optional - not all implementations support cancellation.
11
+ *
12
+ * @param waitTimeoutMs - If provided, wait up to this many ms for the simulation to actually stop.
13
+ * This is important because signaling cancellation doesn't immediately stop C++ -
14
+ * it only sets a flag that C++ checks at certain points. If C++ is in the middle
15
+ * of a slow operation (e.g., pad_trees), it won't stop until that completes.
16
+ * @returns Promise that resolves when cancellation is signaled (and optionally when simulation stops)
17
+ */
18
+ cancel?(waitTimeoutMs?: number): Promise<void>;
6
19
  }
7
20
 
8
21
  export interface MeasuredPublicTxSimulatorInterface {
9
22
  simulate(tx: Tx, txLabel: string): Promise<PublicTxResult>;
23
+ /**
24
+ * Cancel the current simulation if one is in progress.
25
+ * This signals the underlying simulator (e.g., C++) to stop at the next safe point.
26
+ * Safe to call even if no simulation is in progress.
27
+ * Optional - not all implementations support cancellation.
28
+ *
29
+ * @param waitTimeoutMs - If provided, wait up to this many ms for the simulation to actually stop.
30
+ * @returns Promise that resolves when cancellation is signaled (and optionally when simulation stops)
31
+ */
32
+ cancel?(waitTimeoutMs?: number): Promise<void>;
10
33
  }
@@ -1,4 +1,4 @@
1
- import type { Fr } from '@aztec/foundation/fields';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import type { PublicSimulatorConfig } from '@aztec/stdlib/avm';
3
3
  import type { Gas } from '@aztec/stdlib/gas';
4
4
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
@@ -7,8 +7,8 @@ import {
7
7
  MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
8
8
  PROTOCOL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
9
9
  } from '@aztec/constants';
10
+ import { Fr } from '@aztec/foundation/curves/bn254';
10
11
  import { EthAddress } from '@aztec/foundation/eth-address';
11
- import { Fr } from '@aztec/foundation/fields';
12
12
  import { type LogLevel, createLogger } from '@aztec/foundation/log';
13
13
  import { PublicDataUpdateRequest } from '@aztec/stdlib/avm';
14
14
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
@@ -1,4 +1,4 @@
1
- import type { Fr } from '@aztec/foundation/fields';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import type { LogLevel } from '@aztec/foundation/log';
3
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import type { DebugLog } from '@aztec/stdlib/logs';
@@ -1,4 +1,4 @@
1
- import type { Fr } from '@aztec/foundation/fields';
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
2
 
3
3
  import type { PublicTreesDB } from '../public_db_sources.js';
4
4
  import { NullifierCollisionError } from '../side_effect_errors.js';
@@ -1,4 +1,4 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
3
 
4
4
  import type { PublicStateDBInterface } from '../db_interfaces.js';
@@ -1,13 +1,6 @@
1
- import {
2
- CANONICAL_AUTH_REGISTRY_ADDRESS,
3
- CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS,
4
- CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS,
5
- FEE_JUICE_ADDRESS,
6
- MULTI_CALL_ENTRYPOINT_ADDRESS,
7
- ROUTER_ADDRESS,
8
- } from '@aztec/constants';
9
- import { poseidon2Hash } from '@aztec/foundation/crypto';
10
- import { Fr } from '@aztec/foundation/fields';
1
+ import { CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS, MAX_PROTOCOL_CONTRACTS } from '@aztec/constants';
2
+ import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
11
4
  import { jsonStringify } from '@aztec/foundation/json-rpc';
12
5
  import { type LogLevel, createLogger } from '@aztec/foundation/log';
13
6
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
@@ -549,12 +542,5 @@ export class PublicPersistableStateManager {
549
542
  }
550
543
 
551
544
  function contractAddressIsCanonical(contractAddress: AztecAddress): boolean {
552
- return (
553
- contractAddress.equals(AztecAddress.fromNumber(CANONICAL_AUTH_REGISTRY_ADDRESS)) ||
554
- contractAddress.equals(AztecAddress.fromNumber(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS)) ||
555
- contractAddress.equals(AztecAddress.fromNumber(CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS)) ||
556
- contractAddress.equals(AztecAddress.fromNumber(MULTI_CALL_ENTRYPOINT_ADDRESS)) ||
557
- contractAddress.equals(AztecAddress.fromNumber(FEE_JUICE_ADDRESS)) ||
558
- contractAddress.equals(AztecAddress.fromNumber(ROUTER_ADDRESS))
559
- );
545
+ return contractAddress.toBigInt() >= 1 && contractAddress.toBigInt() <= MAX_PROTOCOL_CONTRACTS;
560
546
  }