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

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 (273) 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 +2 -2
  14. package/dest/public/avm/avm_context.d.ts.map +1 -1
  15. package/dest/public/avm/avm_contract_call_result.d.ts +2 -2
  16. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  17. package/dest/public/avm/avm_execution_environment.d.ts +2 -2
  18. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  19. package/dest/public/avm/avm_execution_environment.js +1 -1
  20. package/dest/public/avm/avm_gas.d.ts +1 -1
  21. package/dest/public/avm/avm_gas.d.ts.map +1 -1
  22. package/dest/public/avm/avm_machine_state.d.ts +2 -2
  23. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  24. package/dest/public/avm/avm_memory_types.d.ts +2 -2
  25. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  26. package/dest/public/avm/avm_memory_types.js +1 -1
  27. package/dest/public/avm/avm_simulator.d.ts +2 -2
  28. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  29. package/dest/public/avm/avm_simulator.js +1 -1
  30. package/dest/public/avm/errors.d.ts +2 -2
  31. package/dest/public/avm/errors.d.ts.map +1 -1
  32. package/dest/public/avm/fixtures/avm_simulation_tester.js +1 -1
  33. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +2 -2
  34. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  35. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +1 -1
  36. package/dest/public/avm/fixtures/initializers.d.ts +2 -2
  37. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
  38. package/dest/public/avm/fixtures/initializers.js +1 -1
  39. package/dest/public/avm/fixtures/utils.d.ts +2 -2
  40. package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
  41. package/dest/public/avm/fixtures/utils.js +1 -1
  42. package/dest/public/avm/opcodes/accrued_substate.d.ts +15 -15
  43. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  44. package/dest/public/avm/opcodes/accrued_substate.js +29 -29
  45. package/dest/public/avm/opcodes/arithmetic.d.ts +10 -8
  46. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  47. package/dest/public/avm/opcodes/arithmetic.js +12 -2
  48. package/dest/public/avm/opcodes/bitwise.d.ts +7 -7
  49. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  50. package/dest/public/avm/opcodes/bitwise.js +5 -5
  51. package/dest/public/avm/opcodes/comparators.d.ts +4 -4
  52. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  53. package/dest/public/avm/opcodes/comparators.js +1 -1
  54. package/dest/public/avm/opcodes/contract.d.ts +3 -3
  55. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  56. package/dest/public/avm/opcodes/contract.js +4 -4
  57. package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
  58. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  59. package/dest/public/avm/opcodes/control_flow.js +4 -4
  60. package/dest/public/avm/opcodes/conversion.d.ts +3 -3
  61. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  62. package/dest/public/avm/opcodes/conversion.js +4 -4
  63. package/dest/public/avm/opcodes/ec_add.d.ts +4 -4
  64. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  65. package/dest/public/avm/opcodes/ec_add.js +17 -8
  66. package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
  67. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  68. package/dest/public/avm/opcodes/environment_getters.js +6 -6
  69. package/dest/public/avm/opcodes/external_calls.d.ts +9 -9
  70. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  71. package/dest/public/avm/opcodes/external_calls.js +17 -16
  72. package/dest/public/avm/opcodes/hashing.d.ts +8 -8
  73. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  74. package/dest/public/avm/opcodes/hashing.js +21 -16
  75. package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
  76. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  77. package/dest/public/avm/opcodes/instruction_impl.js +4 -4
  78. package/dest/public/avm/opcodes/memory.d.ts +14 -14
  79. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  80. package/dest/public/avm/opcodes/memory.js +25 -25
  81. package/dest/public/avm/opcodes/misc.d.ts +3 -3
  82. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  83. package/dest/public/avm/opcodes/misc.js +4 -4
  84. package/dest/public/avm/opcodes/storage.d.ts +7 -7
  85. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  86. package/dest/public/avm/opcodes/storage.js +9 -9
  87. package/dest/public/avm/revert_reason.d.ts +2 -2
  88. package/dest/public/avm/revert_reason.d.ts.map +1 -1
  89. package/dest/public/avm/serialization/instruction_serialization.js +1 -1
  90. package/dest/public/avm/test_utils.d.ts +2 -2
  91. package/dest/public/avm/test_utils.d.ts.map +1 -1
  92. package/dest/public/avm/test_utils.js +1 -1
  93. package/dest/public/contracts_db_checkpoint.d.ts +2 -2
  94. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -1
  95. package/dest/public/db_interfaces.d.ts +2 -2
  96. package/dest/public/db_interfaces.d.ts.map +1 -1
  97. package/dest/public/debug_fn_name.d.ts +2 -2
  98. package/dest/public/debug_fn_name.d.ts.map +1 -1
  99. package/dest/public/debug_fn_name.js +10 -3
  100. package/dest/public/executor_metrics.d.ts +1 -1
  101. package/dest/public/executor_metrics.d.ts.map +1 -1
  102. package/dest/public/executor_metrics.js +8 -34
  103. package/dest/public/fixtures/amm_test.js +2 -2
  104. package/dest/public/fixtures/bulk_test.d.ts +3 -3
  105. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  106. package/dest/public/fixtures/bulk_test.js +5 -69
  107. package/dest/public/fixtures/custom_bytecode_tester.d.ts +28 -6
  108. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  109. package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
  110. package/dest/public/fixtures/custom_bytecode_tests.d.ts +11 -8
  111. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
  112. package/dest/public/fixtures/custom_bytecode_tests.js +83 -18
  113. package/dest/public/fixtures/index.d.ts +4 -2
  114. package/dest/public/fixtures/index.d.ts.map +1 -1
  115. package/dest/public/fixtures/index.js +3 -1
  116. package/dest/public/fixtures/minimal_public_tx.d.ts +2 -7
  117. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -1
  118. package/dest/public/fixtures/minimal_public_tx.js +4 -14
  119. package/dest/public/fixtures/opcode_spammer.d.ts +123 -0
  120. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
  121. package/dest/public/fixtures/opcode_spammer.js +1681 -0
  122. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +15 -2
  123. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  124. package/dest/public/fixtures/public_tx_simulation_tester.js +36 -8
  125. package/dest/public/fixtures/simple_contract_data_source.d.ts +2 -2
  126. package/dest/public/fixtures/simple_contract_data_source.d.ts.map +1 -1
  127. package/dest/public/fixtures/token_test.js +1 -1
  128. package/dest/public/fixtures/utils.d.ts +2 -2
  129. package/dest/public/fixtures/utils.d.ts.map +1 -1
  130. package/dest/public/fixtures/utils.js +4 -3
  131. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +60 -0
  132. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -0
  133. package/dest/public/fuzzing/avm_fuzzer_simulator.js +171 -0
  134. package/dest/public/fuzzing/avm_simulator_bin.d.ts +2 -0
  135. package/dest/public/fuzzing/avm_simulator_bin.d.ts.map +1 -0
  136. package/dest/public/fuzzing/avm_simulator_bin.js +115 -0
  137. package/dest/public/hinting_db_sources.d.ts +3 -2
  138. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  139. package/dest/public/hinting_db_sources.js +7 -2
  140. package/dest/public/index.d.ts +2 -2
  141. package/dest/public/index.d.ts.map +1 -1
  142. package/dest/public/index.js +1 -1
  143. package/dest/public/public_db_sources.d.ts +2 -2
  144. package/dest/public/public_db_sources.d.ts.map +1 -1
  145. package/dest/public/public_db_sources.js +1 -1
  146. package/dest/public/public_processor/guarded_merkle_tree.d.ts +2 -1
  147. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  148. package/dest/public/public_processor/guarded_merkle_tree.js +5 -0
  149. package/dest/public/public_processor/public_processor.d.ts +3 -3
  150. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  151. package/dest/public/public_processor/public_processor.js +425 -32
  152. package/dest/public/public_processor/public_processor_metrics.d.ts +1 -1
  153. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  154. package/dest/public/public_processor/public_processor_metrics.js +12 -45
  155. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +1 -13
  156. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -1
  157. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +18 -53
  158. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +16 -1
  159. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
  160. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +42 -3
  161. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +1 -1
  162. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -1
  163. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +7 -6
  164. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +22 -0
  165. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -0
  166. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +52 -0
  167. package/dest/public/public_tx_simulator/factories.d.ts +13 -0
  168. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -0
  169. package/dest/public/public_tx_simulator/factories.js +28 -0
  170. package/dest/public/public_tx_simulator/index.d.ts +3 -1
  171. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  172. package/dest/public/public_tx_simulator/index.js +2 -0
  173. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +3 -3
  174. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +1 -1
  175. package/dest/public/public_tx_simulator/public_tx_context.d.ts +2 -2
  176. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  177. package/dest/public/public_tx_simulator/public_tx_context.js +1 -1
  178. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +5 -4
  179. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  180. package/dest/public/public_tx_simulator/public_tx_simulator.js +10 -6
  181. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +24 -1
  182. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
  183. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +2 -2
  184. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +1 -1
  185. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +395 -19
  186. package/dest/public/side_effect_trace.d.ts +3 -2
  187. package/dest/public/side_effect_trace.d.ts.map +1 -1
  188. package/dest/public/side_effect_trace.js +1 -1
  189. package/dest/public/side_effect_trace_interface.d.ts +2 -2
  190. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  191. package/dest/public/state_manager/nullifiers.d.ts +2 -2
  192. package/dest/public/state_manager/nullifiers.d.ts.map +1 -1
  193. package/dest/public/state_manager/public_storage.d.ts +2 -2
  194. package/dest/public/state_manager/public_storage.d.ts.map +1 -1
  195. package/dest/public/state_manager/public_storage.js +1 -1
  196. package/dest/public/state_manager/state_manager.d.ts +2 -2
  197. package/dest/public/state_manager/state_manager.d.ts.map +1 -1
  198. package/dest/public/state_manager/state_manager.js +3 -3
  199. package/package.json +18 -18
  200. package/src/common/errors.ts +1 -1
  201. package/src/private/acvm/deserialize.ts +1 -1
  202. package/src/private/acvm/serialize.ts +1 -1
  203. package/src/private/circuit_recording/circuit_recorder.ts +17 -16
  204. package/src/public/avm/avm_context.ts +1 -1
  205. package/src/public/avm/avm_contract_call_result.ts +1 -1
  206. package/src/public/avm/avm_execution_environment.ts +1 -1
  207. package/src/public/avm/avm_gas.ts +3 -3
  208. package/src/public/avm/avm_machine_state.ts +1 -1
  209. package/src/public/avm/avm_memory_types.ts +1 -1
  210. package/src/public/avm/avm_simulator.ts +1 -1
  211. package/src/public/avm/errors.ts +1 -1
  212. package/src/public/avm/fixtures/avm_simulation_tester.ts +1 -1
  213. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +1 -1
  214. package/src/public/avm/fixtures/initializers.ts +1 -1
  215. package/src/public/avm/fixtures/utils.ts +1 -1
  216. package/src/public/avm/opcodes/accrued_substate.ts +15 -15
  217. package/src/public/avm/opcodes/arithmetic.ts +14 -2
  218. package/src/public/avm/opcodes/bitwise.ts +3 -3
  219. package/src/public/avm/opcodes/comparators.ts +1 -1
  220. package/src/public/avm/opcodes/contract.ts +3 -3
  221. package/src/public/avm/opcodes/control_flow.ts +2 -2
  222. package/src/public/avm/opcodes/conversion.ts +3 -3
  223. package/src/public/avm/opcodes/ec_add.ts +15 -6
  224. package/src/public/avm/opcodes/environment_getters.ts +7 -7
  225. package/src/public/avm/opcodes/external_calls.ts +10 -9
  226. package/src/public/avm/opcodes/hashing.ts +16 -10
  227. package/src/public/avm/opcodes/instruction_impl.ts +2 -2
  228. package/src/public/avm/opcodes/memory.ts +19 -19
  229. package/src/public/avm/opcodes/misc.ts +2 -2
  230. package/src/public/avm/opcodes/storage.ts +7 -7
  231. package/src/public/avm/revert_reason.ts +1 -1
  232. package/src/public/avm/serialization/instruction_serialization.ts +1 -1
  233. package/src/public/avm/test_utils.ts +1 -1
  234. package/src/public/contracts_db_checkpoint.ts +1 -1
  235. package/src/public/db_interfaces.ts +1 -1
  236. package/src/public/debug_fn_name.ts +11 -4
  237. package/src/public/executor_metrics.ts +7 -34
  238. package/src/public/fixtures/amm_test.ts +2 -2
  239. package/src/public/fixtures/bulk_test.ts +9 -9
  240. package/src/public/fixtures/custom_bytecode_tester.ts +53 -19
  241. package/src/public/fixtures/custom_bytecode_tests.ts +111 -18
  242. package/src/public/fixtures/index.ts +7 -1
  243. package/src/public/fixtures/minimal_public_tx.ts +6 -15
  244. package/src/public/fixtures/opcode_spammer.ts +1725 -0
  245. package/src/public/fixtures/public_tx_simulation_tester.ts +40 -6
  246. package/src/public/fixtures/simple_contract_data_source.ts +1 -1
  247. package/src/public/fixtures/token_test.ts +1 -1
  248. package/src/public/fixtures/utils.ts +2 -3
  249. package/src/public/fuzzing/avm_fuzzer_simulator.ts +288 -0
  250. package/src/public/fuzzing/avm_simulator_bin.ts +165 -0
  251. package/src/public/hinting_db_sources.ts +6 -2
  252. package/src/public/index.ts +2 -0
  253. package/src/public/public_db_sources.ts +1 -1
  254. package/src/public/public_processor/guarded_merkle_tree.ts +4 -0
  255. package/src/public/public_processor/public_processor.ts +31 -14
  256. package/src/public/public_processor/public_processor_metrics.ts +11 -45
  257. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +19 -60
  258. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +56 -3
  259. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +1 -1
  260. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +7 -10
  261. package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +81 -0
  262. package/src/public/public_tx_simulator/factories.ts +41 -0
  263. package/src/public/public_tx_simulator/index.ts +2 -0
  264. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +1 -1
  265. package/src/public/public_tx_simulator/public_tx_context.ts +1 -1
  266. package/src/public/public_tx_simulator/public_tx_simulator.ts +18 -5
  267. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +23 -0
  268. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +1 -1
  269. package/src/public/side_effect_trace.ts +1 -1
  270. package/src/public/side_effect_trace_interface.ts +1 -1
  271. package/src/public/state_manager/nullifiers.ts +1 -1
  272. package/src/public/state_manager/public_storage.ts +1 -1
  273. 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,
@@ -85,6 +86,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
85
86
  protected contractsDB: PublicContractsDB,
86
87
  protected globalVariables: GlobalVariables,
87
88
  config?: Partial<PublicSimulatorConfig>,
89
+ protected protocolContracts: ProtocolContracts = ProtocolContractsList,
88
90
  ) {
89
91
  this.config = PublicSimulatorConfig.from(config ?? {});
90
92
  this.log = createLogger(`simulator:public_tx_simulator`);
@@ -103,7 +105,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
103
105
  const hints = new AvmExecutionHints(
104
106
  this.globalVariables,
105
107
  AvmTxHint.fromTx(tx, this.globalVariables.gasFees),
106
- ProtocolContractsList, // imported from file
108
+ this.protocolContracts,
107
109
  );
108
110
  const hintingMerkleTree = await HintingMerkleWriteOperations.create(this.merkleTree, hints);
109
111
  const hintingTreesDB = new PublicTreesDB(hintingMerkleTree);
@@ -114,7 +116,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
114
116
  hintingContractsDB,
115
117
  tx,
116
118
  this.globalVariables,
117
- ProtocolContractsList, // imported from file
119
+ this.protocolContracts,
118
120
  this.config.proverId,
119
121
  );
120
122
 
@@ -209,6 +211,16 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
209
211
  (appLogicReturnValues as any).revertReason = context.revertReason;
210
212
  }
211
213
 
214
+ // Create PublicTxEffect from PublicInputs.
215
+ const publicTxEffect = new PublicTxEffect(
216
+ publicInputs.transactionFee,
217
+ publicInputs.accumulatedData.noteHashes.filter(h => !h.isEmpty()),
218
+ publicInputs.accumulatedData.nullifiers.filter(n => !n.isEmpty()),
219
+ publicInputs.accumulatedData.l2ToL1Msgs.filter(m => !m.isEmpty()),
220
+ publicInputs.accumulatedData.publicLogs.toLogs(),
221
+ publicInputs.accumulatedData.publicDataWrites.filter(w => !w.isEmpty()),
222
+ );
223
+
212
224
  return new PublicTxResult(
213
225
  /*gasUsed=*/ {
214
226
  totalGas: context.getActualGasUsed(),
@@ -217,6 +229,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
217
229
  billedGas: context.getTotalGasUsed(),
218
230
  },
219
231
  /*revertCode=*/ revertCode,
232
+ /*publicTxEffect=*/ publicTxEffect,
220
233
  /*callStackMetadata=*/ appLogicReturnValues,
221
234
  /*logs=*/ context.state.getActiveStateManager().getLogs(),
222
235
  /*hints=*/ hints,
@@ -303,7 +316,7 @@ export class PublicTxSimulator implements PublicTxSimulatorInterface {
303
316
  );
304
317
 
305
318
  if (result.reverted) {
306
- const culprit = `${contractAddress}:${callRequest.functionSelector}`;
319
+ const culprit = `${contractAddress}:${fnName}`;
307
320
  context.revert(phase, result.revertReason, culprit);
308
321
  }
309
322
 
@@ -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
  }