@aztec/simulator 0.0.1-commit.b6e433891 → 0.0.1-commit.b9865e97

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 (309) hide show
  1. package/dest/private/acvm_wasm.d.ts +1 -1
  2. package/dest/private/acvm_wasm.d.ts.map +1 -1
  3. package/dest/private/acvm_wasm.js +3 -1
  4. package/dest/public/avm/testing/account_proof_fetcher.d.ts +2 -0
  5. package/dest/public/avm/testing/account_proof_fetcher.d.ts.map +1 -0
  6. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.d.ts +2 -1
  7. package/dest/public/avm/testing/base_avm_simulation_tester.d.ts.map +1 -0
  8. package/dest/public/avm/{fixtures → testing}/base_avm_simulation_tester.js +17 -2
  9. package/dest/public/avm/testing/utils.d.ts +32 -0
  10. package/dest/public/avm/testing/utils.d.ts.map +1 -0
  11. package/dest/public/avm/{fixtures → testing}/utils.js +3 -33
  12. package/dest/public/contracts_db_checkpoint.d.ts +2 -2
  13. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -1
  14. package/dest/public/contracts_db_checkpoint.js +1 -1
  15. package/dest/public/fixtures/bulk_test.d.ts +1 -1
  16. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  17. package/dest/public/fixtures/bulk_test.js +31 -4
  18. package/dest/public/fixtures/index.d.ts +1 -4
  19. package/dest/public/fixtures/index.d.ts.map +1 -1
  20. package/dest/public/fixtures/index.js +0 -3
  21. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +3 -3
  22. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  23. package/dest/public/fixtures/public_tx_simulation_tester.js +9 -10
  24. package/dest/public/fixtures/simple_contract_data_source.js +1 -1
  25. package/dest/public/fixtures/utils.d.ts +1 -1
  26. package/dest/public/fixtures/utils.d.ts.map +1 -1
  27. package/dest/public/fixtures/utils.js +14 -15
  28. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +6 -4
  29. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
  30. package/dest/public/fuzzing/avm_fuzzer_simulator.js +12 -7
  31. package/dest/public/fuzzing/avm_simulator_bin.js +4 -4
  32. package/dest/public/index.d.ts +2 -2
  33. package/dest/public/index.d.ts.map +1 -1
  34. package/dest/public/index.js +1 -1
  35. package/dest/public/public_db_sources.d.ts +6 -3
  36. package/dest/public/public_db_sources.d.ts.map +1 -1
  37. package/dest/public/public_db_sources.js +16 -10
  38. package/dest/public/public_processor/guarded_merkle_tree.d.ts +4 -3
  39. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  40. package/dest/public/public_processor/guarded_merkle_tree.js +3 -0
  41. package/dest/public/public_processor/public_processor.d.ts +4 -3
  42. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  43. package/dest/public/public_processor/public_processor.js +60 -35
  44. package/dest/public/public_processor/public_processor_metrics.d.ts +4 -1
  45. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  46. package/dest/public/public_processor/public_processor_metrics.js +8 -0
  47. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +1 -1
  48. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -1
  49. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +3 -2
  50. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts +23 -0
  51. package/dest/public/public_tx_simulator/dumping_public_tx_simulator.d.ts.map +1 -0
  52. package/dest/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.js → dumping_public_tx_simulator.js} +2 -2
  53. package/dest/public/public_tx_simulator/factories.d.ts +6 -6
  54. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
  55. package/dest/public/public_tx_simulator/factories.js +6 -6
  56. package/dest/public/public_tx_simulator/index.d.ts +3 -5
  57. package/dest/public/public_tx_simulator/index.d.ts.map +1 -1
  58. package/dest/public/public_tx_simulator/index.js +2 -4
  59. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +41 -70
  60. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  61. package/dest/public/public_tx_simulator/public_tx_simulator.js +98 -319
  62. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts +22 -0
  63. package/dest/public/public_tx_simulator/public_tx_simulator_base.d.ts.map +1 -0
  64. package/dest/public/public_tx_simulator/public_tx_simulator_base.js +28 -0
  65. package/package.json +17 -17
  66. package/src/private/acvm_wasm.ts +4 -1
  67. package/src/public/avm/{fixtures → testing}/base_avm_simulation_tester.ts +22 -2
  68. package/src/public/avm/{fixtures → testing}/utils.ts +3 -39
  69. package/src/public/contracts_db_checkpoint.ts +1 -1
  70. package/src/public/fixtures/bulk_test.ts +29 -4
  71. package/src/public/fixtures/index.ts +0 -3
  72. package/src/public/fixtures/public_tx_simulation_tester.ts +10 -18
  73. package/src/public/fixtures/simple_contract_data_source.ts +1 -1
  74. package/src/public/fixtures/utils.ts +21 -18
  75. package/src/public/fuzzing/avm_fuzzer_simulator.ts +15 -18
  76. package/src/public/fuzzing/avm_simulator_bin.ts +3 -5
  77. package/src/public/index.ts +3 -3
  78. package/src/public/public_db_sources.ts +21 -14
  79. package/src/public/public_processor/guarded_merkle_tree.ts +5 -2
  80. package/src/public/public_processor/public_processor.ts +78 -42
  81. package/src/public/public_processor/public_processor_metrics.ts +12 -0
  82. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +3 -2
  83. package/src/public/public_tx_simulator/{dumping_cpp_public_tx_simulator.ts → dumping_public_tx_simulator.ts} +2 -2
  84. package/src/public/public_tx_simulator/factories.ts +6 -6
  85. package/src/public/public_tx_simulator/index.ts +2 -4
  86. package/src/public/public_tx_simulator/public_tx_simulator.ts +150 -476
  87. package/src/public/public_tx_simulator/public_tx_simulator_base.ts +35 -0
  88. package/dest/public/avm/avm_context.d.ts +0 -41
  89. package/dest/public/avm/avm_context.d.ts.map +0 -1
  90. package/dest/public/avm/avm_context.js +0 -44
  91. package/dest/public/avm/avm_contract_call_result.d.ts +0 -32
  92. package/dest/public/avm/avm_contract_call_result.d.ts.map +0 -1
  93. package/dest/public/avm/avm_contract_call_result.js +0 -54
  94. package/dest/public/avm/avm_execution_environment.d.ts +0 -24
  95. package/dest/public/avm/avm_execution_environment.d.ts.map +0 -1
  96. package/dest/public/avm/avm_execution_environment.js +0 -33
  97. package/dest/public/avm/avm_gas.d.ts +0 -44
  98. package/dest/public/avm/avm_gas.d.ts.map +0 -1
  99. package/dest/public/avm/avm_gas.js +0 -195
  100. package/dest/public/avm/avm_machine_state.d.ts +0 -98
  101. package/dest/public/avm/avm_machine_state.d.ts.map +0 -1
  102. package/dest/public/avm/avm_machine_state.js +0 -110
  103. package/dest/public/avm/avm_memory_types.d.ts +0 -275
  104. package/dest/public/avm/avm_memory_types.d.ts.map +0 -1
  105. package/dest/public/avm/avm_memory_types.js +0 -354
  106. package/dest/public/avm/avm_simulator.d.ts +0 -41
  107. package/dest/public/avm/avm_simulator.d.ts.map +0 -1
  108. package/dest/public/avm/avm_simulator.js +0 -192
  109. package/dest/public/avm/avm_simulator_interface.d.ts +0 -9
  110. package/dest/public/avm/avm_simulator_interface.d.ts.map +0 -1
  111. package/dest/public/avm/avm_simulator_interface.js +0 -3
  112. package/dest/public/avm/calldata.d.ts +0 -51
  113. package/dest/public/avm/calldata.d.ts.map +0 -1
  114. package/dest/public/avm/calldata.js +0 -63
  115. package/dest/public/avm/errors.d.ts +0 -104
  116. package/dest/public/avm/errors.d.ts.map +0 -1
  117. package/dest/public/avm/errors.js +0 -141
  118. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +0 -2
  119. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +0 -1
  120. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts +0 -22
  121. package/dest/public/avm/fixtures/avm_simulation_tester.d.ts.map +0 -1
  122. package/dest/public/avm/fixtures/avm_simulation_tester.js +0 -84
  123. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +0 -1
  124. package/dest/public/avm/fixtures/initializers.d.ts +0 -42
  125. package/dest/public/avm/fixtures/initializers.d.ts.map +0 -1
  126. package/dest/public/avm/fixtures/initializers.js +0 -45
  127. package/dest/public/avm/fixtures/utils.d.ts +0 -39
  128. package/dest/public/avm/fixtures/utils.d.ts.map +0 -1
  129. package/dest/public/avm/index.d.ts +0 -2
  130. package/dest/public/avm/index.d.ts.map +0 -1
  131. package/dest/public/avm/index.js +0 -1
  132. package/dest/public/avm/opcodes/accrued_substate.d.ts +0 -74
  133. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +0 -1
  134. package/dest/public/avm/opcodes/accrued_substate.js +0 -254
  135. package/dest/public/avm/opcodes/addressing_mode.d.ts +0 -31
  136. package/dest/public/avm/opcodes/addressing_mode.d.ts.map +0 -1
  137. package/dest/public/avm/opcodes/addressing_mode.js +0 -94
  138. package/dest/public/avm/opcodes/arithmetic.d.ts +0 -49
  139. package/dest/public/avm/opcodes/arithmetic.d.ts.map +0 -1
  140. package/dest/public/avm/opcodes/arithmetic.js +0 -97
  141. package/dest/public/avm/opcodes/bitwise.d.ts +0 -42
  142. package/dest/public/avm/opcodes/bitwise.d.ts.map +0 -1
  143. package/dest/public/avm/opcodes/bitwise.js +0 -99
  144. package/dest/public/avm/opcodes/comparators.d.ts +0 -25
  145. package/dest/public/avm/opcodes/comparators.d.ts.map +0 -1
  146. package/dest/public/avm/opcodes/comparators.js +0 -43
  147. package/dest/public/avm/opcodes/contract.d.ts +0 -20
  148. package/dest/public/avm/opcodes/contract.d.ts.map +0 -1
  149. package/dest/public/avm/opcodes/contract.js +0 -65
  150. package/dest/public/avm/opcodes/control_flow.d.ts +0 -41
  151. package/dest/public/avm/opcodes/control_flow.d.ts.map +0 -1
  152. package/dest/public/avm/opcodes/control_flow.js +0 -107
  153. package/dest/public/avm/opcodes/conversion.d.ts +0 -18
  154. package/dest/public/avm/opcodes/conversion.d.ts.map +0 -1
  155. package/dest/public/avm/opcodes/conversion.js +0 -333
  156. package/dest/public/avm/opcodes/ec_add.d.ts +0 -19
  157. package/dest/public/avm/opcodes/ec_add.d.ts.map +0 -1
  158. package/dest/public/avm/opcodes/ec_add.js +0 -93
  159. package/dest/public/avm/opcodes/environment_getters.d.ts +0 -28
  160. package/dest/public/avm/opcodes/environment_getters.d.ts.map +0 -1
  161. package/dest/public/avm/opcodes/environment_getters.js +0 -77
  162. package/dest/public/avm/opcodes/external_calls.d.ts +0 -59
  163. package/dest/public/avm/opcodes/external_calls.d.ts.map +0 -1
  164. package/dest/public/avm/opcodes/external_calls.js +0 -210
  165. package/dest/public/avm/opcodes/hashing.d.ts +0 -36
  166. package/dest/public/avm/opcodes/hashing.d.ts.map +0 -1
  167. package/dest/public/avm/opcodes/hashing.js +0 -119
  168. package/dest/public/avm/opcodes/index.d.ts +0 -16
  169. package/dest/public/avm/opcodes/index.d.ts.map +0 -1
  170. package/dest/public/avm/opcodes/index.js +0 -15
  171. package/dest/public/avm/opcodes/instruction.d.ts +0 -74
  172. package/dest/public/avm/opcodes/instruction.d.ts.map +0 -1
  173. package/dest/public/avm/opcodes/instruction.js +0 -95
  174. package/dest/public/avm/opcodes/instruction_impl.d.ts +0 -19
  175. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +0 -1
  176. package/dest/public/avm/opcodes/instruction_impl.js +0 -30
  177. package/dest/public/avm/opcodes/memory.d.ts +0 -74
  178. package/dest/public/avm/opcodes/memory.d.ts.map +0 -1
  179. package/dest/public/avm/opcodes/memory.js +0 -257
  180. package/dest/public/avm/opcodes/misc.d.ts +0 -18
  181. package/dest/public/avm/opcodes/misc.d.ts.map +0 -1
  182. package/dest/public/avm/opcodes/misc.js +0 -73
  183. package/dest/public/avm/opcodes/storage.d.ts +0 -25
  184. package/dest/public/avm/opcodes/storage.d.ts.map +0 -1
  185. package/dest/public/avm/opcodes/storage.js +0 -78
  186. package/dest/public/avm/revert_reason.d.ts +0 -18
  187. package/dest/public/avm/revert_reason.d.ts.map +0 -1
  188. package/dest/public/avm/revert_reason.js +0 -39
  189. package/dest/public/avm/serialization/buffer_cursor.d.ts +0 -26
  190. package/dest/public/avm/serialization/buffer_cursor.d.ts.map +0 -1
  191. package/dest/public/avm/serialization/buffer_cursor.js +0 -99
  192. package/dest/public/avm/serialization/bytecode_serialization.d.ts +0 -17
  193. package/dest/public/avm/serialization/bytecode_serialization.d.ts.map +0 -1
  194. package/dest/public/avm/serialization/bytecode_serialization.js +0 -336
  195. package/dest/public/avm/serialization/instruction_serialization.d.ts +0 -114
  196. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +0 -1
  197. package/dest/public/avm/serialization/instruction_serialization.js +0 -261
  198. package/dest/public/avm/test_utils.d.ts +0 -15
  199. package/dest/public/avm/test_utils.d.ts.map +0 -1
  200. package/dest/public/avm/test_utils.js +0 -44
  201. package/dest/public/debug_fn_name.d.ts +0 -18
  202. package/dest/public/debug_fn_name.d.ts.map +0 -1
  203. package/dest/public/debug_fn_name.js +0 -37
  204. package/dest/public/fixtures/custom_bytecode_tests.d.ts +0 -12
  205. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +0 -1
  206. package/dest/public/fixtures/custom_bytecode_tests.js +0 -174
  207. package/dest/public/fixtures/minimal_public_tx.d.ts +0 -4
  208. package/dest/public/fixtures/minimal_public_tx.d.ts.map +0 -1
  209. package/dest/public/fixtures/minimal_public_tx.js +0 -19
  210. package/dest/public/fixtures/opcode_spammer.d.ts +0 -122
  211. package/dest/public/fixtures/opcode_spammer.d.ts.map +0 -1
  212. package/dest/public/fixtures/opcode_spammer.js +0 -1653
  213. package/dest/public/hinting_db_sources.d.ts +0 -80
  214. package/dest/public/hinting_db_sources.d.ts.map +0 -1
  215. package/dest/public/hinting_db_sources.js +0 -356
  216. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +0 -53
  217. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +0 -1
  218. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +0 -131
  219. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +0 -42
  220. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +0 -1
  221. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +0 -86
  222. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +0 -30
  223. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +0 -1
  224. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +0 -171
  225. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +0 -23
  226. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +0 -1
  227. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +0 -31
  228. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts.map +0 -1
  229. package/dest/public/public_tx_simulator/measured_public_tx_simulator.js +0 -51
  230. package/dest/public/public_tx_simulator/public_tx_context.d.ts +0 -131
  231. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +0 -1
  232. package/dest/public/public_tx_simulator/public_tx_context.js +0 -300
  233. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts +0 -21
  234. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.d.ts.map +0 -1
  235. package/dest/public/public_tx_simulator/telemetry_public_tx_simulator.js +0 -415
  236. package/dest/public/side_effect_trace.d.ts +0 -87
  237. package/dest/public/side_effect_trace.d.ts.map +0 -1
  238. package/dest/public/side_effect_trace.js +0 -199
  239. package/dest/public/side_effect_trace_interface.d.ts +0 -22
  240. package/dest/public/side_effect_trace_interface.d.ts.map +0 -1
  241. package/dest/public/side_effect_trace_interface.js +0 -1
  242. package/dest/public/state_manager/index.d.ts +0 -2
  243. package/dest/public/state_manager/index.d.ts.map +0 -1
  244. package/dest/public/state_manager/index.js +0 -1
  245. package/dest/public/state_manager/nullifiers.d.ts +0 -61
  246. package/dest/public/state_manager/nullifiers.d.ts.map +0 -1
  247. package/dest/public/state_manager/nullifiers.js +0 -92
  248. package/dest/public/state_manager/public_storage.d.ts +0 -66
  249. package/dest/public/state_manager/public_storage.d.ts.map +0 -1
  250. package/dest/public/state_manager/public_storage.js +0 -145
  251. package/dest/public/state_manager/state_manager.d.ts +0 -170
  252. package/dest/public/state_manager/state_manager.d.ts.map +0 -1
  253. package/dest/public/state_manager/state_manager.js +0 -402
  254. package/src/public/avm/avm_context.ts +0 -61
  255. package/src/public/avm/avm_contract_call_result.ts +0 -69
  256. package/src/public/avm/avm_execution_environment.ts +0 -51
  257. package/src/public/avm/avm_gas.ts +0 -183
  258. package/src/public/avm/avm_machine_state.ts +0 -170
  259. package/src/public/avm/avm_memory_types.ts +0 -440
  260. package/src/public/avm/avm_simulator.ts +0 -279
  261. package/src/public/avm/avm_simulator_interface.ts +0 -8
  262. package/src/public/avm/calldata.ts +0 -100
  263. package/src/public/avm/errors.ts +0 -177
  264. package/src/public/avm/fixtures/avm_simulation_tester.ts +0 -122
  265. package/src/public/avm/fixtures/initializers.ts +0 -103
  266. package/src/public/avm/index.ts +0 -1
  267. package/src/public/avm/opcodes/accrued_substate.ts +0 -285
  268. package/src/public/avm/opcodes/addressing_mode.ts +0 -111
  269. package/src/public/avm/opcodes/arithmetic.ts +0 -129
  270. package/src/public/avm/opcodes/bitwise.ts +0 -113
  271. package/src/public/avm/opcodes/comparators.ts +0 -55
  272. package/src/public/avm/opcodes/contract.ts +0 -72
  273. package/src/public/avm/opcodes/control_flow.ts +0 -123
  274. package/src/public/avm/opcodes/conversion.ts +0 -104
  275. package/src/public/avm/opcodes/ec_add.ts +0 -105
  276. package/src/public/avm/opcodes/environment_getters.ts +0 -87
  277. package/src/public/avm/opcodes/external_calls.ts +0 -262
  278. package/src/public/avm/opcodes/hashing.ts +0 -151
  279. package/src/public/avm/opcodes/index.ts +0 -15
  280. package/src/public/avm/opcodes/instruction.ts +0 -136
  281. package/src/public/avm/opcodes/instruction_impl.ts +0 -36
  282. package/src/public/avm/opcodes/memory.ts +0 -293
  283. package/src/public/avm/opcodes/misc.ts +0 -102
  284. package/src/public/avm/opcodes/storage.ts +0 -95
  285. package/src/public/avm/revert_reason.ts +0 -58
  286. package/src/public/avm/serialization/buffer_cursor.ts +0 -118
  287. package/src/public/avm/serialization/bytecode_serialization.ts +0 -215
  288. package/src/public/avm/serialization/instruction_serialization.ts +0 -249
  289. package/src/public/avm/test_utils.ts +0 -64
  290. package/src/public/debug_fn_name.ts +0 -52
  291. package/src/public/fixtures/custom_bytecode_tests.ts +0 -228
  292. package/src/public/fixtures/minimal_public_tx.ts +0 -26
  293. package/src/public/fixtures/opcode_spammer.ts +0 -1717
  294. package/src/public/hinting_db_sources.ts +0 -609
  295. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +0 -210
  296. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +0 -134
  297. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +0 -239
  298. package/src/public/public_tx_simulator/measured_public_tx_simulator.ts +0 -105
  299. package/src/public/public_tx_simulator/public_tx_context.ts +0 -484
  300. package/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +0 -63
  301. package/src/public/side_effect_trace.ts +0 -293
  302. package/src/public/side_effect_trace_interface.ts +0 -28
  303. package/src/public/state_manager/index.ts +0 -1
  304. package/src/public/state_manager/nullifiers.ts +0 -103
  305. package/src/public/state_manager/public_storage.ts +0 -174
  306. package/src/public/state_manager/state_manager.ts +0 -569
  307. /package/dest/public/avm/{fixtures → testing}/account_proof_fetcher.js +0 -0
  308. /package/src/public/avm/{fixtures → testing}/account_proof.json +0 -0
  309. /package/src/public/avm/{fixtures → testing}/account_proof_fetcher.ts +0 -0
@@ -3,7 +3,7 @@ import { padArrayEnd } from '@aztec/foundation/collection';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
4
  import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
5
5
  import { sleep } from '@aztec/foundation/sleep';
6
- import { DateProvider, Timer, elapsed, executeTimeout } from '@aztec/foundation/timer';
6
+ import { DateProvider, Timer, elapsed, execWithSignal } from '@aztec/foundation/timer';
7
7
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
8
8
  import { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
9
9
  import { computeFeePayerBalanceLeafSlot, computeFeePayerBalanceStorageSlot } from '@aztec/protocol-contracts/fee-juice';
@@ -54,7 +54,7 @@ import { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js';
54
54
  import {
55
55
  type PublicTxSimulatorConfig,
56
56
  type PublicTxSimulatorInterface,
57
- TelemetryCppPublicTxSimulator,
57
+ TelemetryPublicTxSimulator,
58
58
  } from '../public_tx_simulator/index.js';
59
59
  import { GuardedMerkleTreeOperations } from './guarded_merkle_tree.js';
60
60
  import { PublicProcessorMetrics } from './public_processor_metrics.js';
@@ -76,17 +76,15 @@ export class PublicProcessorFactory {
76
76
  /**
77
77
  * Creates a new instance of a PublicProcessor.
78
78
  * @param globalVariables - The global variables for the block being processed.
79
- * @param skipFeeEnforcement - Allows disabling balance checks for fee estimations.
79
+ * @param contractsDB - Optional pre-populated contracts DB; a fresh one is constructed if omitted.
80
80
  * @returns A new instance of a PublicProcessor.
81
81
  */
82
82
  public create(
83
83
  merkleTree: MerkleTreeWriteOperations,
84
84
  globalVariables: GlobalVariables,
85
85
  config: PublicSimulatorConfig,
86
+ contractsDB: PublicContractsDB = new PublicContractsDB(this.contractDataSource, this.log.getBindings()),
86
87
  ): PublicProcessor {
87
- const bindings = this.log.getBindings();
88
- const contractsDB = new PublicContractsDB(this.contractDataSource, bindings);
89
-
90
88
  const guardedFork = new GuardedMerkleTreeOperations(merkleTree);
91
89
  const publicTxSimulator = this.createPublicTxSimulator(guardedFork, contractsDB, globalVariables, config);
92
90
 
@@ -97,7 +95,7 @@ export class PublicProcessorFactory {
97
95
  publicTxSimulator,
98
96
  this.dateProvider,
99
97
  this.telemetryClient,
100
- createLogger('simulator:public-processor', bindings),
98
+ createLogger('simulator:public-processor', this.log.getBindings()),
101
99
  );
102
100
  }
103
101
 
@@ -107,7 +105,7 @@ export class PublicProcessorFactory {
107
105
  globalVariables: GlobalVariables,
108
106
  config?: Partial<PublicTxSimulatorConfig>,
109
107
  ): PublicTxSimulatorInterface {
110
- return new TelemetryCppPublicTxSimulator(
108
+ return new TelemetryPublicTxSimulator(
111
109
  merkleTree,
112
110
  contractsDB,
113
111
  globalVariables,
@@ -125,6 +123,17 @@ class PublicProcessorTimeoutError extends Error {
125
123
  }
126
124
  }
127
125
 
126
+ class PublicProcessorAbortError extends Error {
127
+ constructor(message: string = 'Aborted while processing tx') {
128
+ super(message);
129
+ this.name = 'PublicProcessorAbortError';
130
+ }
131
+ }
132
+
133
+ function isPublicProcessorInterruptError(err: any) {
134
+ return err?.name === 'PublicProcessorTimeoutError' || err?.name === 'PublicProcessorAbortError';
135
+ }
136
+
128
137
  /**
129
138
  * Converts Txs lifted from the P2P module into ProcessedTx objects by executing
130
139
  * any public function calls in them. Txs with private calls only are unaffected.
@@ -161,7 +170,7 @@ export class PublicProcessor implements Traceable {
161
170
  limits: PublicProcessorLimits = {},
162
171
  validator: PublicProcessorValidator = {},
163
172
  ): Promise<[ProcessedTx[], FailedTx[], Tx[], NestedProcessReturnValues[], DebugLog[]]> {
164
- const { maxTransactions, deadline, maxBlockGas, maxBlobFields, isBuildingProposal } = limits;
173
+ const { maxTransactions, deadline, maxBlockGas, maxBlobFields, isBuildingProposal, signal } = limits;
165
174
  const { preprocessValidator, nullifierCache } = validator;
166
175
  const result: ProcessedTx[] = [];
167
176
  const usedTxs: Tx[] = [];
@@ -174,6 +183,8 @@ export class PublicProcessor implements Traceable {
174
183
  let totalPublicGas = new Gas(0, 0);
175
184
  let totalBlockGas = new Gas(0, 0);
176
185
  let totalBlobFields = 0;
186
+ let silentlySkippedCount = 0;
187
+ let totalSilentlySkippedDurationMs = 0;
177
188
 
178
189
  for await (const tx of txs) {
179
190
  // Only process up to the max tx limit
@@ -182,11 +193,15 @@ export class PublicProcessor implements Traceable {
182
193
  break;
183
194
  }
184
195
 
185
- // Bail if we've hit the deadline
196
+ // Bail if we've hit the deadline or have been interrupted.
186
197
  if (deadline && this.dateProvider.now() > +deadline) {
187
198
  this.log.warn(`Stopping tx processing due to timeout.`);
188
199
  break;
189
200
  }
201
+ if (signal?.aborted) {
202
+ this.log.warn(`Stopping tx processing due to abort signal.`);
203
+ break;
204
+ }
190
205
 
191
206
  const txHash = tx.getTxHash().toString();
192
207
 
@@ -224,11 +239,6 @@ export class PublicProcessor implements Traceable {
224
239
  failed.push({ tx, error: new Error(`Tx failed preprocess validation: ${reason}`) });
225
240
  returns.push(new NestedProcessReturnValues([]));
226
241
  continue;
227
- } else if (result.result === 'skipped') {
228
- const reason = result.reason.join(', ');
229
- this.log.debug(`Skipping tx ${txHash.toString()} due to pre-process validation: ${reason}`);
230
- returns.push(new NestedProcessReturnValues([]));
231
- continue;
232
242
  } else {
233
243
  this.log.trace(`Tx ${txHash.toString()} is valid before processing.`);
234
244
  }
@@ -244,7 +254,9 @@ export class PublicProcessor implements Traceable {
244
254
  this.contractsDB.createCheckpoint();
245
255
 
246
256
  try {
247
- const [processedTx, returnValues, txDebugLogs] = await this.processTx(tx, deadline);
257
+ const [txProcessingTimeMs, [processedTx, returnValues, txDebugLogs]] = await elapsed(() =>
258
+ this.processTx(tx, deadline, signal),
259
+ );
248
260
 
249
261
  // Inject a fake processing failure after N txs if requested
250
262
  const fakeThrowAfter = this.opts.fakeThrowAfterProcessingTxCount;
@@ -265,8 +277,12 @@ export class PublicProcessor implements Traceable {
265
277
  txBlobFields,
266
278
  totalBlobFields,
267
279
  maxBlobFields,
280
+ txProcessingTimeMs,
268
281
  },
269
282
  );
283
+ silentlySkippedCount += 1;
284
+ totalSilentlySkippedDurationMs += txProcessingTimeMs;
285
+ this.metrics.recordSilentlySkipped(txProcessingTimeMs);
270
286
  // Need to revert the checkpoint here and don't go any further
271
287
  await checkpoint.revert();
272
288
  this.contractsDB.revertCheckpoint();
@@ -310,15 +326,11 @@ export class PublicProcessor implements Traceable {
310
326
  // Commit the tx-level contracts checkpoint on success
311
327
  this.contractsDB.commitCheckpoint();
312
328
  } catch (err: any) {
313
- if (err?.name === 'PublicProcessorTimeoutError') {
314
- this.log.warn(`Stopping tx processing due to timeout.`);
315
- // We hit the transaction execution deadline.
316
- // There may still be a transaction executing on a worker thread (C++ via NAPI).
317
- // Signal cancellation AND WAIT for the simulation to actually stop.
318
- // This is critical because C++ might be in the middle of a slow operation (e.g., pad_trees)
319
- // and won't check the cancellation flag until that operation completes.
320
- // Without waiting, we'd proceed to revert checkpoints while C++ is still writing to state.
321
- // Wait for C++ to stop gracefully.
329
+ if (isPublicProcessorInterruptError(err)) {
330
+ const interruptReason = err.name === 'PublicProcessorTimeoutError' ? 'timeout' : 'abort signal';
331
+ this.log.warn(`Stopping tx processing due to ${interruptReason}.`);
332
+ // The tx may still be executing on a worker thread (C++ via NAPI).
333
+ // Signal cancellation AND WAIT for the simulation to actually stop before touching fork checkpoints.
322
334
  await this.publicTxSimulator.cancel?.();
323
335
 
324
336
  // Now stop the guarded fork to prevent any further TS-side access to the world state.
@@ -364,13 +376,24 @@ export class PublicProcessor implements Traceable {
364
376
  const rate = duration > 0 ? totalPublicGas.l2Gas / duration : 0;
365
377
  this.metrics.recordAllTxs(totalPublicGas, rate);
366
378
 
367
- this.log.info(`Processed ${result.length} successful txs and ${failed.length} failed txs in ${duration}s`, {
368
- duration,
369
- rate,
370
- totalPublicGas,
371
- totalBlockGas,
372
- totalSizeInBytes,
373
- });
379
+ const silentlySkippedDurationMs = Math.round(totalSilentlySkippedDurationMs);
380
+ this.log.info(
381
+ `Processed ${result.length} successful txs and ${failed.length} failed txs ` +
382
+ `(${silentlySkippedCount} silently skipped, ${silentlySkippedDurationMs}ms wasted) ` +
383
+ `in ${duration}s`,
384
+ {
385
+ blockNumber: this.globalVariables.blockNumber,
386
+ successfulCount: result.length,
387
+ failedCount: failed.length,
388
+ duration,
389
+ rate,
390
+ totalPublicGas,
391
+ totalBlockGas,
392
+ totalSizeInBytes,
393
+ silentlySkippedCount,
394
+ silentlySkippedDurationMs,
395
+ },
396
+ );
374
397
 
375
398
  return [result, failed, usedTxs, returns, debugLogs];
376
399
  }
@@ -395,9 +418,10 @@ export class PublicProcessor implements Traceable {
395
418
  private async processTx(
396
419
  tx: Tx,
397
420
  deadline: Date | undefined,
421
+ signal: AbortSignal | undefined,
398
422
  ): Promise<[ProcessedTx, NestedProcessReturnValues[], DebugLog[]]> {
399
423
  const [time, [processedTx, returnValues, debugLogs]] = await elapsed(() =>
400
- this.processTxWithinDeadline(tx, deadline),
424
+ this.processTxWithinDeadline(tx, deadline, signal),
401
425
  );
402
426
 
403
427
  this.log.verbose(
@@ -451,10 +475,11 @@ export class PublicProcessor implements Traceable {
451
475
  this.metrics.recordTreeInsertions(Number(treeInsertionEnd - treeInsertionStart) / 1_000);
452
476
  }
453
477
 
454
- /** Processes the given tx within deadline. Returns timeout if deadline is hit. */
478
+ /** Processes the given tx within deadline or until the signal is aborted. */
455
479
  private async processTxWithinDeadline(
456
480
  tx: Tx,
457
481
  deadline: Date | undefined,
482
+ signal: AbortSignal | undefined,
458
483
  ): Promise<[ProcessedTx, NestedProcessReturnValues[] | undefined, DebugLog[]]> {
459
484
  const innerProcessFn: () => Promise<[ProcessedTx, NestedProcessReturnValues[] | undefined, DebugLog[]]> =
460
485
  tx.hasPublicCalls() ? () => this.processTxWithPublicCalls(tx) : () => this.processPrivateOnlyTx(tx);
@@ -471,27 +496,38 @@ export class PublicProcessor implements Traceable {
471
496
  }
472
497
  : innerProcessFn;
473
498
 
474
- if (!deadline) {
499
+ const processingSignal = this.getProcessingSignal(tx, deadline, signal);
500
+ if (!processingSignal) {
475
501
  return await processFn();
476
502
  }
477
503
 
478
- const txHash = tx.getTxHash();
504
+ return await execWithSignal(
505
+ () => processFn(),
506
+ processingSignal,
507
+ signal =>
508
+ signal.reason?.name === 'TimeoutError' ? new PublicProcessorTimeoutError() : new PublicProcessorAbortError(),
509
+ );
510
+ }
511
+
512
+ private getProcessingSignal(tx: Tx, deadline: Date | undefined, signal: AbortSignal | undefined) {
513
+ if (!deadline) {
514
+ return signal;
515
+ }
516
+
479
517
  const timeout = +deadline - this.dateProvider.now();
480
518
  if (timeout <= 0) {
481
519
  throw new PublicProcessorTimeoutError();
482
520
  }
483
521
 
522
+ const txHash = tx.getTxHash();
484
523
  this.log.debug(`Processing tx ${txHash.toString()} within ${timeout}ms`, {
485
524
  deadline: deadline.toISOString(),
486
525
  now: new Date(this.dateProvider.now()).toISOString(),
487
526
  txHash,
488
527
  });
489
528
 
490
- return await executeTimeout(
491
- () => processFn(),
492
- timeout,
493
- () => new PublicProcessorTimeoutError(),
494
- );
529
+ const timeoutSignal = AbortSignal.timeout(timeout);
530
+ return signal ? AbortSignal.any([signal, timeoutSignal]) : timeoutSignal;
495
531
  }
496
532
 
497
533
  /**
@@ -548,7 +584,7 @@ export class PublicProcessor implements Traceable {
548
584
  // Fee payment insertion has already been done. Do the rest.
549
585
  await this.doTreeInsertionsForPrivateOnlyTx(processedTx);
550
586
 
551
- await this.contractsDB.addNewContracts(tx);
587
+ this.contractsDB.addNewContracts(tx);
552
588
 
553
589
  return [processedTx, undefined, []];
554
590
  }
@@ -30,6 +30,9 @@ export class PublicProcessorMetrics {
30
30
 
31
31
  private treeInsertionDuration: Histogram;
32
32
 
33
+ private silentlySkippedCount: UpDownCounter;
34
+ private silentlySkippedDuration: Histogram;
35
+
33
36
  constructor(client: TelemetryClient, name = 'PublicProcessor') {
34
37
  this.tracer = client.getTracer(name);
35
38
  const meter = client.getMeter(name);
@@ -60,6 +63,10 @@ export class PublicProcessorMetrics {
60
63
  this.gasRate = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_GAS_RATE);
61
64
 
62
65
  this.treeInsertionDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TREE_INSERTION);
66
+
67
+ this.silentlySkippedCount = createUpDownCounterWithDefault(meter, Metrics.PUBLIC_PROCESSOR_SILENTLY_SKIPPED_COUNT);
68
+
69
+ this.silentlySkippedDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_SILENTLY_SKIPPED_DURATION);
63
70
  }
64
71
 
65
72
  recordPhaseDuration(phaseName: TxExecutionPhase, durationMs: number) {
@@ -123,4 +130,9 @@ export class PublicProcessorMetrics {
123
130
  recordTreeInsertions(durationUs: number) {
124
131
  this.treeInsertionDuration.record(Math.ceil(durationUs));
125
132
  }
133
+
134
+ recordSilentlySkipped(durationMs: number) {
135
+ this.silentlySkippedCount.add(1);
136
+ this.silentlySkippedDuration.record(Math.ceil(durationMs));
137
+ }
126
138
  }
@@ -52,6 +52,7 @@ export class ContractProviderForCpp implements ContractProvider {
52
52
  return serializeWithMessagePack(contractClass);
53
53
  };
54
54
 
55
+ // eslint-disable-next-line require-await
55
56
  public addContracts = async (contractDeploymentDataBuffer: Buffer): Promise<void> => {
56
57
  this.log.trace(`Contract provider callback: addContracts`);
57
58
 
@@ -61,8 +62,8 @@ export class ContractProviderForCpp implements ContractProvider {
61
62
  const contractDeploymentData = ContractDeploymentData.fromPlainObject(rawData);
62
63
 
63
64
  // Add contracts to the contracts DB
64
- this.log.trace(`Calling contractsDB.addContracts`);
65
- await this.contractsDB.addContracts(contractDeploymentData);
65
+ this.log.trace(`Calling contractsDB.addContractsFromLogs`);
66
+ this.contractsDB.addContractsFromLogs(contractDeploymentData);
66
67
  };
67
68
 
68
69
  public getBytecodeCommitment = async (classId: string): Promise<Buffer | undefined> => {
@@ -15,13 +15,13 @@ import { mkdirSync, writeFileSync } from 'fs';
15
15
  import { join } from 'path';
16
16
 
17
17
  import type { PublicContractsDB } from '../public_db_sources.js';
18
- import { CppPublicTxSimulator } from './cpp_public_tx_simulator.js';
18
+ import { PublicTxSimulator } from './public_tx_simulator.js';
19
19
 
20
20
  /**
21
21
  * A C++ public tx simulator that dumps AVM circuit inputs to disk after simulation.
22
22
  * Used during nightly CI runs to collect circuit inputs for benchmarking.
23
23
  */
24
- export class DumpingCppPublicTxSimulator extends CppPublicTxSimulator {
24
+ export class DumpingPublicTxSimulator extends PublicTxSimulator {
25
25
  private readonly outputDir: string;
26
26
 
27
27
  constructor(
@@ -5,13 +5,13 @@ import type { GlobalVariables } from '@aztec/stdlib/tx';
5
5
  import type { TelemetryClient } from '@aztec/telemetry-client';
6
6
 
7
7
  import type { PublicContractsDB } from '../public_db_sources.js';
8
- import { TelemetryCppPublicTxSimulator } from './cpp_public_tx_simulator.js';
9
- import { DumpingCppPublicTxSimulator } from './dumping_cpp_public_tx_simulator.js';
8
+ import { DumpingPublicTxSimulator } from './dumping_public_tx_simulator.js';
9
+ import { TelemetryPublicTxSimulator } from './public_tx_simulator.js';
10
10
 
11
11
  /**
12
12
  * Creates a public tx simulator for block building.
13
- * Uses DumpingCppPublicTxSimulator if DUMP_AVM_INPUTS_TO_DIR env var is set (for CI/testing avm circuit),
14
- * otherwise uses TelemetryCppPublicTxSimulator (for production).
13
+ * Uses DumpingPublicTxSimulator if DUMP_AVM_INPUTS_TO_DIR env var is set (for CI/testing avm circuit),
14
+ * otherwise uses TelemetryPublicTxSimulator (for production).
15
15
  */
16
16
  export function createPublicTxSimulatorForBlockBuilding(
17
17
  merkleTree: MerkleTreeWriteOperations,
@@ -38,7 +38,7 @@ export function createPublicTxSimulatorForBlockBuilding(
38
38
  collectHints: true,
39
39
  collectPublicInputs: true,
40
40
  };
41
- return new DumpingCppPublicTxSimulator(merkleTree, contractsDB, globalVariables, dumpingConfig, dumpDir, bindings);
41
+ return new DumpingPublicTxSimulator(merkleTree, contractsDB, globalVariables, dumpingConfig, dumpDir, bindings);
42
42
  }
43
- return new TelemetryCppPublicTxSimulator(merkleTree, contractsDB, globalVariables, telemetryClient, config, bindings);
43
+ return new TelemetryPublicTxSimulator(merkleTree, contractsDB, globalVariables, telemetryClient, config, bindings);
44
44
  }
@@ -1,7 +1,5 @@
1
- export * from './public_tx_simulator.js';
2
- export { CppPublicTxSimulator, TelemetryCppPublicTxSimulator } from './cpp_public_tx_simulator.js';
3
- export { DumpingCppPublicTxSimulator } from './dumping_cpp_public_tx_simulator.js';
1
+ export { PublicTxSimulator, TelemetryPublicTxSimulator } from './public_tx_simulator.js';
2
+ export { DumpingPublicTxSimulator } from './dumping_public_tx_simulator.js';
4
3
  export { createPublicTxSimulatorForBlockBuilding } from './factories.js';
5
4
  export type { PublicTxSimulatorInterface } from './public_tx_simulator_interface.js';
6
- export { TelemetryPublicTxSimulator } from './telemetry_public_tx_simulator.js';
7
5
  export type { PublicTxResult, PublicSimulatorConfig as PublicTxSimulatorConfig } from '@aztec/stdlib/avm';