@aztec/simulator 3.0.3 → 3.9.9-nightly.20260312

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 (256) hide show
  1. package/README.md +6 -4
  2. package/dest/common/errors.d.ts +7 -1
  3. package/dest/common/errors.d.ts.map +1 -1
  4. package/dest/private/acvm/acvm.d.ts +4 -2
  5. package/dest/private/acvm/acvm.d.ts.map +1 -1
  6. package/dest/private/acvm/acvm.js +4 -3
  7. package/dest/private/acvm_native.d.ts +5 -3
  8. package/dest/private/acvm_native.d.ts.map +1 -1
  9. package/dest/private/acvm_native.js +8 -6
  10. package/dest/private/acvm_wasm.d.ts +4 -3
  11. package/dest/private/acvm_wasm.d.ts.map +1 -1
  12. package/dest/private/acvm_wasm.js +4 -4
  13. package/dest/private/circuit_recording/circuit_recorder.d.ts +4 -3
  14. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  15. package/dest/private/circuit_recording/circuit_recorder.js +20 -17
  16. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +3 -2
  17. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  18. package/dest/private/circuit_recording/file_circuit_recorder.js +2 -2
  19. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts +7 -2
  20. package/dest/private/circuit_recording/memory_circuit_recorder.d.ts.map +1 -1
  21. package/dest/private/circuit_recording/memory_circuit_recorder.js +4 -4
  22. package/dest/private/factory.d.ts +3 -3
  23. package/dest/private/factory.d.ts.map +1 -1
  24. package/dest/private/factory.js +7 -4
  25. package/dest/public/avm/avm_context.d.ts +3 -3
  26. package/dest/public/avm/avm_context.d.ts.map +1 -1
  27. package/dest/public/avm/avm_contract_call_result.d.ts +6 -6
  28. package/dest/public/avm/avm_contract_call_result.d.ts.map +1 -1
  29. package/dest/public/avm/avm_contract_call_result.js +3 -3
  30. package/dest/public/avm/avm_execution_environment.d.ts +6 -5
  31. package/dest/public/avm/avm_execution_environment.d.ts.map +1 -1
  32. package/dest/public/avm/avm_gas.js +3 -3
  33. package/dest/public/avm/avm_machine_state.d.ts +6 -5
  34. package/dest/public/avm/avm_machine_state.d.ts.map +1 -1
  35. package/dest/public/avm/avm_machine_state.js +3 -2
  36. package/dest/public/avm/avm_memory_types.d.ts +1 -1
  37. package/dest/public/avm/avm_memory_types.d.ts.map +1 -1
  38. package/dest/public/avm/avm_memory_types.js +3 -0
  39. package/dest/public/avm/avm_simulator.d.ts +3 -2
  40. package/dest/public/avm/avm_simulator.d.ts.map +1 -1
  41. package/dest/public/avm/avm_simulator.js +5 -4
  42. package/dest/public/avm/calldata.d.ts +51 -0
  43. package/dest/public/avm/calldata.d.ts.map +1 -0
  44. package/dest/public/avm/calldata.js +63 -0
  45. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +2 -0
  46. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +1 -0
  47. package/dest/public/avm/fixtures/account_proof_fetcher.js +152 -0
  48. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +1 -1
  49. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +1 -1
  50. package/dest/public/avm/fixtures/avm_simulation_tester.js +3 -2
  51. package/dest/public/avm/fixtures/initializers.d.ts +1 -1
  52. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
  53. package/dest/public/avm/fixtures/initializers.js +2 -1
  54. package/dest/public/avm/opcodes/accrued_substate.d.ts +17 -18
  55. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  56. package/dest/public/avm/opcodes/accrued_substate.js +42 -43
  57. package/dest/public/avm/opcodes/arithmetic.d.ts +8 -8
  58. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  59. package/dest/public/avm/opcodes/arithmetic.js +1 -1
  60. package/dest/public/avm/opcodes/bitwise.d.ts +7 -7
  61. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  62. package/dest/public/avm/opcodes/bitwise.js +5 -5
  63. package/dest/public/avm/opcodes/comparators.d.ts +4 -4
  64. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  65. package/dest/public/avm/opcodes/comparators.js +1 -1
  66. package/dest/public/avm/opcodes/contract.d.ts +3 -3
  67. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  68. package/dest/public/avm/opcodes/contract.js +8 -8
  69. package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
  70. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  71. package/dest/public/avm/opcodes/control_flow.js +4 -4
  72. package/dest/public/avm/opcodes/conversion.d.ts +3 -3
  73. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  74. package/dest/public/avm/opcodes/conversion.js +4 -4
  75. package/dest/public/avm/opcodes/ec_add.d.ts +4 -4
  76. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  77. package/dest/public/avm/opcodes/ec_add.js +15 -6
  78. package/dest/public/avm/opcodes/environment_getters.d.ts +5 -5
  79. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  80. package/dest/public/avm/opcodes/environment_getters.js +6 -6
  81. package/dest/public/avm/opcodes/external_calls.d.ts +9 -9
  82. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  83. package/dest/public/avm/opcodes/external_calls.js +23 -22
  84. package/dest/public/avm/opcodes/hashing.d.ts +8 -8
  85. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  86. package/dest/public/avm/opcodes/hashing.js +18 -15
  87. package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
  88. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  89. package/dest/public/avm/opcodes/instruction_impl.js +4 -4
  90. package/dest/public/avm/opcodes/memory.d.ts +14 -14
  91. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  92. package/dest/public/avm/opcodes/memory.js +25 -25
  93. package/dest/public/avm/opcodes/misc.d.ts +3 -3
  94. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  95. package/dest/public/avm/opcodes/misc.js +4 -4
  96. package/dest/public/avm/opcodes/storage.d.ts +16 -15
  97. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  98. package/dest/public/avm/opcodes/storage.js +34 -24
  99. package/dest/public/avm/serialization/bytecode_serialization.js +3 -3
  100. package/dest/public/avm/serialization/instruction_serialization.d.ts +2 -2
  101. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  102. package/dest/public/avm/serialization/instruction_serialization.js +1 -1
  103. package/dest/public/debug_fn_name.d.ts +4 -4
  104. package/dest/public/debug_fn_name.d.ts.map +1 -1
  105. package/dest/public/debug_fn_name.js +14 -5
  106. package/dest/public/executor_metrics.d.ts +1 -1
  107. package/dest/public/executor_metrics.d.ts.map +1 -1
  108. package/dest/public/executor_metrics.js +12 -33
  109. package/dest/public/fixtures/amm_test.js +2 -2
  110. package/dest/public/fixtures/bulk_test.d.ts +3 -3
  111. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  112. package/dest/public/fixtures/bulk_test.js +4 -68
  113. package/dest/public/fixtures/custom_bytecode_tester.d.ts +28 -6
  114. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  115. package/dest/public/fixtures/custom_bytecode_tester.js +36 -12
  116. package/dest/public/fixtures/custom_bytecode_tests.d.ts +11 -9
  117. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
  118. package/dest/public/fixtures/custom_bytecode_tests.js +66 -22
  119. package/dest/public/fixtures/index.d.ts +4 -2
  120. package/dest/public/fixtures/index.d.ts.map +1 -1
  121. package/dest/public/fixtures/index.js +3 -1
  122. package/dest/public/fixtures/minimal_public_tx.d.ts +2 -7
  123. package/dest/public/fixtures/minimal_public_tx.d.ts.map +1 -1
  124. package/dest/public/fixtures/minimal_public_tx.js +4 -14
  125. package/dest/public/fixtures/opcode_spammer.d.ts +122 -0
  126. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -0
  127. package/dest/public/fixtures/opcode_spammer.js +1653 -0
  128. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +20 -6
  129. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  130. package/dest/public/fixtures/public_tx_simulation_tester.js +43 -16
  131. package/dest/public/fixtures/utils.d.ts +2 -2
  132. package/dest/public/fixtures/utils.d.ts.map +1 -1
  133. package/dest/public/fixtures/utils.js +9 -8
  134. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +21 -7
  135. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
  136. package/dest/public/fuzzing/avm_fuzzer_simulator.js +46 -11
  137. package/dest/public/fuzzing/avm_simulator_bin.js +47 -13
  138. package/dest/public/hinting_db_sources.d.ts +2 -1
  139. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  140. package/dest/public/hinting_db_sources.js +5 -0
  141. package/dest/public/public_db_sources.d.ts +4 -3
  142. package/dest/public/public_db_sources.d.ts.map +1 -1
  143. package/dest/public/public_db_sources.js +4 -4
  144. package/dest/public/public_processor/guarded_merkle_tree.d.ts +2 -1
  145. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  146. package/dest/public/public_processor/guarded_merkle_tree.js +5 -0
  147. package/dest/public/public_processor/public_processor.d.ts +8 -4
  148. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  149. package/dest/public/public_processor/public_processor.js +468 -62
  150. package/dest/public/public_processor/public_processor_metrics.d.ts +2 -2
  151. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  152. package/dest/public/public_processor/public_processor_metrics.js +28 -45
  153. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +3 -2
  154. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -1
  155. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +17 -13
  156. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +20 -5
  157. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
  158. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +50 -12
  159. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +4 -4
  160. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -1
  161. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +7 -7
  162. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +4 -4
  163. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -1
  164. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +8 -7
  165. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +3 -2
  166. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -1
  167. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +2 -2
  168. package/dest/public/public_tx_simulator/factories.d.ts +3 -2
  169. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
  170. package/dest/public/public_tx_simulator/factories.js +4 -4
  171. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +1 -1
  172. package/dest/public/public_tx_simulator/public_tx_context.d.ts +4 -3
  173. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  174. package/dest/public/public_tx_simulator/public_tx_context.js +8 -8
  175. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +6 -4
  176. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  177. package/dest/public/public_tx_simulator/public_tx_simulator.js +14 -9
  178. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts +24 -1
  179. package/dest/public/public_tx_simulator/public_tx_simulator_interface.d.ts.map +1 -1
  180. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +395 -19
  181. package/dest/public/side_effect_trace.d.ts +5 -4
  182. package/dest/public/side_effect_trace.d.ts.map +1 -1
  183. package/dest/public/side_effect_trace.js +3 -3
  184. package/dest/public/state_manager/state_manager.d.ts +10 -4
  185. package/dest/public/state_manager/state_manager.d.ts.map +1 -1
  186. package/dest/public/state_manager/state_manager.js +14 -7
  187. package/dest/public/test_executor_metrics.d.ts +3 -2
  188. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  189. package/dest/public/test_executor_metrics.js +2 -2
  190. package/package.json +17 -17
  191. package/src/private/acvm/acvm.ts +4 -3
  192. package/src/private/acvm_native.ts +11 -5
  193. package/src/private/acvm_wasm.ts +7 -3
  194. package/src/private/circuit_recording/circuit_recorder.ts +21 -18
  195. package/src/private/circuit_recording/file_circuit_recorder.ts +7 -2
  196. package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
  197. package/src/private/factory.ts +7 -4
  198. package/src/public/avm/avm_context.ts +2 -2
  199. package/src/public/avm/avm_contract_call_result.ts +8 -6
  200. package/src/public/avm/avm_execution_environment.ts +9 -4
  201. package/src/public/avm/avm_gas.ts +2 -2
  202. package/src/public/avm/avm_machine_state.ts +6 -5
  203. package/src/public/avm/avm_memory_types.ts +4 -0
  204. package/src/public/avm/avm_simulator.ts +8 -5
  205. package/src/public/avm/calldata.ts +100 -0
  206. package/src/public/avm/fixtures/account_proof.json +553 -0
  207. package/src/public/avm/fixtures/account_proof_fetcher.ts +166 -0
  208. package/src/public/avm/fixtures/avm_simulation_tester.ts +8 -2
  209. package/src/public/avm/fixtures/initializers.ts +2 -1
  210. package/src/public/avm/opcodes/accrued_substate.ts +31 -34
  211. package/src/public/avm/opcodes/arithmetic.ts +1 -1
  212. package/src/public/avm/opcodes/bitwise.ts +3 -3
  213. package/src/public/avm/opcodes/comparators.ts +1 -1
  214. package/src/public/avm/opcodes/contract.ts +4 -7
  215. package/src/public/avm/opcodes/control_flow.ts +2 -2
  216. package/src/public/avm/opcodes/conversion.ts +3 -3
  217. package/src/public/avm/opcodes/ec_add.ts +13 -4
  218. package/src/public/avm/opcodes/environment_getters.ts +7 -7
  219. package/src/public/avm/opcodes/external_calls.ts +17 -15
  220. package/src/public/avm/opcodes/hashing.ts +13 -9
  221. package/src/public/avm/opcodes/instruction_impl.ts +2 -2
  222. package/src/public/avm/opcodes/memory.ts +19 -19
  223. package/src/public/avm/opcodes/misc.ts +2 -2
  224. package/src/public/avm/opcodes/storage.ts +30 -22
  225. package/src/public/avm/serialization/bytecode_serialization.ts +2 -2
  226. package/src/public/avm/serialization/instruction_serialization.ts +1 -1
  227. package/src/public/debug_fn_name.ts +17 -8
  228. package/src/public/executor_metrics.ts +9 -33
  229. package/src/public/fixtures/amm_test.ts +2 -2
  230. package/src/public/fixtures/bulk_test.ts +8 -8
  231. package/src/public/fixtures/custom_bytecode_tester.ts +53 -19
  232. package/src/public/fixtures/custom_bytecode_tests.ts +91 -22
  233. package/src/public/fixtures/index.ts +7 -1
  234. package/src/public/fixtures/minimal_public_tx.ts +5 -14
  235. package/src/public/fixtures/opcode_spammer.ts +1717 -0
  236. package/src/public/fixtures/public_tx_simulation_tester.ts +66 -10
  237. package/src/public/fixtures/utils.ts +7 -7
  238. package/src/public/fuzzing/avm_fuzzer_simulator.ts +68 -13
  239. package/src/public/fuzzing/avm_simulator_bin.ts +64 -10
  240. package/src/public/hinting_db_sources.ts +4 -0
  241. package/src/public/public_db_sources.ts +15 -5
  242. package/src/public/public_processor/guarded_merkle_tree.ts +4 -0
  243. package/src/public/public_processor/public_processor.ts +95 -55
  244. package/src/public/public_processor/public_processor_metrics.ts +16 -44
  245. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +22 -14
  246. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +64 -9
  247. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +7 -5
  248. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +9 -6
  249. package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +3 -1
  250. package/src/public/public_tx_simulator/factories.ts +6 -3
  251. package/src/public/public_tx_simulator/public_tx_context.ts +13 -6
  252. package/src/public/public_tx_simulator/public_tx_simulator.ts +21 -10
  253. package/src/public/public_tx_simulator/public_tx_simulator_interface.ts +23 -0
  254. package/src/public/side_effect_trace.ts +5 -2
  255. package/src/public/state_manager/state_manager.ts +29 -20
  256. package/src/public/test_executor_metrics.ts +3 -3
@@ -1,6 +1,7 @@
1
1
  import { type ContractArtifact } from '@aztec/stdlib/abi';
2
2
  import { PublicSimulatorConfig, type PublicTxResult } from '@aztec/stdlib/avm';
3
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
4
+ import { Gas } from '@aztec/stdlib/gas';
4
5
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
5
6
  import { GlobalVariables, type Tx } from '@aztec/stdlib/tx';
6
7
  import { NativeWorldStateService } from '@aztec/world-state';
@@ -13,7 +14,7 @@ import { type TestPrivateInsertions } from './utils.js';
13
14
  export type TestEnqueuedCall = {
14
15
  sender?: AztecAddress;
15
16
  address: AztecAddress;
16
- fnName: string;
17
+ fnName?: string;
17
18
  args: any[];
18
19
  isStaticCall?: boolean;
19
20
  contractArtifact?: ContractArtifact;
@@ -36,15 +37,15 @@ export declare class PublicTxSimulationTester extends BaseAvmSimulationTester {
36
37
  constructor(merkleTree: MerkleTreeWriteOperations, contractDataSource: SimpleContractDataSource, globals?: GlobalVariables, metrics?: TestExecutorMetrics, simulatorFactory?: MeasuredSimulatorFactory, config?: PublicSimulatorConfig);
37
38
  static create(worldStateService: NativeWorldStateService, globals?: GlobalVariables, metrics?: TestExecutorMetrics, useCppSimulator?: boolean, config?: PublicSimulatorConfig): Promise<PublicTxSimulationTester>;
38
39
  setMetricsPrefix(prefix: string): void;
39
- createTx(sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions): Promise<Tx>;
40
- simulateTx(sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions, txLabel?: string): Promise<PublicTxResult>;
40
+ createTx(sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions, gasLimits?: Gas): Promise<Tx>;
41
+ simulateTx(sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions, txLabel?: string, gasLimits?: Gas): Promise<PublicTxResult>;
41
42
  /**
42
43
  * Just simulate the transaction and return the result.
43
44
  *
44
45
  * This wrapper around simulation allows for easy labeling of a TX
45
46
  * which is especially useful when reporting benchmarks or metrics.
46
47
  */
47
- simulateTxWithLabel(txLabel: string, sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions): Promise<PublicTxResult>;
48
+ simulateTxWithLabel(txLabel: string, sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions, gasLimits?: Gas): Promise<PublicTxResult>;
48
49
  /**
49
50
  * Execute a transaction and return the result.
50
51
  *
@@ -52,8 +53,21 @@ export declare class PublicTxSimulationTester extends BaseAvmSimulationTester {
52
53
  * to do more work (like prove and verify) while still reusing existing
53
54
  * test fixtures (like amm_test). That is why it is not named "simulate*".
54
55
  */
55
- executeTxWithLabel(txLabel: string, sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions): Promise<PublicTxResult>;
56
+ executeTxWithLabel(txLabel: string, sender: AztecAddress, setupCalls?: TestEnqueuedCall[], appCalls?: TestEnqueuedCall[], teardownCall?: TestEnqueuedCall, feePayer?: AztecAddress, privateInsertions?: TestPrivateInsertions, gasLimits?: Gas): Promise<PublicTxResult>;
56
57
  prettyPrintMetrics(): void;
58
+ /**
59
+ * Cancel the current simulation if one is in progress.
60
+ * This signals the underlying simulator (e.g., C++) to stop at the next safe point.
61
+ * Safe to call even if no simulation is in progress.
62
+ *
63
+ * @param waitTimeoutMs - If provided, wait up to this many ms for the simulation to actually stop.
64
+ */
65
+ cancel(waitTimeoutMs?: number): Promise<void>;
66
+ /**
67
+ * Get the underlying simulator for advanced test scenarios.
68
+ * Use this when you need direct control over simulation (e.g., for testing cancellation).
69
+ */
70
+ getSimulator(): MeasuredPublicTxSimulatorInterface;
57
71
  }
58
72
  export declare function defaultGlobals(): GlobalVariables;
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X3NpbXVsYXRpb25fdGVzdGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL2ZpeHR1cmVzL3B1YmxpY190eF9zaW11bGF0aW9uX3Rlc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBbUIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVoRSxPQUFPLEtBQUssRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxlQUFlLEVBQWlDLEtBQUssRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFPeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHNUQsT0FBTyxLQUFLLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNsSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsS0FBSyxxQkFBcUIsRUFBMEIsTUFBTSxZQUFZLENBQUM7QUFJaEYsTUFBTSxNQUFNLGdCQUFnQixHQUFHO0lBQzdCLE1BQU0sQ0FBQyxFQUFFLFlBQVksQ0FBQztJQUN0QixPQUFPLEVBQUUsWUFBWSxDQUFDO0lBQ3RCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDZixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDWixZQUFZLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDdkIsZ0JBQWdCLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztDQUNyQyxDQUFDO0FBV0Y7O0dBRUc7QUFDSCxNQUFNLE1BQU0sd0JBQXdCLEdBQUcsQ0FDckMsVUFBVSxFQUFFLHlCQUF5QixFQUNyQyxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLE9BQU8sRUFBRSxtQkFBbUIsRUFDNUIsTUFBTSxFQUFFLHFCQUFxQixLQUMxQixrQ0FBa0MsQ0FBQztBQUV4Qzs7OztHQUlHO0FBQ0gscUJBQWEsd0JBQXlCLFNBQVEsdUJBQXVCOztJQVNqRSxPQUFPLENBQUMsT0FBTztJQVJqQixTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBSztJQUM5QixPQUFPLENBQUMsU0FBUyxDQUFxQztJQUN0RCxPQUFPLENBQUMsYUFBYSxDQUFDLENBQVM7SUFFL0IsWUFDRSxVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLGtCQUFrQixFQUFFLHdCQUF3QixFQUM1QyxPQUFPLEdBQUUsZUFBa0MsRUFDbkMsT0FBTyxHQUFFLG1CQUErQyxFQUNoRSxnQkFBZ0IsQ0FBQyxFQUFFLHdCQUF3QixFQUMzQyxNQUFNLEdBQUUscUJBQXFDLEVBVTlDO0lBRUQsT0FBb0IsTUFBTSxDQUN4QixpQkFBaUIsRUFBRSx1QkFBdUIsRUFDMUMsT0FBTyxHQUFFLGVBQWtDLEVBQzNDLE9BQU8sR0FBRSxtQkFBK0MsRUFDeEQsZUFBZSxVQUFRLEVBQ3ZCLE1BQU0sR0FBRSxxQkFBcUMsR0FDNUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBT25DO0lBRU0sZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE1BQU0sUUFFckM7SUFFWSxRQUFRLENBQ25CLE1BQU0sRUFBRSxZQUFZLEVBQ3BCLFVBQVUsR0FBRSxnQkFBZ0IsRUFBTyxFQUNuQyxRQUFRLEdBQUUsZ0JBQWdCLEVBQU8sRUFDakMsWUFBWSxDQUFDLEVBQUUsZ0JBQWdCLEVBQy9CLFFBQVEsR0FBRSxZQUFxQixFQUUvQixpQkFBaUIsR0FBRSxxQkFBMEYsR0FDNUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQXVCYjtJQUVZLFVBQVUsQ0FDckIsTUFBTSxFQUFFLFlBQVksRUFDcEIsVUFBVSxHQUFFLGdCQUFnQixFQUFPLEVBQ25DLFFBQVEsR0FBRSxnQkFBZ0IsRUFBTyxFQUNqQyxZQUFZLENBQUMsRUFBRSxnQkFBZ0IsRUFDL0IsUUFBUSxHQUFFLFlBQXFCLEVBRS9CLGlCQUFpQixDQUFDLEVBQUUscUJBQXFCLEVBQ3pDLE9BQU8sR0FBRSxNQUFzQixHQUM5QixPQUFPLENBQUMsY0FBYyxDQUFDLENBNEJ6QjtJQUVEOzs7OztPQUtHO0lBQ1UsbUJBQW1CLENBQzlCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsTUFBTSxFQUFFLFlBQVksRUFDcEIsVUFBVSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsRUFDL0IsUUFBUSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsRUFDN0IsWUFBWSxDQUFDLEVBQUUsZ0JBQWdCLEVBQy9CLFFBQVEsQ0FBQyxFQUFFLFlBQVksRUFDdkIsaUJBQWlCLENBQUMsRUFBRSxxQkFBcUIsR0FDeEMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUV6QjtJQUVEOzs7Ozs7T0FNRztJQUNVLGtCQUFrQixDQUM3QixPQUFPLEVBQUUsTUFBTSxFQUNmLE1BQU0sRUFBRSxZQUFZLEVBQ3BCLFVBQVUsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLEVBQy9CLFFBQVEsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLEVBQzdCLFlBQVksQ0FBQyxFQUFFLGdCQUFnQixFQUMvQixRQUFRLENBQUMsRUFBRSxZQUFZLEVBQ3ZCLGlCQUFpQixDQUFDLEVBQUUscUJBQXFCLEdBQ3hDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FVekI7SUFFTSxrQkFBa0IsU0FFeEI7Q0FxQkY7QUFFRCx3QkFBZ0IsY0FBYyxvQkFNN0IifQ==
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X3NpbXVsYXRpb25fdGVzdGVyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL2ZpeHR1cmVzL3B1YmxpY190eF9zaW11bGF0aW9uX3Rlc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBbUIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMvRSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFXLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVqRixPQUFPLEVBQUUsZUFBZSxFQUFpQyxLQUFLLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTdELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBT3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzVELE9BQU8sS0FBSyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0seURBQXlELENBQUM7QUFDbEgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUUsT0FBTyxFQUFFLEtBQUsscUJBQXFCLEVBQTBCLE1BQU0sWUFBWSxDQUFDO0FBSWhGLE1BQU0sTUFBTSxnQkFBZ0IsR0FBRztJQUM3QixNQUFNLENBQUMsRUFBRSxZQUFZLENBQUM7SUFDdEIsT0FBTyxFQUFFLFlBQVksQ0FBQztJQUN0QixNQUFNLENB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
@@ -1 +1 @@
1
- {"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public_tx_simulation_tester.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/public_tx_simulation_tester.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT } from '@aztec/constants';
1
+ import { DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT, PUBLIC_TX_L2_GAS_OVERHEAD, TX_DA_GAS_OVERHEAD } from '@aztec/constants';
2
2
  import { asyncMap } from '@aztec/foundation/async-map';
3
3
  import { BlockNumber } from '@aztec/foundation/branded-types';
4
4
  import { Fr } from '@aztec/foundation/curves/bn254';
@@ -57,15 +57,15 @@ const defaultConfig = PublicSimulatorConfig.from({
57
57
  new Fr(420000 + this.txCount)
58
58
  ]
59
59
  }
60
- }) {
60
+ }, gasLimits) {
61
61
  const setupCallRequests = await asyncMap(setupCalls, (call)=>this.#createPubicCallRequestForCall(call, call.sender ?? sender));
62
62
  const appCallRequests = await asyncMap(appCalls, (call)=>this.#createPubicCallRequestForCall(call, call.sender ?? sender));
63
63
  const teardownCallRequest = teardownCall ? await this.#createPubicCallRequestForCall(teardownCall, teardownCall.sender ?? sender) : undefined;
64
64
  this.txCount++;
65
- return createTxForPublicCalls(privateInsertions, setupCallRequests, appCallRequests, teardownCallRequest, feePayer, /*gasUsedByPrivate*/ teardownCall ? new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT) : Gas.empty(), defaultGlobals());
65
+ return createTxForPublicCalls(privateInsertions, setupCallRequests, appCallRequests, teardownCallRequest, feePayer, /*gasUsedByPrivate*/ teardownCall ? new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT + TX_DA_GAS_OVERHEAD, DEFAULT_TEARDOWN_L2_GAS_LIMIT + PUBLIC_TX_L2_GAS_OVERHEAD) : new Gas(TX_DA_GAS_OVERHEAD, PUBLIC_TX_L2_GAS_OVERHEAD), defaultGlobals(), gasLimits);
66
66
  }
67
- async simulateTx(sender, setupCalls = [], appCalls = [], teardownCall, feePayer = sender, /* need some unique first nullifier for note-nonce computations */ privateInsertions, txLabel = 'unlabeledTx') {
68
- const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions);
67
+ async simulateTx(sender, setupCalls = [], appCalls = [], teardownCall, feePayer = sender, /* need some unique first nullifier for note-nonce computations */ privateInsertions, txLabel = 'unlabeledTx', gasLimits) {
68
+ const tx = await this.createTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, gasLimits);
69
69
  await this.setFeePayerBalance(feePayer);
70
70
  const txLabelWithCount = `${txLabel}/${this.txCount - 1}`;
71
71
  const fullTxLabel = this.metricsPrefix ? `${this.metricsPrefix}/${txLabelWithCount}` : txLabelWithCount;
@@ -90,8 +90,8 @@ const defaultConfig = PublicSimulatorConfig.from({
90
90
  *
91
91
  * This wrapper around simulation allows for easy labeling of a TX
92
92
  * which is especially useful when reporting benchmarks or metrics.
93
- */ async simulateTxWithLabel(txLabel, sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions) {
94
- return await this.simulateTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, txLabel);
93
+ */ async simulateTxWithLabel(txLabel, sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, gasLimits) {
94
+ return await this.simulateTx(sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, txLabel, gasLimits);
95
95
  }
96
96
  /**
97
97
  * Execute a transaction and return the result.
@@ -99,25 +99,52 @@ const defaultConfig = PublicSimulatorConfig.from({
99
99
  * This function can be (it is) overridden by a subclass (AvmProvingTester)
100
100
  * to do more work (like prove and verify) while still reusing existing
101
101
  * test fixtures (like amm_test). That is why it is not named "simulate*".
102
- */ async executeTxWithLabel(txLabel, sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions) {
103
- return await this.simulateTxWithLabel(txLabel, sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions);
102
+ */ async executeTxWithLabel(txLabel, sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, gasLimits) {
103
+ return await this.simulateTxWithLabel(txLabel, sender, setupCalls, appCalls, teardownCall, feePayer, privateInsertions, gasLimits);
104
104
  }
105
105
  prettyPrintMetrics() {
106
106
  this.metrics.prettyPrint();
107
107
  }
108
+ /**
109
+ * Cancel the current simulation if one is in progress.
110
+ * This signals the underlying simulator (e.g., C++) to stop at the next safe point.
111
+ * Safe to call even if no simulation is in progress.
112
+ *
113
+ * @param waitTimeoutMs - If provided, wait up to this many ms for the simulation to actually stop.
114
+ */ async cancel(waitTimeoutMs) {
115
+ await this.simulator.cancel?.(waitTimeoutMs);
116
+ }
117
+ /**
118
+ * Get the underlying simulator for advanced test scenarios.
119
+ * Use this when you need direct control over simulation (e.g., for testing cancellation).
120
+ */ getSimulator() {
121
+ return this.simulator;
122
+ }
108
123
  async #createPubicCallRequestForCall(call, sender) {
109
124
  const address = call.address;
110
125
  const contractArtifact = call.contractArtifact || await this.contractDataSource.getContractArtifact(address);
111
126
  if (!contractArtifact) {
112
127
  throw new Error(`Contract artifact not found for address: ${address}`);
113
128
  }
114
- const fnSelector = await getFunctionSelector(call.fnName, contractArtifact);
115
- const fnAbi = getContractFunctionAbi(call.fnName, contractArtifact);
116
- const encodedArgs = encodeArguments(fnAbi, call.args);
117
- const calldata = [
118
- fnSelector.toField(),
119
- ...encodedArgs
120
- ];
129
+ let calldata = [];
130
+ if (!call.fnName) {
131
+ this.logger.debug(`No function name specified for call to contract ${call.address.toString()}. Assuming this is a custom bytecode with no public_dispatch function.`);
132
+ this.logger.debug(`Not using ABI to encode arguments. Not prepending fn selector to calldata.`);
133
+ try {
134
+ calldata = call.args.map((arg)=>new Fr(arg));
135
+ } catch (error) {
136
+ this.logger.warn(`Tried assuming that all arguments are Field-like. Failed. Error: ${error}`);
137
+ throw error;
138
+ }
139
+ } else {
140
+ const fnSelector = await getFunctionSelector(call.fnName, contractArtifact);
141
+ const fnAbi = getContractFunctionAbi(call.fnName, contractArtifact);
142
+ const encodedArgs = encodeArguments(fnAbi, call.args);
143
+ calldata = [
144
+ fnSelector.toField(),
145
+ ...encodedArgs
146
+ ];
147
+ }
121
148
  const isStaticCall = call.isStaticCall ?? false;
122
149
  const request = await PublicCallRequest.fromCalldata(sender, address, isStaticCall, calldata);
123
150
  return new PublicCallRequestWithCalldata(request, calldata);
@@ -19,8 +19,8 @@ export type TestPrivateInsertions = {
19
19
  /**
20
20
  * Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
21
21
  */
22
- export declare function createTxForPublicCalls(privateInsertions: TestPrivateInsertions, setupCallRequests: PublicCallRequestWithCalldata[], appCallRequests: PublicCallRequestWithCalldata[], teardownCallRequest?: PublicCallRequestWithCalldata, feePayer?: AztecAddress, gasUsedByPrivate?: Gas, globals?: GlobalVariables): Promise<Tx>;
22
+ export declare function createTxForPublicCalls(privateInsertions: TestPrivateInsertions, setupCallRequests: PublicCallRequestWithCalldata[], appCallRequests: PublicCallRequestWithCalldata[], teardownCallRequest?: PublicCallRequestWithCalldata, feePayer?: AztecAddress, gasUsedByPrivate?: Gas, globals?: GlobalVariables, gasLimits?: Gas): Promise<Tx>;
23
23
  export declare function createTxForPrivateOnly(feePayer?: AztecAddress, gasUsedByPrivate?: Gas): Promise<Tx>;
24
24
  export declare function addNewContractClassToTx(tx: Tx, contractClass: ContractClassPublic, skipNullifierInsertion?: boolean): Promise<void>;
25
25
  export declare function addNewContractInstanceToTx(tx: Tx, contractInstance: ContractInstanceWithAddress, skipNullifierInsertion?: boolean): Promise<void>;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvZml4dHVyZXMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9GLE9BQU8sRUFBRSxHQUFHLEVBQXdCLE1BQU0sbUJBQW1CLENBQUM7QUFVOUQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxPQUFPLEVBRUwsZUFBZSxFQUVmLDZCQUE2QixFQUM3QixFQUFFLEVBR0gsTUFBTSxrQkFBa0IsQ0FBQztBQUkxQixNQUFNLE1BQU0scUJBQXFCLEdBQUc7SUFDbEMsVUFBVSxDQUFDLEVBQUU7UUFDWCxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNsQixVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNsQixVQUFVLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO0tBQ3BDLENBQUM7SUFDRixhQUFhLENBQUMsRUFBRTtRQUNkLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLENBQUM7S0FDcEMsQ0FBQztDQUNILENBQUM7QUFFRjs7R0FFRztBQUNILHdCQUFzQixzQkFBc0IsQ0FDMUMsaUJBQWlCLEVBQUUscUJBQXFCLEVBQ3hDLGlCQUFpQixFQUFFLDZCQUE2QixFQUFFLEVBQ2xELGVBQWUsRUFBRSw2QkFBNkIsRUFBRSxFQUNoRCxtQkFBbUIsQ0FBQyxFQUFFLDZCQUE2QixFQUNuRCxRQUFRLGVBQXNCLEVBQzlCLGdCQUFnQixHQUFFLEdBQWlCLEVBQ25DLE9BQU8sR0FBRSxlQUF5QyxHQUNqRCxPQUFPLENBQUMsRUFBRSxDQUFDLENBK0ZiO0FBRUQsd0JBQXNCLHNCQUFzQixDQUMxQyxRQUFRLGVBQXNCLEVBQzlCLGdCQUFnQixHQUFFLEdBQXFCLEdBQ3RDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0EwQmI7QUFFRCx3QkFBc0IsdUJBQXVCLENBQzNDLEVBQUUsRUFBRSxFQUFFLEVBQ04sYUFBYSxFQUFFLG1CQUFtQixFQUNsQyxzQkFBc0IsVUFBUSxpQkE2Qi9CO0FBRUQsd0JBQXNCLDBCQUEwQixDQUM5QyxFQUFFLEVBQUUsRUFBRSxFQUNOLGdCQUFnQixFQUFFLDJCQUEyQixFQUM3QyxzQkFBc0IsVUFBUSxpQkEwQy9CIn0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvZml4dHVyZXMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR3BELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9GLE9BQU8sRUFBRSxHQUFHLEVBQXdCLE1BQU0sbUJBQW1CLENBQUM7QUFVOUQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxPQUFPLEVBRUwsZUFBZSxFQUVmLDZCQUE2QixFQUM3QixFQUFFLEVBR0gsTUFBTSxrQkFBa0IsQ0FBQztBQUkxQixNQUFNLE1BQU0scUJBQXFCLEdBQUc7SUFDbEMsVUFBVSxDQUFDLEVBQUU7UUFDWCxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNsQixVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNsQixVQUFVLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDO0tBQ3BDLENBQUM7SUFDRixhQUFhLENBQUMsRUFBRTtRQUNkLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsQ0FBQyxFQUFFLG1CQUFtQixFQUFFLENBQUM7S0FDcEMsQ0FBQztDQUNILENBQUM7QUFFRjs7R0FFRztBQUNILHdCQUFzQixzQkFBc0IsQ0FDMUMsaUJBQWlCLEVBQUUscUJBQXFCLEVBQ3hDLGlCQUFpQixFQUFFLDZCQUE2QixFQUFFLEVBQ2xELGVBQWUsRUFBRSw2QkFBNkIsRUFBRSxFQUNoRCxtQkFBbUIsQ0FBQyxFQUFFLDZCQUE2QixFQUNuRCxRQUFRLGVBQXNCLEVBQzlCLGdCQUFnQixHQUFFLEdBQWlCLEVBQ25DLE9BQU8sR0FBRSxlQUF5QyxFQUNsRCxTQUFTLENBQUMsRUFBRSxHQUFHLEdBQ2QsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQThGYjtBQUVELHdCQUFzQixzQkFBc0IsQ0FDMUMsUUFBUSxlQUFzQixFQUM5QixnQkFBZ0IsR0FBRSxHQUFxQixHQUN0QyxPQUFPLENBQUMsRUFBRSxDQUFDLENBMEJiO0FBRUQsd0JBQXNCLHVCQUF1QixDQUMzQyxFQUFFLEVBQUUsRUFBRSxFQUNOLGFBQWEsRUFBRSxtQkFBbUIsRUFDbEMsc0JBQXNCLFVBQVEsaUJBNkIvQjtBQUVELHdCQUFzQiwwQkFBMEIsQ0FDOUMsRUFBRSxFQUFFLEVBQUUsRUFDTixnQkFBZ0IsRUFBRSwyQkFBMkIsRUFDN0Msc0JBQXNCLFVBQVEsaUJBMEMvQiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/utils.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,GAAG,EAAwB,MAAM,mBAAmB,CAAC;AAU9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAEL,eAAe,EAEf,6BAA6B,EAC7B,EAAE,EAGH,MAAM,kBAAkB,CAAC;AAI1B,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,CAAC,EAAE;QACX,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;IACF,aAAa,CAAC,EAAE;QACd,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,iBAAiB,EAAE,qBAAqB,EACxC,iBAAiB,EAAE,6BAA6B,EAAE,EAClD,eAAe,EAAE,6BAA6B,EAAE,EAChD,mBAAmB,CAAC,EAAE,6BAA6B,EACnD,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAiB,EACnC,OAAO,GAAE,eAAyC,GACjD,OAAO,CAAC,EAAE,CAAC,CA+Fb;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAqB,GACtC,OAAO,CAAC,EAAE,CAAC,CA0Bb;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,aAAa,EAAE,mBAAmB,EAClC,sBAAsB,UAAQ,iBA6B/B;AAED,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,EAAE,EACN,gBAAgB,EAAE,2BAA2B,EAC7C,sBAAsB,UAAQ,iBA0C/B"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/public/fixtures/utils.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,GAAG,EAAwB,MAAM,mBAAmB,CAAC;AAU9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAEL,eAAe,EAEf,6BAA6B,EAC7B,EAAE,EAGH,MAAM,kBAAkB,CAAC;AAI1B,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,CAAC,EAAE;QACX,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;IACF,aAAa,CAAC,EAAE;QACd,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC;QAClB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACpC,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,iBAAiB,EAAE,qBAAqB,EACxC,iBAAiB,EAAE,6BAA6B,EAAE,EAClD,eAAe,EAAE,6BAA6B,EAAE,EAChD,mBAAmB,CAAC,EAAE,6BAA6B,EACnD,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAiB,EACnC,OAAO,GAAE,eAAyC,EAClD,SAAS,CAAC,EAAE,GAAG,GACd,OAAO,CAAC,EAAE,CAAC,CA8Fb;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,eAAsB,EAC9B,gBAAgB,GAAE,GAAqB,GACtC,OAAO,CAAC,EAAE,CAAC,CA0Bb;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,aAAa,EAAE,mBAAmB,EAClC,sBAAsB,UAAQ,iBA6B/B;AAED,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,EAAE,EACN,gBAAgB,EAAE,2BAA2B,EAC7C,sBAAsB,UAAQ,iBA0C/B"}
@@ -13,10 +13,10 @@ import { BlockHeader, GlobalVariables, HashedValues, Tx, TxConstantData, TxConte
13
13
  import { strict as assert } from 'assert';
14
14
  /**
15
15
  * Craft a carrier transaction for some public calls for simulation by PublicTxSimulator.
16
- */ export async function createTxForPublicCalls(privateInsertions, setupCallRequests, appCallRequests, teardownCallRequest, feePayer = AztecAddress.zero(), gasUsedByPrivate = Gas.empty(), globals = GlobalVariables.empty()) {
16
+ */ export async function createTxForPublicCalls(privateInsertions, setupCallRequests, appCallRequests, teardownCallRequest, feePayer = AztecAddress.zero(), gasUsedByPrivate = Gas.empty(), globals = GlobalVariables.empty(), gasLimits) {
17
17
  assert(setupCallRequests.length > 0 || appCallRequests.length > 0 || teardownCallRequest !== undefined, "Can't create public tx with no enqueued calls");
18
18
  // use max limits
19
- const gasLimits = new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
19
+ gasLimits = gasLimits ?? new Gas(DEFAULT_DA_GAS_LIMIT, DEFAULT_L2_GAS_LIMIT);
20
20
  const forPublic = PartialPrivateTailPublicInputsForPublic.empty();
21
21
  // Non revertible private insertions
22
22
  if (!privateInsertions.nonRevertible?.nullifiers?.length) {
@@ -72,11 +72,12 @@ import { strict as assert } from 'assert';
72
72
  const teardownGasLimits = teardownCallRequest ? new Gas(DEFAULT_TEARDOWN_DA_GAS_LIMIT, DEFAULT_TEARDOWN_L2_GAS_LIMIT) : Gas.empty();
73
73
  const gasSettings = new GasSettings(gasLimits, teardownGasLimits, maxFeesPerGas, GasFees.empty());
74
74
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
75
- const header = BlockHeader.empty();
76
- header.globalVariables = globals;
75
+ const header = BlockHeader.empty({
76
+ globalVariables: globals
77
+ });
77
78
  const constantData = new TxConstantData(header, txContext, Fr.zero(), Fr.zero());
78
- const includeByTimestamp = 0n; // Not used in the simulator.
79
- const txData = new PrivateKernelTailCircuitPublicInputs(constantData, /*gasUsed=*/ gasUsedByPrivate, feePayer, includeByTimestamp, forPublic);
79
+ const expirationTimestamp = 0n; // Not used in the simulator.
80
+ const txData = new PrivateKernelTailCircuitPublicInputs(constantData, /*gasUsed=*/ gasUsedByPrivate, feePayer, expirationTimestamp, forPublic);
80
81
  const calldata = [
81
82
  ...setupCallRequests,
82
83
  ...appCallRequests,
@@ -99,8 +100,8 @@ export async function createTxForPrivateOnly(feePayer = AztecAddress.zero(), gas
99
100
  const gasSettings = new GasSettings(gasLimits, Gas.empty(), maxFeesPerGas, GasFees.empty());
100
101
  const txContext = new TxContext(Fr.zero(), Fr.zero(), gasSettings);
101
102
  const constantData = new TxConstantData(BlockHeader.empty(), txContext, Fr.zero(), Fr.zero());
102
- const includeByTimestamp = 0n; // Not used in the simulator.
103
- const txData = new PrivateKernelTailCircuitPublicInputs(constantData, /*gasUsed=*/ gasUsedByPrivate, feePayer, includeByTimestamp, /*forPublic=*/ undefined, forRollup);
103
+ const expirationTimestamp = 0n; // Not used in the simulator.
104
+ const txData = new PrivateKernelTailCircuitPublicInputs(constantData, /*gasUsed=*/ gasUsedByPrivate, feePayer, expirationTimestamp, /*forPublic=*/ undefined, forRollup);
104
105
  return await Tx.create({
105
106
  data: txData,
106
107
  chonkProof: ChonkProof.empty(),
@@ -1,6 +1,6 @@
1
1
  import { AvmTxHint, type PublicTxResult } from '@aztec/stdlib/avm';
2
- import type { MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
3
- import { GlobalVariables } from '@aztec/stdlib/tx';
2
+ import { type MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
3
+ import { GlobalVariables, ProtocolContracts } from '@aztec/stdlib/tx';
4
4
  import type { NativeWorldStateService } from '@aztec/world-state';
5
5
  import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
6
6
  import { SimpleContractDataSource } from '../fixtures/simple_contract_data_source.js';
@@ -15,7 +15,10 @@ export declare class FuzzerSimulationRequest {
15
15
  readonly globals: GlobalVariables;
16
16
  readonly contractClasses: any[];
17
17
  readonly contractInstances: [any, any][];
18
- constructor(wsDataDir: string, wsMapSizeKb: number, tx: AvmTxHint, globals: GlobalVariables, contractClasses: any[], contractInstances: [any, any][]);
18
+ readonly publicDataWrites: any[];
19
+ readonly noteHashes: any[];
20
+ readonly protocolContracts: ProtocolContracts;
21
+ constructor(wsDataDir: string, wsMapSizeKb: number, tx: AvmTxHint, globals: GlobalVariables, contractClasses: any[], contractInstances: [any, any][], publicDataWrites: any[], noteHashes: any[], protocolContracts: ProtocolContracts);
19
22
  static fromPlainObject(obj: any): FuzzerSimulationRequest;
20
23
  }
21
24
  /**
@@ -24,11 +27,11 @@ export declare class FuzzerSimulationRequest {
24
27
  */
25
28
  export declare class AvmFuzzerSimulator extends BaseAvmSimulationTester {
26
29
  private simulator;
27
- constructor(merkleTrees: MerkleTreeWriteOperations, contractDataSource: SimpleContractDataSource, globals: GlobalVariables);
30
+ constructor(merkleTrees: MerkleTreeWriteOperations, contractDataSource: SimpleContractDataSource, globals: GlobalVariables, protocolContracts: ProtocolContracts);
28
31
  /**
29
32
  * Static factory method to create an AvmFuzzerSimulator.
30
33
  */
31
- static create(worldStateService: NativeWorldStateService, globals: GlobalVariables): Promise<AvmFuzzerSimulator>;
34
+ static create(worldStateService: NativeWorldStateService, globals: GlobalVariables, protocolContracts: ProtocolContracts): Promise<AvmFuzzerSimulator>;
32
35
  /**
33
36
  * Simulate a transaction from a C++ AvmTxHint.
34
37
  */
@@ -39,8 +42,19 @@ export declare class AvmFuzzerSimulator extends BaseAvmSimulationTester {
39
42
  addContractClassFromCpp(rawClass: any): Promise<void>;
40
43
  /**
41
44
  * Add a contract instance from C++ raw msgpack data.
42
- * This also inserts the contract address nullifier into the nullifier tree.
45
+ * This also inserts the contract address nullifier into the nullifier tree,
46
+ * unless the address is a protocol canonical address (1-11).
43
47
  */
44
48
  addContractInstanceFromCpp(rawAddress: any, rawInstance: any): Promise<void>;
49
+ /**
50
+ * Apply public data tree writes from C++ raw msgpack data.
51
+ * This is used to pre-populate the public data tree before simulation (e.g., for bytecode upgrades).
52
+ */
53
+ applyPublicDataWrites(rawWrites: any[]): Promise<void>;
54
+ /**
55
+ * Apply note hashes from C++ raw msgpack data.
56
+ * This is used to pre-populate the note hash tree before simulation.
57
+ */
58
+ applyNoteHashes(rawNoteHashes: any[]): Promise<void>;
45
59
  }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2Z1enplcl9zaW11bGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvZnV6emluZy9hdm1fZnV6emVyX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFZbkUsT0FBTyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRSxPQUFPLEVBQWUsZUFBZSxFQUF1RCxNQUFNLGtCQUFrQixDQUFDO0FBQ3JILE9BQU8sS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFJdEY7OztHQUdHO0FBQ0gscUJBQWEsdUJBQXVCO2FBRWhCLFNBQVMsRUFBRSxNQUFNO2FBQ2pCLFdBQVcsRUFBRSxNQUFNO2FBQ25CLEVBQUUsRUFBRSxTQUFTO2FBQ2IsT0FBTyxFQUFFLGVBQWU7YUFDeEIsZUFBZSxFQUFFLEdBQUcsRUFBRTthQUN0QixpQkFBaUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRTtJQU5qRCxZQUNrQixTQUFTLEVBQUUsTUFBTSxFQUNqQixXQUFXLEVBQUUsTUFBTSxFQUNuQixFQUFFLEVBQUUsU0FBUyxFQUNiLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLGVBQWUsRUFBRSxHQUFHLEVBQUUsRUFDdEIsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFDN0M7SUFFSixNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsdUJBQXVCLENBWXhEO0NBQ0Y7QUFtSEQ7OztHQUdHO0FBQ0gscUJBQWEsa0JBQW1CLFNBQVEsdUJBQXVCO0lBQzdELE9BQU8sQ0FBQyxTQUFTLENBQW9CO0lBRXJDLFlBQ0UsV0FBVyxFQUFFLHlCQUF5QixFQUN0QyxrQkFBa0IsRUFBRSx3QkFBd0IsRUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFXekI7SUFFRDs7T0FFRztJQUNILE9BQW9CLE1BQU0sQ0FDeEIsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQzFDLE9BQU8sRUFBRSxlQUFlLEdBQ3ZCLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUk3QjtJQUVEOztPQUVHO0lBQ1UsUUFBUSxDQUFDLE1BQU0sRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUdoRTtJQUVEOztPQUVHO0lBQ1UsdUJBQXVCLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBR2pFO0lBRUQ7OztPQUdHO0lBQ1UsMEJBQTBCLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FJeEY7Q0FDRiJ9
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZtX2Z1enplcl9zaW11bGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvZnV6emluZy9hdm1fZnV6emVyX3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFZbkUsT0FBTyxFQUFnQixLQUFLLHlCQUF5QixFQUFzQixNQUFNLHFCQUFxQixDQUFDO0FBQ3ZHLE9BQU8sRUFFTCxlQUFlLEVBRWYsaUJBQWlCLEVBS2xCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN4RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUl0Rjs7O0dBR0c7QUFDSCxxQkFBYSx1QkFBdUI7YUFFaEIsU0FBUyxFQUFFLE1BQU07YUFDakIsV0FBVyxFQUFFLE1BQU07YUFDbkIsRUFBRSxFQUFFLFNBQVM7YUFDYixPQUFPLEVBQUUsZUFBZTthQUN4QixlQUFlLEVBQUUsR0FBRyxFQUFFO2FBQ3RCLGlCQUFpQixFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2FBQy9CLGdCQUFnQixFQUFFLEdBQUcsRUFBRTthQUN2QixVQUFVLEVBQUUsR0FBRyxFQUFFO2FBQ2pCLGlCQUFpQixFQUFFLGlCQUFpQjtJQVR0RCxZQUNrQixTQUFTLEVBQUUsTUFBTSxFQUNqQixXQUFXLEVBQUUsTUFBTSxFQUNuQixFQUFFLEVBQUUsU0FBUyxFQUNiLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLGVBQWUsRUFBRSxHQUFHLEVBQUUsRUFDdEIsaUJBQWlCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFDL0IsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLEVBQ3ZCLFVBQVUsRUFBRSxHQUFHLEVBQUUsRUFDakIsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQ2xEO0lBRUosTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLHVCQUF1QixDQWV4RDtDQUNGO0FBbUhEOzs7R0FHRztBQUNILHFCQUFhLGtCQUFtQixTQUFRLHVCQUF1QjtJQUM3RCxPQUFPLENBQUMsU0FBUyxDQUFvQjtJQUVyQyxZQUNFLFdBQVcsRUFBRSx5QkFBeUIsRUFDdEMsa0JBQWtCLEVBQUUsd0JBQXdCLEVBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLGlCQUFpQixFQUFFLGlCQUFpQixFQWlCckM7SUFFRDs7T0FFRztJQUNILE9BQW9CLE1BQU0sQ0FDeEIsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQzFDLE9BQU8sRUFBRSxlQUFlLEVBQ3hCLGlCQUFpQixFQUFFLGlCQUFpQixHQUNuQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FJN0I7SUFFRDs7T0FFRztJQUNVLFFBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FVaEU7SUFFRDs7T0FFRztJQUNVLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUdqRTtJQUVEOzs7O09BSUc7SUFDVSwwQkFBMEIsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQU14RjtJQUVEOzs7T0FHRztJQUNVLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBS2xFO0lBRUQ7OztPQUdHO0lBQ1UsZUFBZSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBSWhFO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"avm_fuzzer_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/fuzzing/avm_fuzzer_simulator.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYnE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAe,eAAe,EAAuD,MAAM,kBAAkB,CAAC;AACrH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AAItF;;;GAGG;AACH,qBAAa,uBAAuB;aAEhB,SAAS,EAAE,MAAM;aACjB,WAAW,EAAE,MAAM;aACnB,EAAE,EAAE,SAAS;aACb,OAAO,EAAE,eAAe;aACxB,eAAe,EAAE,GAAG,EAAE;aACtB,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;IANjD,YACkB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,eAAe,EACxB,eAAe,EAAE,GAAG,EAAE,EACtB,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAC7C;IAEJ,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,uBAAuB,CAYxD;CACF;AAmHD;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,uBAAuB;IAC7D,OAAO,CAAC,SAAS,CAAoB;IAErC,YACE,WAAW,EAAE,yBAAyB,EACtC,kBAAkB,EAAE,wBAAwB,EAC5C,OAAO,EAAE,eAAe,EAWzB;IAED;;OAEG;IACH,OAAoB,MAAM,CACxB,iBAAiB,EAAE,uBAAuB,EAC1C,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,kBAAkB,CAAC,CAI7B;IAED;;OAEG;IACU,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAGhE;IAED;;OAEG;IACU,uBAAuB,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;IAED;;;OAGG;IACU,0BAA0B,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAIxF;CACF"}
1
+ {"version":3,"file":"avm_fuzzer_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/fuzzing/avm_fuzzer_simulator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYnE,OAAO,EAAgB,KAAK,yBAAyB,EAAsB,MAAM,qBAAqB,CAAC;AACvG,OAAO,EAEL,eAAe,EAEf,iBAAiB,EAKlB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AAItF;;;GAGG;AACH,qBAAa,uBAAuB;aAEhB,SAAS,EAAE,MAAM;aACjB,WAAW,EAAE,MAAM;aACnB,EAAE,EAAE,SAAS;aACb,OAAO,EAAE,eAAe;aACxB,eAAe,EAAE,GAAG,EAAE;aACtB,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;aAC/B,gBAAgB,EAAE,GAAG,EAAE;aACvB,UAAU,EAAE,GAAG,EAAE;aACjB,iBAAiB,EAAE,iBAAiB;IATtD,YACkB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,eAAe,EACxB,eAAe,EAAE,GAAG,EAAE,EACtB,iBAAiB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAC/B,gBAAgB,EAAE,GAAG,EAAE,EACvB,UAAU,EAAE,GAAG,EAAE,EACjB,iBAAiB,EAAE,iBAAiB,EAClD;IAEJ,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,uBAAuB,CAexD;CACF;AAmHD;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,uBAAuB;IAC7D,OAAO,CAAC,SAAS,CAAoB;IAErC,YACE,WAAW,EAAE,yBAAyB,EACtC,kBAAkB,EAAE,wBAAwB,EAC5C,OAAO,EAAE,eAAe,EACxB,iBAAiB,EAAE,iBAAiB,EAiBrC;IAED;;OAEG;IACH,OAAoB,MAAM,CACxB,iBAAiB,EAAE,uBAAuB,EAC1C,OAAO,EAAE,eAAe,EACxB,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,kBAAkB,CAAC,CAI7B;IAED;;OAEG;IACU,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAUhE;IAED;;OAEG;IACU,uBAAuB,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAGjE;IAED;;;;OAIG;IACU,0BAA0B,CAAC,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxF;IAED;;;OAGG;IACU,qBAAqB,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlE;IAED;;;OAGG;IACU,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhE;CACF"}
@@ -1,4 +1,4 @@
1
- import { MAX_ENQUEUED_CALLS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PRIVATE_LOGS_PER_TX } from '@aztec/constants';
1
+ import { MAX_ENQUEUED_CALLS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, MAX_PROTOCOL_CONTRACTS } from '@aztec/constants';
2
2
  import { padArrayEnd } from '@aztec/foundation/collection';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import { AvmTxHint } from '@aztec/stdlib/avm';
@@ -8,7 +8,8 @@ import { PartialPrivateTailPublicInputsForPublic, PrivateKernelTailCircuitPublic
8
8
  import { PrivateLog } from '@aztec/stdlib/logs';
9
9
  import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
10
10
  import { ChonkProof } from '@aztec/stdlib/proofs';
11
- import { BlockHeader, GlobalVariables, HashedValues, Tx, TxConstantData, TxContext, TxHash } from '@aztec/stdlib/tx';
11
+ import { MerkleTreeId, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
12
+ import { BlockHeader, GlobalVariables, HashedValues, ProtocolContracts, Tx, TxConstantData, TxContext, TxHash } from '@aztec/stdlib/tx';
12
13
  import { BaseAvmSimulationTester } from '../avm/fixtures/base_avm_simulation_tester.js';
13
14
  import { SimpleContractDataSource } from '../fixtures/simple_contract_data_source.js';
14
15
  import { PublicContractsDB } from '../public_db_sources.js';
@@ -23,19 +24,25 @@ import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js
23
24
  globals;
24
25
  contractClasses;
25
26
  contractInstances;
26
- constructor(wsDataDir, wsMapSizeKb, tx, globals, contractClasses, contractInstances){
27
+ publicDataWrites;
28
+ noteHashes;
29
+ protocolContracts;
30
+ constructor(wsDataDir, wsMapSizeKb, tx, globals, contractClasses, contractInstances, publicDataWrites, noteHashes, protocolContracts){
27
31
  this.wsDataDir = wsDataDir;
28
32
  this.wsMapSizeKb = wsMapSizeKb;
29
33
  this.tx = tx;
30
34
  this.globals = globals;
31
35
  this.contractClasses = contractClasses;
32
36
  this.contractInstances = contractInstances;
37
+ this.publicDataWrites = publicDataWrites;
38
+ this.noteHashes = noteHashes;
39
+ this.protocolContracts = protocolContracts;
33
40
  }
34
41
  static fromPlainObject(obj) {
35
42
  if (obj instanceof FuzzerSimulationRequest) {
36
43
  return obj;
37
44
  }
38
- return new FuzzerSimulationRequest(obj.wsDataDir, obj.wsMapSizeKb, AvmTxHint.fromPlainObject(obj.tx), GlobalVariables.fromPlainObject(obj.globals), obj.contractClasses, obj.contractInstances);
45
+ return new FuzzerSimulationRequest(obj.wsDataDir, obj.wsMapSizeKb, AvmTxHint.fromPlainObject(obj.tx), GlobalVariables.fromPlainObject(obj.globals), obj.contractClasses, obj.contractInstances, obj.publicDataWrites ?? [], obj.noteHashes ?? [], ProtocolContracts.fromPlainObject(obj.protocolContracts));
39
46
  }
40
47
  }
41
48
  /**
@@ -95,27 +102,30 @@ import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js
95
102
  * It provides methods for registering contracts from C++ msgpack data and simulating transactions.
96
103
  */ export class AvmFuzzerSimulator extends BaseAvmSimulationTester {
97
104
  simulator;
98
- constructor(merkleTrees, contractDataSource, globals){
105
+ constructor(merkleTrees, contractDataSource, globals, protocolContracts){
99
106
  super(contractDataSource, merkleTrees);
100
107
  const contractsDb = new PublicContractsDB(contractDataSource);
101
108
  this.simulator = new PublicTxSimulator(merkleTrees, contractsDb, globals, {
102
- skipFeeEnforcement: true,
109
+ skipFeeEnforcement: false,
103
110
  collectDebugLogs: false,
104
111
  collectHints: false,
105
112
  collectStatistics: false,
106
113
  collectCallMetadata: false
107
- });
114
+ }, protocolContracts);
108
115
  }
109
116
  /**
110
117
  * Static factory method to create an AvmFuzzerSimulator.
111
- */ static async create(worldStateService, globals) {
118
+ */ static async create(worldStateService, globals, protocolContracts) {
112
119
  const contractDataSource = new SimpleContractDataSource();
113
120
  const merkleTrees = await worldStateService.fork();
114
- return new AvmFuzzerSimulator(merkleTrees, contractDataSource, globals);
121
+ return new AvmFuzzerSimulator(merkleTrees, contractDataSource, globals, protocolContracts);
115
122
  }
116
123
  /**
117
124
  * Simulate a transaction from a C++ AvmTxHint.
118
125
  */ async simulate(txHint) {
126
+ // Compute fee from gas limits and max fees per gas (upper bound on fee)
127
+ const totalFee = BigInt(txHint.gasSettings.gasLimits.daGas) * txHint.gasSettings.maxFeesPerGas.feePerDaGas + BigInt(txHint.gasSettings.gasLimits.l2Gas) * txHint.gasSettings.maxFeesPerGas.feePerL2Gas;
128
+ await this.setFeePayerBalance(txHint.feePayer, new Fr(totalFee));
119
129
  const tx = await createTxFromHint(txHint);
120
130
  return await this.simulator.simulate(tx);
121
131
  }
@@ -127,10 +137,35 @@ import { PublicTxSimulator } from '../public_tx_simulator/public_tx_simulator.js
127
137
  }
128
138
  /**
129
139
  * Add a contract instance from C++ raw msgpack data.
130
- * This also inserts the contract address nullifier into the nullifier tree.
140
+ * This also inserts the contract address nullifier into the nullifier tree,
141
+ * unless the address is a protocol canonical address (1-11).
131
142
  */ async addContractInstanceFromCpp(rawAddress, rawInstance) {
132
143
  const address = AztecAddress.fromPlainObject(rawAddress);
133
144
  const instance = contractInstanceWithAddressFromPlainObject(address, rawInstance);
134
- await this.addContractInstance(instance);
145
+ // Protocol canonical addresses (1-11) should not have nullifiers inserted
146
+ const isProtocolCanonicalAddress = address.toBigInt() <= MAX_PROTOCOL_CONTRACTS && address.toBigInt() >= 1n;
147
+ await this.addContractInstance(instance, /* skipNullifierInsertion */ isProtocolCanonicalAddress);
148
+ }
149
+ /**
150
+ * Apply public data tree writes from C++ raw msgpack data.
151
+ * This is used to pre-populate the public data tree before simulation (e.g., for bytecode upgrades).
152
+ */ async applyPublicDataWrites(rawWrites) {
153
+ for (const rawWrite of rawWrites){
154
+ const leaf = PublicDataTreeLeaf.fromPlainObject(rawWrite);
155
+ await this.merkleTrees.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, [
156
+ leaf.toBuffer()
157
+ ]);
158
+ }
159
+ }
160
+ /**
161
+ * Apply note hashes from C++ raw msgpack data.
162
+ * This is used to pre-populate the note hash tree before simulation.
163
+ */ async applyNoteHashes(rawNoteHashes) {
164
+ const paddingLeaves = MAX_NOTE_HASHES_PER_TX - rawNoteHashes.length % MAX_NOTE_HASHES_PER_TX;
165
+ const paddedNoteHashes = [
166
+ ...rawNoteHashes,
167
+ ...Array(paddingLeaves).fill(Fr.ZERO)
168
+ ];
169
+ await this.merkleTrees.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, paddedNoteHashes);
135
170
  }
136
171
  }
@@ -1,10 +1,20 @@
1
1
  import { EthAddress } from '@aztec/foundation/eth-address';
2
- import { deserializeFromMessagePack, serializeWithMessagePack } from '@aztec/stdlib/avm';
2
+ import { PublicTxEffect, deserializeFromMessagePack, serializeWithMessagePack } from '@aztec/stdlib/avm';
3
3
  import { TreeSnapshots } from '@aztec/stdlib/tx';
4
4
  import { NativeWorldStateService } from '@aztec/world-state';
5
- import { writeSync } from 'fs';
6
5
  import { createInterface } from 'readline';
7
6
  import { AvmFuzzerSimulator, FuzzerSimulationRequest } from './avm_fuzzer_simulator.js';
7
+ /** Write data to stdout, letting Node handle buffering. */ function writeOutput(data) {
8
+ return new Promise((resolve, reject)=>{
9
+ process.stdout.write(data, (err)=>{
10
+ if (err) {
11
+ reject(err);
12
+ } else {
13
+ resolve();
14
+ }
15
+ });
16
+ });
17
+ }
8
18
  // This cache holds opened world states to avoid reopening them for each invocation.
9
19
  // It's a map so that in the future we could support multiple world states (if we had multiple fuzzers).
10
20
  const worldStateCache = new Map();
@@ -23,10 +33,11 @@ async function openExistingWorldState(dataDir, mapSizeKb) {
23
33
  worldStateCache.set(dataDir, ws);
24
34
  return ws;
25
35
  }
26
- async function simulateWithFuzzer(dataDir, mapSizeKb, txHint, globals, rawContractClasses, rawContractInstances) {
36
+ async function simulateWithFuzzer(dataDir, mapSizeKb, txHint, globals, rawContractClasses, rawContractInstances, rawPublicDataWrites, rawNoteHashes, protocolContracts) {
27
37
  const worldStateService = await openExistingWorldState(dataDir, mapSizeKb);
28
- const simulator = await AvmFuzzerSimulator.create(worldStateService, globals);
29
- // Register contract classes from C++
38
+ const simulator = await AvmFuzzerSimulator.create(worldStateService, globals, protocolContracts);
39
+ await simulator.applyNoteHashes(rawNoteHashes);
40
+ // Register contract classes from C++ (must happen before public data writes to match C++ order)
30
41
  for (const rawClass of rawContractClasses){
31
42
  await simulator.addContractClassFromCpp(rawClass);
32
43
  }
@@ -34,13 +45,17 @@ async function simulateWithFuzzer(dataDir, mapSizeKb, txHint, globals, rawContra
34
45
  for (const [rawAddress, rawInstance] of rawContractInstances){
35
46
  await simulator.addContractInstanceFromCpp(rawAddress, rawInstance);
36
47
  }
48
+ // Apply public data writes after contract registration (e.g., for bytecode upgrades)
49
+ // This must happen last to match C++ setup_fuzzer_state ordering
50
+ await simulator.applyPublicDataWrites(rawPublicDataWrites);
37
51
  const result = await simulator.simulate(txHint);
38
52
  const output = result.getAppLogicReturnValues().flatMap((rv)=>rv?.values?.filter((v)=>v != null) ?? []);
39
53
  return {
40
54
  reverted: !result.revertCode.isOK(),
41
55
  output,
42
56
  revertReason: result.findRevertReason()?.message,
43
- publicInputs: result.publicInputs
57
+ publicInputs: result.publicInputs,
58
+ publicTxEffect: result.publicTxEffect
44
59
  };
45
60
  }
46
61
  async function execute(base64Line) {
@@ -50,23 +65,27 @@ async function execute(base64Line) {
50
65
  const rawRequest = deserializeFromMessagePack(buffer);
51
66
  const request = FuzzerSimulationRequest.fromPlainObject(rawRequest);
52
67
  // Run the TS simulation
53
- const result = await simulateWithFuzzer(request.wsDataDir, request.wsMapSizeKb, request.tx, request.globals, request.contractClasses, request.contractInstances);
68
+ const result = await simulateWithFuzzer(request.wsDataDir, request.wsMapSizeKb, request.tx, request.globals, request.contractClasses, request.contractInstances, request.publicDataWrites, request.noteHashes, request.protocolContracts);
54
69
  // Serialize the result to msgpack and encode it in base64 for output
55
70
  const resultBuffer = serializeWithMessagePack({
56
71
  reverted: result.reverted,
57
72
  output: result.output,
58
73
  revertReason: result.revertReason ?? '',
59
- endTreeSnapshots: result.publicInputs.endTreeSnapshots
74
+ endTreeSnapshots: result.publicInputs.endTreeSnapshots,
75
+ publicTxEffect: result.publicTxEffect
60
76
  });
61
- writeSync(process.stdout.fd, resultBuffer.toString('base64') + '\n');
77
+ const base64Response = resultBuffer.toString('base64') + '\n';
78
+ await writeOutput(base64Response);
62
79
  } catch (error) {
80
+ // If we error, treat as reverted
63
81
  const errorResult = serializeWithMessagePack({
64
82
  reverted: true,
65
83
  output: [],
66
84
  revertReason: `Unexpected Error ${error.message}`,
67
- endTreeSnapshots: TreeSnapshots.empty()
85
+ endTreeSnapshots: TreeSnapshots.empty(),
86
+ publicTxEffect: PublicTxEffect.empty()
68
87
  });
69
- writeSync(process.stdout.fd, errorResult.toString('base64') + '\n');
88
+ await writeOutput(errorResult.toString('base64') + '\n');
70
89
  }
71
90
  }
72
91
  function mainLoop() {
@@ -74,11 +93,26 @@ function mainLoop() {
74
93
  input: process.stdin,
75
94
  terminal: false
76
95
  });
96
+ // Process lines sequentially to avoid race conditions in responses
97
+ const lineQueue = [];
98
+ let processing = false;
99
+ async function processQueue() {
100
+ if (processing || lineQueue.length === 0) {
101
+ return;
102
+ }
103
+ processing = true;
104
+ while(lineQueue.length > 0){
105
+ const line = lineQueue.shift();
106
+ await execute(line);
107
+ }
108
+ processing = false;
109
+ }
77
110
  rl.on('line', (line)=>{
78
111
  if (line.trim()) {
79
- void execute(line);
112
+ lineQueue.push(line);
113
+ void processQueue();
80
114
  }
81
115
  });
82
116
  rl.on('close', ()=>process.exit(0));
83
117
  }
84
- mainLoop();
118
+ void mainLoop();
@@ -68,6 +68,7 @@ export declare class HintingMerkleWriteOperations implements MerkleTreeWriteOper
68
68
  updateArchive(header: any): Promise<void>;
69
69
  batchInsert<TreeHeight extends number, SubtreeSiblingPathHeight extends number, ID extends IndexedTreeId>(treeId: ID, leaves: Buffer[], subtreeHeight: number): Promise<BatchInsertionResult<TreeHeight, SubtreeSiblingPathHeight>>;
70
70
  close(): Promise<void>;
71
+ [Symbol.asyncDispose](): Promise<void>;
71
72
  findLeafIndices<ID extends MerkleTreeId>(treeId: ID, values: MerkleTreeLeafType<ID>[]): Promise<(bigint | undefined)[]>;
72
73
  findSiblingPaths<ID extends MerkleTreeId>(treeId: ID, values: MerkleTreeLeafType<ID>[]): Promise<({
73
74
  path: SiblingPath<TreeHeights[ID]>;
@@ -76,4 +77,4 @@ export declare class HintingMerkleWriteOperations implements MerkleTreeWriteOper
76
77
  findLeafIndicesAfter<ID extends MerkleTreeId>(treeId: ID, values: MerkleTreeLeafType<ID>[], startIndex: bigint): Promise<(bigint | undefined)[]>;
77
78
  getBlockNumbersForLeafIndices<ID extends MerkleTreeId>(treeId: ID, leafIndices: bigint[]): Promise<(BlockNumber | undefined)[]>;
78
79
  }
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludGluZ19kYl9zb3VyY2VzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL2hpbnRpbmdfZGJfc291cmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVuRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFcEQsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEYsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBV0wsS0FBSyxpQkFBaUIsRUFTdkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9GLE9BQU8sRUFFTCxLQUFLLG9CQUFvQixFQUN6QixLQUFLLGFBQWEsRUFDbEIsWUFBWSxFQUNaLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUsseUJBQXlCLEVBSzlCLEtBQUsseUJBQXlCLEVBQzlCLEtBQUssV0FBVyxFQUdqQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJcEUsT0FBTyxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILHFCQUFhLHdCQUF5QixZQUFXLDBCQUEwQjtJQVF2RSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDbkIsT0FBTyxDQUFDLEtBQUs7SUFSZixPQUFPLENB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
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludGluZ19kYl9zb3VyY2VzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL2hpbnRpbmdfZGJfc291cmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVuRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFcEQsT0FBTyxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEYsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBV0wsS0FBSyxpQkFBaUIsRUFTdkIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9GLE9BQU8sRUFFTCxLQUFLLG9CQUFvQixFQUN6QixLQUFLLGFBQWEsRUFDbEIsWUFBWSxFQUNaLEtBQUssa0JBQWtCLEVBQ3ZCLEtBQUsseUJBQXlCLEVBSzlCLEtBQUsseUJBQXlCLEVBQzlCLEtBQUssV0FBVyxFQUdqQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJcEUsT0FBTyxLQUFLLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVyRTs7R0FFRztBQUNILHFCQUFhLHdCQUF5QixZQUFXLDBCQUEwQjtJQVF2RSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDbkIsT0FBTyxDQUFDLEtBQUs7SUFSZixPQUFPLENB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