@aztec/simulator 0.0.1-commit.96bb3f7 → 0.0.1-commit.993d240

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 (254) 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 +7 -5
  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 +7 -5
  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 +6 -5
  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 +64 -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/base_avm_simulation_tester.d.ts +2 -1
  52. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  53. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +17 -2
  54. package/dest/public/avm/fixtures/initializers.d.ts +1 -1
  55. package/dest/public/avm/fixtures/initializers.d.ts.map +1 -1
  56. package/dest/public/avm/fixtures/initializers.js +2 -1
  57. package/dest/public/avm/fixtures/utils.d.ts +1 -1
  58. package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
  59. package/dest/public/avm/fixtures/utils.js +3 -0
  60. package/dest/public/avm/opcodes/accrued_substate.d.ts +17 -18
  61. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  62. package/dest/public/avm/opcodes/accrued_substate.js +41 -42
  63. package/dest/public/avm/opcodes/arithmetic.d.ts +8 -8
  64. package/dest/public/avm/opcodes/arithmetic.d.ts.map +1 -1
  65. package/dest/public/avm/opcodes/arithmetic.js +1 -1
  66. package/dest/public/avm/opcodes/bitwise.d.ts +7 -7
  67. package/dest/public/avm/opcodes/bitwise.d.ts.map +1 -1
  68. package/dest/public/avm/opcodes/bitwise.js +5 -5
  69. package/dest/public/avm/opcodes/comparators.d.ts +4 -4
  70. package/dest/public/avm/opcodes/comparators.d.ts.map +1 -1
  71. package/dest/public/avm/opcodes/comparators.js +1 -1
  72. package/dest/public/avm/opcodes/contract.d.ts +5 -4
  73. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  74. package/dest/public/avm/opcodes/contract.js +13 -9
  75. package/dest/public/avm/opcodes/control_flow.d.ts +3 -3
  76. package/dest/public/avm/opcodes/control_flow.d.ts.map +1 -1
  77. package/dest/public/avm/opcodes/control_flow.js +4 -4
  78. package/dest/public/avm/opcodes/conversion.d.ts +3 -3
  79. package/dest/public/avm/opcodes/conversion.d.ts.map +1 -1
  80. package/dest/public/avm/opcodes/conversion.js +4 -4
  81. package/dest/public/avm/opcodes/ec_add.d.ts +4 -6
  82. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  83. package/dest/public/avm/opcodes/ec_add.js +22 -27
  84. package/dest/public/avm/opcodes/environment_getters.d.ts +3 -3
  85. package/dest/public/avm/opcodes/environment_getters.d.ts.map +1 -1
  86. package/dest/public/avm/opcodes/environment_getters.js +4 -4
  87. package/dest/public/avm/opcodes/external_calls.d.ts +9 -9
  88. package/dest/public/avm/opcodes/external_calls.d.ts.map +1 -1
  89. package/dest/public/avm/opcodes/external_calls.js +23 -23
  90. package/dest/public/avm/opcodes/hashing.d.ts +8 -8
  91. package/dest/public/avm/opcodes/hashing.d.ts.map +1 -1
  92. package/dest/public/avm/opcodes/hashing.js +12 -12
  93. package/dest/public/avm/opcodes/instruction_impl.d.ts +4 -4
  94. package/dest/public/avm/opcodes/instruction_impl.d.ts.map +1 -1
  95. package/dest/public/avm/opcodes/instruction_impl.js +4 -4
  96. package/dest/public/avm/opcodes/memory.d.ts +14 -14
  97. package/dest/public/avm/opcodes/memory.d.ts.map +1 -1
  98. package/dest/public/avm/opcodes/memory.js +25 -25
  99. package/dest/public/avm/opcodes/misc.d.ts +3 -3
  100. package/dest/public/avm/opcodes/misc.d.ts.map +1 -1
  101. package/dest/public/avm/opcodes/misc.js +4 -4
  102. package/dest/public/avm/opcodes/storage.d.ts +16 -15
  103. package/dest/public/avm/opcodes/storage.d.ts.map +1 -1
  104. package/dest/public/avm/opcodes/storage.js +34 -24
  105. package/dest/public/avm/serialization/bytecode_serialization.js +3 -3
  106. package/dest/public/avm/serialization/instruction_serialization.d.ts +2 -2
  107. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  108. package/dest/public/avm/serialization/instruction_serialization.js +1 -1
  109. package/dest/public/contracts_db_checkpoint.d.ts +2 -2
  110. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -1
  111. package/dest/public/contracts_db_checkpoint.js +1 -1
  112. package/dest/public/debug_fn_name.d.ts +4 -4
  113. package/dest/public/debug_fn_name.d.ts.map +1 -1
  114. package/dest/public/debug_fn_name.js +7 -5
  115. package/dest/public/executor_metrics.d.ts +1 -1
  116. package/dest/public/executor_metrics.d.ts.map +1 -1
  117. package/dest/public/executor_metrics.js +7 -2
  118. package/dest/public/fixtures/amm_test.js +2 -2
  119. package/dest/public/fixtures/bulk_test.d.ts +3 -3
  120. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  121. package/dest/public/fixtures/bulk_test.js +31 -4
  122. package/dest/public/fixtures/custom_bytecode_tests.d.ts +13 -11
  123. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
  124. package/dest/public/fixtures/custom_bytecode_tests.js +79 -19
  125. package/dest/public/fixtures/minimal_public_tx.js +2 -2
  126. package/dest/public/fixtures/opcode_spammer.d.ts +3 -4
  127. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -1
  128. package/dest/public/fixtures/opcode_spammer.js +100 -136
  129. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +6 -5
  130. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  131. package/dest/public/fixtures/public_tx_simulation_tester.js +37 -10
  132. package/dest/public/fixtures/utils.d.ts +2 -2
  133. package/dest/public/fixtures/utils.d.ts.map +1 -1
  134. package/dest/public/fixtures/utils.js +19 -20
  135. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts +21 -7
  136. package/dest/public/fuzzing/avm_fuzzer_simulator.d.ts.map +1 -1
  137. package/dest/public/fuzzing/avm_fuzzer_simulator.js +42 -10
  138. package/dest/public/fuzzing/avm_simulator_bin.js +15 -8
  139. package/dest/public/hinting_db_sources.d.ts +5 -5
  140. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  141. package/dest/public/hinting_db_sources.js +8 -7
  142. package/dest/public/public_db_sources.d.ts +9 -5
  143. package/dest/public/public_db_sources.d.ts.map +1 -1
  144. package/dest/public/public_db_sources.js +20 -14
  145. package/dest/public/public_processor/guarded_merkle_tree.d.ts +5 -5
  146. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  147. package/dest/public/public_processor/guarded_merkle_tree.js +5 -5
  148. package/dest/public/public_processor/public_processor.d.ts +11 -6
  149. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  150. package/dest/public/public_processor/public_processor.js +112 -72
  151. package/dest/public/public_processor/public_processor_metrics.d.ts +5 -2
  152. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  153. package/dest/public/public_processor/public_processor_metrics.js +28 -4
  154. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +3 -2
  155. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -1
  156. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +5 -4
  157. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +5 -5
  158. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
  159. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +10 -10
  160. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +4 -4
  161. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -1
  162. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +7 -7
  163. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +4 -4
  164. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -1
  165. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +6 -6
  166. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts +3 -2
  167. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.d.ts.map +1 -1
  168. package/dest/public/public_tx_simulator/dumping_cpp_public_tx_simulator.js +2 -2
  169. package/dest/public/public_tx_simulator/factories.d.ts +3 -2
  170. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
  171. package/dest/public/public_tx_simulator/factories.js +4 -4
  172. package/dest/public/public_tx_simulator/measured_public_tx_simulator.d.ts +1 -1
  173. package/dest/public/public_tx_simulator/public_tx_context.d.ts +10 -5
  174. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  175. package/dest/public/public_tx_simulator/public_tx_context.js +16 -18
  176. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +11 -5
  177. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  178. package/dest/public/public_tx_simulator/public_tx_simulator.js +26 -16
  179. package/dest/public/side_effect_trace.d.ts +5 -4
  180. package/dest/public/side_effect_trace.d.ts.map +1 -1
  181. package/dest/public/side_effect_trace.js +3 -3
  182. package/dest/public/state_manager/state_manager.d.ts +10 -4
  183. package/dest/public/state_manager/state_manager.d.ts.map +1 -1
  184. package/dest/public/state_manager/state_manager.js +14 -7
  185. package/dest/public/test_executor_metrics.d.ts +8 -2
  186. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  187. package/dest/public/test_executor_metrics.js +24 -2
  188. package/package.json +17 -17
  189. package/src/private/acvm/acvm.ts +4 -3
  190. package/src/private/acvm_native.ts +11 -5
  191. package/src/private/acvm_wasm.ts +11 -4
  192. package/src/private/circuit_recording/circuit_recorder.ts +7 -5
  193. package/src/private/circuit_recording/file_circuit_recorder.ts +7 -2
  194. package/src/private/circuit_recording/memory_circuit_recorder.ts +6 -4
  195. package/src/private/factory.ts +7 -4
  196. package/src/public/avm/avm_context.ts +2 -2
  197. package/src/public/avm/avm_contract_call_result.ts +8 -6
  198. package/src/public/avm/avm_execution_environment.ts +9 -4
  199. package/src/public/avm/avm_gas.ts +2 -2
  200. package/src/public/avm/avm_machine_state.ts +6 -5
  201. package/src/public/avm/avm_memory_types.ts +4 -0
  202. package/src/public/avm/avm_simulator.ts +9 -6
  203. package/src/public/avm/calldata.ts +101 -0
  204. package/src/public/avm/fixtures/account_proof.json +553 -0
  205. package/src/public/avm/fixtures/account_proof_fetcher.ts +166 -0
  206. package/src/public/avm/fixtures/avm_simulation_tester.ts +8 -2
  207. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +22 -2
  208. package/src/public/avm/fixtures/initializers.ts +2 -1
  209. package/src/public/avm/fixtures/utils.ts +3 -0
  210. package/src/public/avm/opcodes/accrued_substate.ts +30 -33
  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 +9 -8
  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 +21 -31
  218. package/src/public/avm/opcodes/environment_getters.ts +3 -3
  219. package/src/public/avm/opcodes/external_calls.ts +18 -17
  220. package/src/public/avm/opcodes/hashing.ts +6 -6
  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/contracts_db_checkpoint.ts +1 -1
  228. package/src/public/debug_fn_name.ts +10 -8
  229. package/src/public/executor_metrics.ts +4 -1
  230. package/src/public/fixtures/amm_test.ts +2 -2
  231. package/src/public/fixtures/bulk_test.ts +29 -4
  232. package/src/public/fixtures/custom_bytecode_tests.ts +166 -19
  233. package/src/public/fixtures/minimal_public_tx.ts +2 -2
  234. package/src/public/fixtures/opcode_spammer.ts +200 -125
  235. package/src/public/fixtures/public_tx_simulation_tester.ts +47 -6
  236. package/src/public/fixtures/utils.ts +26 -22
  237. package/src/public/fuzzing/avm_fuzzer_simulator.ts +61 -13
  238. package/src/public/fuzzing/avm_simulator_bin.ts +26 -4
  239. package/src/public/hinting_db_sources.ts +10 -7
  240. package/src/public/public_db_sources.ts +36 -19
  241. package/src/public/public_processor/guarded_merkle_tree.ts +6 -6
  242. package/src/public/public_processor/public_processor.ts +156 -93
  243. package/src/public/public_processor/public_processor_metrics.ts +22 -4
  244. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +9 -5
  245. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +11 -8
  246. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +7 -5
  247. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +7 -5
  248. package/src/public/public_tx_simulator/dumping_cpp_public_tx_simulator.ts +3 -1
  249. package/src/public/public_tx_simulator/factories.ts +6 -3
  250. package/src/public/public_tx_simulator/public_tx_context.ts +21 -16
  251. package/src/public/public_tx_simulator/public_tx_simulator.ts +32 -17
  252. package/src/public/side_effect_trace.ts +5 -2
  253. package/src/public/state_manager/state_manager.ts +29 -20
  254. package/src/public/test_executor_metrics.ts +27 -3
@@ -376,13 +376,14 @@ import { padArrayEnd } from '@aztec/foundation/collection';
376
376
  import { Fr } from '@aztec/foundation/curves/bn254';
377
377
  import { createLogger } from '@aztec/foundation/log';
378
378
  import { sleep } from '@aztec/foundation/sleep';
379
- import { DateProvider, Timer, elapsed, executeTimeout } from '@aztec/foundation/timer';
379
+ import { DateProvider, Timer, elapsed, execWithSignal } from '@aztec/foundation/timer';
380
380
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
381
381
  import { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
382
382
  import { computeFeePayerBalanceLeafSlot, computeFeePayerBalanceStorageSlot } from '@aztec/protocol-contracts/fee-juice';
383
383
  import { AvmCircuitInputs, AvmExecutionHints, PublicDataWrite } from '@aztec/stdlib/avm';
384
384
  import { computeTransactionFee } from '@aztec/stdlib/fees';
385
385
  import { Gas } from '@aztec/stdlib/gas';
386
+ import { NullDebugLogStore } from '@aztec/stdlib/logs';
386
387
  import { ProvingRequestType } from '@aztec/stdlib/proofs';
387
388
  import { MerkleTreeId } from '@aztec/stdlib/trees';
388
389
  import { NestedProcessReturnValues, makeProcessedTxFromPrivateOnlyTx, makeProcessedTxFromTxWithPublicCalls } from '@aztec/stdlib/tx';
@@ -399,24 +400,25 @@ import { PublicProcessorMetrics } from './public_processor_metrics.js';
399
400
  contractDataSource;
400
401
  dateProvider;
401
402
  telemetryClient;
402
- constructor(contractDataSource, dateProvider = new DateProvider(), telemetryClient = getTelemetryClient()){
403
+ log;
404
+ constructor(contractDataSource, dateProvider = new DateProvider(), telemetryClient = getTelemetryClient(), bindings){
403
405
  this.contractDataSource = contractDataSource;
404
406
  this.dateProvider = dateProvider;
405
407
  this.telemetryClient = telemetryClient;
408
+ this.log = createLogger('simulator:public-processor-factory', bindings);
406
409
  }
407
410
  /**
408
411
  * Creates a new instance of a PublicProcessor.
409
412
  * @param globalVariables - The global variables for the block being processed.
410
- * @param skipFeeEnforcement - Allows disabling balance checks for fee estimations.
413
+ * @param contractsDB - Optional pre-populated contracts DB; a fresh one is constructed if omitted.
411
414
  * @returns A new instance of a PublicProcessor.
412
- */ create(merkleTree, globalVariables, config) {
413
- const contractsDB = new PublicContractsDB(this.contractDataSource);
415
+ */ create(merkleTree, globalVariables, config, contractsDB = new PublicContractsDB(this.contractDataSource, this.log.getBindings())) {
414
416
  const guardedFork = new GuardedMerkleTreeOperations(merkleTree);
415
417
  const publicTxSimulator = this.createPublicTxSimulator(guardedFork, contractsDB, globalVariables, config);
416
- return new PublicProcessor(globalVariables, guardedFork, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient);
418
+ return new PublicProcessor(globalVariables, guardedFork, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient, createLogger('simulator:public-processor', this.log.getBindings()));
417
419
  }
418
420
  createPublicTxSimulator(merkleTree, contractsDB, globalVariables, config) {
419
- return new TelemetryCppPublicTxSimulator(merkleTree, contractsDB, globalVariables, this.telemetryClient, config);
421
+ return new TelemetryCppPublicTxSimulator(merkleTree, contractsDB, globalVariables, this.telemetryClient, config, this.log.getBindings());
420
422
  }
421
423
  }
422
424
  class PublicProcessorTimeoutError extends Error {
@@ -425,6 +427,15 @@ class PublicProcessorTimeoutError extends Error {
425
427
  this.name = 'PublicProcessorTimeoutError';
426
428
  }
427
429
  }
430
+ class PublicProcessorAbortError extends Error {
431
+ constructor(message = 'Aborted while processing tx'){
432
+ super(message);
433
+ this.name = 'PublicProcessorAbortError';
434
+ }
435
+ }
436
+ function isPublicProcessorInterruptError(err) {
437
+ return err?.name === 'PublicProcessorTimeoutError' || err?.name === 'PublicProcessorAbortError';
438
+ }
428
439
  _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
429
440
  [Attributes.TX_HASH]: tx.getTxHash().toString()
430
441
  })), _dec1 = trackSpan('PublicProcessor.processPrivateOnlyTx', (tx)=>({
@@ -443,6 +454,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
443
454
  dateProvider;
444
455
  log;
445
456
  opts;
457
+ debugLogStore;
446
458
  static{
447
459
  ({ e: [_initProto] } = _apply_decs_2203_r(this, [
448
460
  [
@@ -463,7 +475,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
463
475
  ], []));
464
476
  }
465
477
  metrics;
466
- constructor(globalVariables, guardedMerkleTree, contractsDB, publicTxSimulator, dateProvider, telemetryClient = getTelemetryClient(), log = createLogger('simulator:public-processor'), opts = {}){
478
+ constructor(globalVariables, guardedMerkleTree, contractsDB, publicTxSimulator, dateProvider, telemetryClient = getTelemetryClient(), log, opts = {}, debugLogStore = new NullDebugLogStore()){
467
479
  this.globalVariables = globalVariables;
468
480
  this.guardedMerkleTree = guardedMerkleTree;
469
481
  this.contractsDB = contractsDB;
@@ -471,6 +483,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
471
483
  this.dateProvider = dateProvider;
472
484
  this.log = log;
473
485
  this.opts = opts;
486
+ this.debugLogStore = debugLogStore;
474
487
  _initProto(this);
475
488
  this.metrics = new PublicProcessorMetrics(telemetryClient, 'PublicProcessor');
476
489
  }
@@ -484,43 +497,52 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
484
497
  * @param validator - Pre-process validator and nullifier cache to use for processing the txs.
485
498
  * @returns The list of processed txs with their circuit simulation outputs.
486
499
  */ async process(txs, limits = {}, validator = {}) {
487
- const { maxTransactions, maxBlockSize, deadline, maxBlockGas, maxBlobFields } = limits;
500
+ const { maxTransactions, deadline, maxBlockGas, maxBlobFields, isBuildingProposal, signal } = limits;
488
501
  const { preprocessValidator, nullifierCache } = validator;
489
502
  const result = [];
490
503
  const usedTxs = [];
491
504
  const failed = [];
505
+ const debugLogs = [];
492
506
  const timer = new Timer();
493
507
  let totalSizeInBytes = 0;
494
508
  let returns = [];
495
509
  let totalPublicGas = new Gas(0, 0);
496
510
  let totalBlockGas = new Gas(0, 0);
497
511
  let totalBlobFields = 0;
512
+ let silentlySkippedCount = 0;
513
+ let totalSilentlySkippedDurationMs = 0;
498
514
  for await (const tx of txs){
499
515
  // Only process up to the max tx limit
500
516
  if (maxTransactions !== undefined && result.length >= maxTransactions) {
501
517
  this.log.debug(`Stopping tx processing due to reaching the max tx limit.`);
502
518
  break;
503
519
  }
504
- // Bail if we've hit the deadline
520
+ // Bail if we've hit the deadline or have been interrupted.
505
521
  if (deadline && this.dateProvider.now() > +deadline) {
506
522
  this.log.warn(`Stopping tx processing due to timeout.`);
507
523
  break;
508
524
  }
509
- // Skip this tx if it'd exceed max block size
525
+ if (signal?.aborted) {
526
+ this.log.warn(`Stopping tx processing due to abort signal.`);
527
+ break;
528
+ }
510
529
  const txHash = tx.getTxHash().toString();
511
- const preTxSizeInBytes = tx.getEstimatedPrivateTxEffectsSize();
512
- if (maxBlockSize !== undefined && totalSizeInBytes + preTxSizeInBytes > maxBlockSize) {
513
- this.log.warn(`Skipping processing of tx ${txHash} sized ${preTxSizeInBytes} bytes due to block size limit`, {
530
+ // Skip this tx if its estimated blob fields would exceed the limit.
531
+ // Only done during proposal building: during re-execution we must process the exact txs from the proposal.
532
+ const txBlobFields = tx.getPrivateTxEffectsSizeInFields();
533
+ if (isBuildingProposal && maxBlobFields !== undefined && totalBlobFields + txBlobFields > maxBlobFields) {
534
+ this.log.warn(`Skipping tx ${txHash} with ${txBlobFields} fields from private side effects due to blob fields limit`, {
514
535
  txHash,
515
- sizeInBytes: preTxSizeInBytes,
516
- totalSizeInBytes,
517
- maxBlockSize
536
+ txBlobFields,
537
+ totalBlobFields,
538
+ maxBlobFields
518
539
  });
519
540
  continue;
520
541
  }
521
- // Skip this tx if its gas limit would exceed the block gas limit
542
+ // Skip this tx if its gas limit would exceed the block gas limit (either da or l2).
543
+ // Only done during proposal building: during re-execution we must process the exact txs from the proposal.
522
544
  const txGasLimit = tx.data.constants.txContext.gasSettings.gasLimits;
523
- if (maxBlockGas !== undefined && totalBlockGas.add(txGasLimit).gtAny(maxBlockGas)) {
545
+ if (isBuildingProposal && maxBlockGas !== undefined && totalBlockGas.add(txGasLimit).gtAny(maxBlockGas)) {
524
546
  this.log.warn(`Skipping processing of tx ${txHash} due to block gas limit`, {
525
547
  txHash,
526
548
  txGasLimit,
@@ -542,11 +564,6 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
542
564
  });
543
565
  returns.push(new NestedProcessReturnValues([]));
544
566
  continue;
545
- } else if (result.result === 'skipped') {
546
- const reason = result.reason.join(', ');
547
- this.log.debug(`Skipping tx ${txHash.toString()} due to pre-process validation: ${reason}`);
548
- returns.push(new NestedProcessReturnValues([]));
549
- continue;
550
567
  } else {
551
568
  this.log.trace(`Tx ${txHash.toString()} is valid before processing.`);
552
569
  }
@@ -560,39 +577,45 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
560
577
  const startStateReference = await this.guardedMerkleTree.getUnderlyingFork().getStateReference();
561
578
  this.contractsDB.createCheckpoint();
562
579
  try {
563
- const [processedTx, returnValues] = await this.processTx(tx, deadline);
580
+ const [txProcessingTimeMs, [processedTx, returnValues, txDebugLogs]] = await elapsed(()=>this.processTx(tx, deadline, signal));
564
581
  // Inject a fake processing failure after N txs if requested
565
582
  const fakeThrowAfter = this.opts.fakeThrowAfterProcessingTxCount;
566
583
  if (fakeThrowAfter !== undefined && result.length + failed.length + 1 >= fakeThrowAfter) {
567
584
  throw new Error(`Fake error after processing ${fakeThrowAfter} txs`);
568
585
  }
569
586
  const txBlobFields = processedTx.txEffect.getNumBlobFields();
570
- // If the actual size of this tx would exceed block size, skip it
571
587
  const txSize = txBlobFields * Fr.SIZE_IN_BYTES;
572
- if (maxBlockSize !== undefined && totalSizeInBytes + txSize > maxBlockSize) {
573
- this.log.debug(`Skipping processed tx ${txHash} sized ${txSize} due to max block size.`, {
588
+ // If the actual blob fields of this tx would exceed the limit, skip it.
589
+ // Note: maxBlobFields already accounts for block end blob fields and previous blocks in checkpoint.
590
+ if (maxBlobFields !== undefined && totalBlobFields + txBlobFields > maxBlobFields) {
591
+ this.log.debug(`Skipping processed tx ${txHash} with ${txBlobFields} blob fields due to max blob fields limit.`, {
574
592
  txHash,
575
- sizeInBytes: txSize,
576
- totalSizeInBytes,
577
- maxBlockSize
593
+ txBlobFields,
594
+ totalBlobFields,
595
+ maxBlobFields,
596
+ txProcessingTimeMs
578
597
  });
598
+ silentlySkippedCount += 1;
599
+ totalSilentlySkippedDurationMs += txProcessingTimeMs;
600
+ this.metrics.recordSilentlySkipped(txProcessingTimeMs);
579
601
  // Need to revert the checkpoint here and don't go any further
580
602
  await checkpoint.revert();
581
603
  this.contractsDB.revertCheckpoint();
582
604
  continue;
583
605
  }
584
- // If the actual blob fields of this tx would exceed the limit, skip it
585
- if (maxBlobFields !== undefined && totalBlobFields + txBlobFields > maxBlobFields) {
586
- this.log.debug(`Skipping processed tx ${txHash} with ${txBlobFields} blob fields due to max blob fields limit.`, {
606
+ // During re-execution, check if the actual gas used by this tx would push the block over the gas limit.
607
+ // Unlike the proposal-building check (which uses declared gas limits pessimistically before processing),
608
+ // this uses actual gas and stops processing when the limit is exceeded.
609
+ if (!isBuildingProposal && maxBlockGas !== undefined && totalBlockGas.add(processedTx.gasUsed.totalGas).gtAny(maxBlockGas)) {
610
+ this.log.warn(`Stopping re-execution since tx ${txHash} would push block gas over limit`, {
587
611
  txHash,
588
- txBlobFields,
589
- totalBlobFields,
590
- maxBlobFields
612
+ txGas: processedTx.gasUsed.totalGas,
613
+ totalBlockGas,
614
+ maxBlockGas
591
615
  });
592
- // Need to revert the checkpoint here and don't go any further
593
616
  await checkpoint.revert();
594
617
  this.contractsDB.revertCheckpoint();
595
- continue;
618
+ break;
596
619
  }
597
620
  // FIXME(fcarreiro): it's ugly to have to notify the validator of nullifiers.
598
621
  // I'd rather pass the validators the processedTx as well and let them deal with it.
@@ -600,42 +623,39 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
600
623
  result.push(processedTx);
601
624
  usedTxs.push(tx);
602
625
  returns = returns.concat(returnValues);
626
+ debugLogs.push(...txDebugLogs);
627
+ this.debugLogStore.storeLogs(processedTx.hash.toString(), txDebugLogs);
603
628
  totalPublicGas = totalPublicGas.add(processedTx.gasUsed.publicGas);
604
629
  totalBlockGas = totalBlockGas.add(processedTx.gasUsed.totalGas);
605
630
  totalSizeInBytes += txSize;
606
631
  totalBlobFields += txBlobFields;
632
+ // Commit the tx-level contracts checkpoint on success
633
+ this.contractsDB.commitCheckpoint();
607
634
  } catch (err) {
608
- if (err?.name === 'PublicProcessorTimeoutError') {
609
- this.log.warn(`Stopping tx processing due to timeout.`);
610
- // We hit the transaction execution deadline.
611
- // There may still be a transaction executing on a worker thread (C++ via NAPI).
612
- // Signal cancellation AND WAIT for the simulation to actually stop.
613
- // This is critical because C++ might be in the middle of a slow operation (e.g., pad_trees)
614
- // and won't check the cancellation flag until that operation completes.
615
- // Without waiting, we'd proceed to revert checkpoints while C++ is still writing to state.
616
- // Wait for C++ to stop gracefully.
635
+ if (isPublicProcessorInterruptError(err)) {
636
+ const interruptReason = err.name === 'PublicProcessorTimeoutError' ? 'timeout' : 'abort signal';
637
+ this.log.warn(`Stopping tx processing due to ${interruptReason}.`);
638
+ // The tx may still be executing on a worker thread (C++ via NAPI).
639
+ // Signal cancellation AND WAIT for the simulation to actually stop before touching fork checkpoints.
617
640
  await this.publicTxSimulator.cancel?.();
618
641
  // Now stop the guarded fork to prevent any further TS-side access to the world state.
619
642
  await this.guardedMerkleTree.stop();
620
643
  // We now know there can't be any further access to world state. The fork is in a state where there is:
621
644
  // 1. At least one outstanding checkpoint that has not been committed (the one created before we processed the tx).
622
645
  // 2. Possible state updates on that checkpoint or any others created during execution.
623
- // First we revert a checkpoint as managed by the ForkCheckpoint. This will revert whatever is the current checkpoint
624
- // which may not be the one originally created by this object. But that is ok, we do this to fulfil the ForkCheckpoint
625
- // lifecycle expectations and ensure it doesn't attempt to commit later on.
626
- await checkpoint.revert();
627
- // Now we want to revert any/all remaining checkpoints, destroying any outstanding state updates.
628
- // This needs to be done directly on the underlying fork as the guarded fork has been stopped.
629
- await this.guardedMerkleTree.getUnderlyingFork().revertAllCheckpoints();
646
+ // Revert all checkpoints at or above this checkpoint's depth (inclusive), destroying any outstanding state
647
+ // updates from this tx and any nested checkpoints created during execution. This preserves any checkpoints
648
+ // created by callers below our depth.
649
+ await checkpoint.revertToCheckpoint();
630
650
  // Revert any contracts added to the DB for the tx.
631
651
  this.contractsDB.revertCheckpoint();
632
652
  // Ensure we're at the same state as when we started processing this tx.
633
653
  await this.checkWorldStateUnchanged(startStateReference, txHash, err);
634
654
  break;
635
655
  }
636
- // Roll back state to start of TX before proceeding to next TX
637
- await checkpoint.revert();
638
- await this.guardedMerkleTree.getUnderlyingFork().revertAllCheckpoints();
656
+ // Roll back state to start of TX before proceeding to next TX.
657
+ // Reverts all checkpoints at or above this checkpoint's depth, preserving any caller checkpoints below.
658
+ await checkpoint.revertToCheckpoint();
639
659
  this.contractsDB.revertCheckpoint();
640
660
  const errorMessage = err instanceof Error || err instanceof AssertionError ? err.message : 'Unknown error';
641
661
  this.log.warn(`Failed to process tx ${txHash.toString()}: ${errorMessage} ${err?.stack}`);
@@ -649,24 +669,30 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
649
669
  } finally{
650
670
  // Base case is we always commit the checkpoint. Using the ForkCheckpoint means this has no effect if the tx was previously reverted
651
671
  await checkpoint.commit();
652
- this.contractsDB.commitCheckpointOkIfNone();
653
672
  }
654
673
  }
655
674
  const duration = timer.s();
656
675
  const rate = duration > 0 ? totalPublicGas.l2Gas / duration : 0;
657
676
  this.metrics.recordAllTxs(totalPublicGas, rate);
658
- this.log.info(`Processed ${result.length} successful txs and ${failed.length} failed txs in ${duration}s`, {
677
+ const silentlySkippedDurationMs = Math.round(totalSilentlySkippedDurationMs);
678
+ this.log.info(`Processed ${result.length} successful txs and ${failed.length} failed txs ` + `(${silentlySkippedCount} silently skipped, ${silentlySkippedDurationMs}ms wasted) ` + `in ${duration}s`, {
679
+ blockNumber: this.globalVariables.blockNumber,
680
+ successfulCount: result.length,
681
+ failedCount: failed.length,
659
682
  duration,
660
683
  rate,
661
684
  totalPublicGas,
662
685
  totalBlockGas,
663
- totalSizeInBytes
686
+ totalSizeInBytes,
687
+ silentlySkippedCount,
688
+ silentlySkippedDurationMs
664
689
  });
665
690
  return [
666
691
  result,
667
692
  failed,
668
693
  usedTxs,
669
- returns
694
+ returns,
695
+ debugLogs
670
696
  ];
671
697
  }
672
698
  async checkWorldStateUnchanged(startStateReference, txHash, cause) {
@@ -682,8 +708,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
682
708
  });
683
709
  }
684
710
  }
685
- async processTx(tx, deadline) {
686
- const [time, [processedTx, returnValues]] = await elapsed(()=>this.processTxWithinDeadline(tx, deadline));
711
+ async processTx(tx, deadline, signal) {
712
+ const [time, [processedTx, returnValues, debugLogs]] = await elapsed(()=>this.processTxWithinDeadline(tx, deadline, signal));
687
713
  this.log.verbose(!tx.hasPublicCalls() ? `Processed tx ${processedTx.hash} with no public calls in ${time}ms` : `Processed tx ${processedTx.hash} with ${tx.numberOfPublicCalls()} public calls in ${time}ms`, {
688
714
  txHash: processedTx.hash,
689
715
  txFee: processedTx.txEffect.transactionFee.toBigInt(),
@@ -701,7 +727,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
701
727
  });
702
728
  return [
703
729
  processedTx,
704
- returnValues ?? []
730
+ returnValues ?? [],
731
+ debugLogs
705
732
  ];
706
733
  }
707
734
  async doTreeInsertionsForPrivateOnlyTx(processedTx) {
@@ -723,7 +750,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
723
750
  const treeInsertionEnd = process.hrtime.bigint();
724
751
  this.metrics.recordTreeInsertions(Number(treeInsertionEnd - treeInsertionStart) / 1_000);
725
752
  }
726
- /** Processes the given tx within deadline. Returns timeout if deadline is hit. */ async processTxWithinDeadline(tx, deadline) {
753
+ /** Processes the given tx within deadline or until the signal is aborted. */ async processTxWithinDeadline(tx, deadline, signal) {
727
754
  const innerProcessFn = tx.hasPublicCalls() ? ()=>this.processTxWithPublicCalls(tx) : ()=>this.processPrivateOnlyTx(tx);
728
755
  // Fake a delay per tx if instructed (used for tests)
729
756
  const fakeDelayPerTxMs = this.opts.fakeProcessingDelayPerTxMs;
@@ -733,20 +760,31 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
733
760
  await sleep(fakeDelayPerTxMs);
734
761
  return result;
735
762
  } : innerProcessFn;
736
- if (!deadline) {
763
+ const processingSignal = this.getProcessingSignal(tx, deadline, signal);
764
+ if (!processingSignal) {
737
765
  return await processFn();
738
766
  }
739
- const txHash = tx.getTxHash();
767
+ return await execWithSignal(()=>processFn(), processingSignal, (signal)=>signal.reason?.name === 'TimeoutError' ? new PublicProcessorTimeoutError() : new PublicProcessorAbortError());
768
+ }
769
+ getProcessingSignal(tx, deadline, signal) {
770
+ if (!deadline) {
771
+ return signal;
772
+ }
740
773
  const timeout = +deadline - this.dateProvider.now();
741
774
  if (timeout <= 0) {
742
775
  throw new PublicProcessorTimeoutError();
743
776
  }
777
+ const txHash = tx.getTxHash();
744
778
  this.log.debug(`Processing tx ${txHash.toString()} within ${timeout}ms`, {
745
779
  deadline: deadline.toISOString(),
746
780
  now: new Date(this.dateProvider.now()).toISOString(),
747
781
  txHash
748
782
  });
749
- return await executeTimeout(()=>processFn(), timeout, ()=>new PublicProcessorTimeoutError());
783
+ const timeoutSignal = AbortSignal.timeout(timeout);
784
+ return signal ? AbortSignal.any([
785
+ signal,
786
+ timeoutSignal
787
+ ]) : timeoutSignal;
750
788
  }
751
789
  /**
752
790
  * Creates the public data write for paying the tx fee.
@@ -775,10 +813,11 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
775
813
  this.metrics.recordClassPublication(...tx.getContractClassLogs().filter((log)=>ContractClassPublishedEvent.isContractClassPublishedEvent(log)).map((log)=>ContractClassPublishedEvent.fromLog(log)));
776
814
  // Fee payment insertion has already been done. Do the rest.
777
815
  await this.doTreeInsertionsForPrivateOnlyTx(processedTx);
778
- await this.contractsDB.addNewContracts(tx);
816
+ this.contractsDB.addNewContracts(tx);
779
817
  return [
780
818
  processedTx,
781
- undefined
819
+ undefined,
820
+ []
782
821
  ];
783
822
  }
784
823
  async processTxWithPublicCalls(tx) {
@@ -800,7 +839,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
800
839
  const processedTx = makeProcessedTxFromTxWithPublicCalls(tx, this.globalVariables, avmProvingRequest, publicTxEffect, gasUsed, revertCode, revertReason);
801
840
  return [
802
841
  processedTx,
803
- appLogicReturnValues
842
+ appLogicReturnValues,
843
+ result.logs ?? []
804
844
  ];
805
845
  }
806
846
  /**
@@ -1,6 +1,6 @@
1
1
  import type { ContractClassPublishedEvent } from '@aztec/protocol-contracts/class-registry';
2
2
  import type { Gas } from '@aztec/stdlib/gas';
3
- import type { TxExecutionPhase } from '@aztec/stdlib/tx';
3
+ import { TxExecutionPhase } from '@aztec/stdlib/tx';
4
4
  import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
5
5
  export declare class PublicProcessorMetrics {
6
6
  readonly tracer: Tracer;
@@ -15,6 +15,8 @@ export declare class PublicProcessorMetrics {
15
15
  private gasRate;
16
16
  private txGas;
17
17
  private treeInsertionDuration;
18
+ private silentlySkippedCount;
19
+ private silentlySkippedDuration;
18
20
  constructor(client: TelemetryClient, name?: string);
19
21
  recordPhaseDuration(phaseName: TxExecutionPhase, durationMs: number): void;
20
22
  recordTx(phaseCount: number, durationMs: number, gasUsed: Gas): void;
@@ -23,5 +25,6 @@ export declare class PublicProcessorMetrics {
23
25
  recordRevertedPhase(phaseName: TxExecutionPhase): void;
24
26
  recordClassPublication(...events: ContractClassPublishedEvent[]): void;
25
27
  recordTreeInsertions(durationUs: number): void;
28
+ recordSilentlySkipped(durationMs: number): void;
26
29
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvcl9tZXRyaWNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL3B1YmxpY19wcm9jZXNzb3IvcHVibGljX3Byb2Nlc3Nvcl9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUYsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN6RCxPQUFPLEVBS0wsS0FBSyxlQUFlLEVBQ3BCLEtBQUssTUFBTSxFQUVaLE1BQU0seUJBQXlCLENBQUM7QUFFakMscUJBQWEsc0JBQXNCO0lBQ2pDLFNBQWdCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFL0IsT0FBTyxDQUFDLFVBQVUsQ0FBWTtJQUM5QixPQUFPLENBQUMsT0FBTyxDQUFnQjtJQUMvQixPQUFPLENBQUMsWUFBWSxDQUFnQjtJQUVwQyxPQUFPLENBQUMsYUFBYSxDQUFZO0lBQ2pDLE9BQU8sQ0FBQyxVQUFVLENBQWdCO0lBRWxDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBWTtJQUNwQyxPQUFPLENBQUMsUUFBUSxDQUFRO0lBQ3hCLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBWTtJQUNyQyxPQUFPLENBQUMsT0FBTyxDQUFZO0lBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQVk7SUFFekIsT0FBTyxDQUFDLHFCQUFxQixDQUFZO0lBRXpDLFlBQVksTUFBTSxFQUFFLGVBQWUsRUFBRSxJQUFJLFNBQW9CLEVBeUI1RDtJQUVELG1CQUFtQixDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUdsRTtJQUVELFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsUUFZNUQ7SUFFRCxZQUFZLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQWdCMUM7SUFFRCxjQUFjLFNBSWI7SUFFRCxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLFFBRTlDO0lBRUQsc0JBQXNCLENBQUMsR0FBRyxNQUFNLEVBQUUsMkJBQTJCLEVBQUUsUUFTOUQ7SUFFRCxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsTUFBTSxRQUV0QztDQUNGIn0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvcl9tZXRyaWNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL3B1YmxpY19wcm9jZXNzb3IvcHVibGljX3Byb2Nlc3Nvcl9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUYsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUtMLEtBQUssZUFBZSxFQUNwQixLQUFLLE1BQU0sRUFHWixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLHFCQUFhLHNCQUFzQjtJQUNqQyxTQUFnQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBRS9CLE9BQU8sQ0FBQyxVQUFVLENBQVk7SUFDOUIsT0FBTyxDQUFDLE9BQU8sQ0FBZ0I7SUFDL0IsT0FBTyxDQUFDLFlBQVksQ0FBZ0I7SUFFcEMsT0FBTyxDQUFDLGFBQWEsQ0FBWTtJQUNqQyxPQUFPLENBQUMsVUFBVSxDQUFnQjtJQUVsQyxPQUFPLENBQUMsZ0JBQWdCLENBQVk7SUFDcEMsT0FBTyxDQUFDLFFBQVEsQ0FBUTtJQUN4QixPQUFPLENBQUMsaUJBQWlCLENBQVk7SUFDckMsT0FBTyxDQUFDLE9BQU8sQ0FBWTtJQUMzQixPQUFPLENBQUMsS0FBSyxDQUFZO0lBRXpCLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBWTtJQUV6QyxPQUFPLENBQUMsb0JBQW9CLENBQWdCO0lBQzVDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBWTtJQUUzQyxZQUFZLE1BQU0sRUFBRSxlQUFlLEVBQUUsSUFBSSxTQUFvQixFQWtDNUQ7SUFFRCxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFHbEU7SUFFRCxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLFFBWTVEO0lBRUQsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFnQjFDO0lBRUQsY0FBYyxTQUliO0lBRUQsbUJBQW1CLENBQUMsU0FBUyxFQUFFLGdCQUFnQixRQUU5QztJQUVELHNCQUFzQixDQUFDLEdBQUcsTUFBTSxFQUFFLDJCQUEyQixFQUFFLFFBUzlEO0lBRUQsb0JBQW9CLENBQUMsVUFBVSxFQUFFLE1BQU0sUUFFdEM7SUFFRCxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxRQUd2QztDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"public_processor_metrics.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAC5F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,MAAM,EAEZ,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,sBAAsB;IACjC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,KAAK,CAAY;IAEzB,OAAO,CAAC,qBAAqB,CAAY;IAEzC,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,SAAoB,EAyB5D;IAED,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,QAGlE;IAED,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAY5D;IAED,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,QAgB1C;IAED,cAAc,SAIb;IAED,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,QAE9C;IAED,sBAAsB,CAAC,GAAG,MAAM,EAAE,2BAA2B,EAAE,QAS9D;IAED,oBAAoB,CAAC,UAAU,EAAE,MAAM,QAEtC;CACF"}
1
+ {"version":3,"file":"public_processor_metrics.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAC5F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,sBAAsB;IACjC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,gBAAgB,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,KAAK,CAAY;IAEzB,OAAO,CAAC,qBAAqB,CAAY;IAEzC,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,uBAAuB,CAAY;IAE3C,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,SAAoB,EAkC5D;IAED,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,QAGlE;IAED,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAY5D;IAED,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,QAgB1C;IAED,cAAc,SAIb;IAED,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,QAE9C;IAED,sBAAsB,CAAC,GAAG,MAAM,EAAE,2BAA2B,EAAE,QAS9D;IAED,oBAAoB,CAAC,UAAU,EAAE,MAAM,QAEtC;IAED,qBAAqB,CAAC,UAAU,EAAE,MAAM,QAGvC;CACF"}
@@ -1,4 +1,5 @@
1
- import { Attributes, Metrics } from '@aztec/telemetry-client';
1
+ import { TxExecutionPhase } from '@aztec/stdlib/tx';
2
+ import { Attributes, Metrics, createUpDownCounterWithDefault } from '@aztec/telemetry-client';
2
3
  export class PublicProcessorMetrics {
3
4
  tracer;
4
5
  txDuration;
@@ -12,20 +13,39 @@ export class PublicProcessorMetrics {
12
13
  gasRate;
13
14
  txGas;
14
15
  treeInsertionDuration;
16
+ silentlySkippedCount;
17
+ silentlySkippedDuration;
15
18
  constructor(client, name = 'PublicProcessor'){
16
19
  this.tracer = client.getTracer(name);
17
20
  const meter = client.getMeter(name);
18
21
  this.txDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TX_DURATION);
19
- this.txCount = meter.createUpDownCounter(Metrics.PUBLIC_PROCESSOR_TX_COUNT);
20
- this.txPhaseCount = meter.createUpDownCounter(Metrics.PUBLIC_PROCESSOR_TX_PHASE_COUNT);
22
+ this.txCount = createUpDownCounterWithDefault(meter, Metrics.PUBLIC_PROCESSOR_TX_COUNT, {
23
+ [Attributes.OK]: [
24
+ true,
25
+ false
26
+ ]
27
+ });
28
+ this.txPhaseCount = createUpDownCounterWithDefault(meter, Metrics.PUBLIC_PROCESSOR_TX_PHASE_COUNT);
21
29
  this.phaseDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_PHASE_DURATION);
22
- this.phaseCount = meter.createUpDownCounter(Metrics.PUBLIC_PROCESSOR_PHASE_COUNT);
30
+ this.phaseCount = createUpDownCounterWithDefault(meter, Metrics.PUBLIC_PROCESSOR_PHASE_COUNT, {
31
+ [Attributes.TX_PHASE_NAME]: [
32
+ TxExecutionPhase.SETUP,
33
+ TxExecutionPhase.APP_LOGIC,
34
+ TxExecutionPhase.TEARDOWN
35
+ ],
36
+ [Attributes.OK]: [
37
+ true,
38
+ false
39
+ ]
40
+ });
23
41
  this.bytecodeDeployed = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_DEPLOY_BYTECODE_SIZE);
24
42
  this.totalGas = meter.createGauge(Metrics.PUBLIC_PROCESSOR_TOTAL_GAS);
25
43
  this.totalGasHistogram = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TOTAL_GAS_HISTOGRAM);
26
44
  this.txGas = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TX_GAS);
27
45
  this.gasRate = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_GAS_RATE);
28
46
  this.treeInsertionDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TREE_INSERTION);
47
+ this.silentlySkippedCount = createUpDownCounterWithDefault(meter, Metrics.PUBLIC_PROCESSOR_SILENTLY_SKIPPED_COUNT);
48
+ this.silentlySkippedDuration = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_SILENTLY_SKIPPED_DURATION);
29
49
  }
30
50
  recordPhaseDuration(phaseName, durationMs) {
31
51
  this.phaseCount.add(1, {
@@ -89,4 +109,8 @@ export class PublicProcessorMetrics {
89
109
  recordTreeInsertions(durationUs) {
90
110
  this.treeInsertionDuration.record(Math.ceil(durationUs));
91
111
  }
112
+ recordSilentlySkipped(durationMs) {
113
+ this.silentlySkippedCount.add(1);
114
+ this.silentlySkippedDuration.record(Math.ceil(durationMs));
115
+ }
92
116
  }
@@ -1,3 +1,4 @@
1
+ import { type LoggerBindings } from '@aztec/foundation/log';
1
2
  import type { ContractProvider } from '@aztec/native';
2
3
  import type { GlobalVariables } from '@aztec/stdlib/tx';
3
4
  import type { PublicContractsDB } from '../public_db_sources.js';
@@ -5,7 +6,7 @@ export declare class ContractProviderForCpp implements ContractProvider {
5
6
  private contractsDB;
6
7
  private globalVariables;
7
8
  private log;
8
- constructor(contractsDB: PublicContractsDB, globalVariables: GlobalVariables);
9
+ constructor(contractsDB: PublicContractsDB, globalVariables: GlobalVariables, bindings?: LoggerBindings);
9
10
  getContractInstance: (address: string) => Promise<Buffer<ArrayBufferLike> | undefined>;
10
11
  getContractClass: (classId: string) => Promise<Buffer<ArrayBufferLike> | undefined>;
11
12
  addContracts: (contractDeploymentDataBuffer: Buffer<ArrayBufferLike>) => Promise<void>;
@@ -15,4 +16,4 @@ export declare class ContractProviderForCpp implements ContractProvider {
15
16
  commitCheckpoint: () => Promise<void>;
16
17
  revertCheckpoint: () => Promise<void>;
17
18
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfcHJvdmlkZXJfZm9yX2NwcC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfdHhfc2ltdWxhdG9yL2NvbnRyYWN0X3Byb3ZpZGVyX2Zvcl9jcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLdEQsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFeEQsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVqRSxxQkFBYSxzQkFBdUIsWUFBVyxnQkFBZ0I7SUFJM0QsT0FBTyxDQUFDLFdBQVc7SUFDbkIsT0FBTyxDQUFDLGVBQWU7SUFKekIsT0FBTyxDQUFDLEdBQUcsQ0FBK0Q7SUFFMUUsWUFDVSxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLGVBQWUsRUFBRSxlQUFlLEVBQ3RDO0lBRUcsbUJBQW1CLG9FQWF4QjtJQUVLLGdCQUFnQixvRUFlckI7SUFFSyxZQUFZLDJFQVdqQjtJQUVLLHFCQUFxQixvRUFnQjFCO0lBRUssb0JBQW9CLHFFQXNCekI7SUFFSyxnQkFBZ0Isc0JBR3JCO0lBRUssZ0JBQWdCLHNCQUdyQjtJQUVLLGdCQUFnQixzQkFHckI7Q0FDSCJ9
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfcHJvdmlkZXJfZm9yX2NwcC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfdHhfc2ltdWxhdG9yL2NvbnRyYWN0X3Byb3ZpZGVyX2Zvcl9jcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3RELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUscUJBQWEsc0JBQXVCLFlBQVcsZ0JBQWdCO0lBSTNELE9BQU8sQ0FBQyxXQUFXO0lBQ25CLE9BQU8sQ0FBQyxlQUFlO0lBSnpCLE9BQU8sQ0FBQyxHQUFHLENBQVM7SUFFcEIsWUFDVSxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLGVBQWUsRUFBRSxlQUFlLEVBQ3hDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHMUI7SUFFTSxtQkFBbUIsb0VBYXhCO0lBRUssZ0JBQWdCLG9FQWVyQjtJQUdLLFlBQVksMkVBV2pCO0lBRUsscUJBQXFCLG9FQWdCMUI7SUFFSyxvQkFBb0IscUVBc0J6QjtJQUVLLGdCQUFnQixzQkFHckI7SUFFSyxnQkFBZ0Isc0JBR3JCO0lBRUssZ0JBQWdCLHNCQUdyQjtDQUNIIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"contract_provider_for_cpp.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/contract_provider_for_cpp.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAKtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,qBAAa,sBAAuB,YAAW,gBAAgB;IAI3D,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,eAAe;IAJzB,OAAO,CAAC,GAAG,CAA+D;IAE1E,YACU,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EACtC;IAEG,mBAAmB,oEAaxB;IAEK,gBAAgB,oEAerB;IAEK,YAAY,2EAWjB;IAEK,qBAAqB,oEAgB1B;IAEK,oBAAoB,qEAsBzB;IAEK,gBAAgB,sBAGrB;IAEK,gBAAgB,sBAGrB;IAEK,gBAAgB,sBAGrB;CACH"}
1
+ {"version":3,"file":"contract_provider_for_cpp.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/contract_provider_for_cpp.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAKtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,qBAAa,sBAAuB,YAAW,gBAAgB;IAI3D,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,eAAe;IAJzB,OAAO,CAAC,GAAG,CAAS;IAEpB,YACU,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EACxC,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAEM,mBAAmB,oEAaxB;IAEK,gBAAgB,oEAerB;IAGK,YAAY,2EAWjB;IAEK,qBAAqB,oEAgB1B;IAEK,oBAAoB,qEAsBzB;IAEK,gBAAgB,sBAGrB;IAEK,gBAAgB,sBAGrB;IAEK,gBAAgB,sBAGrB;CACH"}
@@ -8,10 +8,9 @@ export class ContractProviderForCpp {
8
8
  contractsDB;
9
9
  globalVariables;
10
10
  log;
11
- constructor(contractsDB, globalVariables){
11
+ constructor(contractsDB, globalVariables, bindings){
12
12
  this.contractsDB = contractsDB;
13
13
  this.globalVariables = globalVariables;
14
- this.log = createLogger('simulator:contract_provider_for_cpp');
15
14
  this.getContractInstance = async (address)=>{
16
15
  this.log.trace(`Contract provider callback: getContractInstance(${address})`);
17
16
  const aztecAddr = AztecAddress.fromString(address);
@@ -40,8 +39,8 @@ export class ContractProviderForCpp {
40
39
  // Construct ContractDeploymentData from plain object.
41
40
  const contractDeploymentData = ContractDeploymentData.fromPlainObject(rawData);
42
41
  // Add contracts to the contracts DB
43
- this.log.trace(`Calling contractsDB.addContracts`);
44
- await this.contractsDB.addContracts(contractDeploymentData);
42
+ this.log.trace(`Calling contractsDB.addContractsFromLogs`);
43
+ this.contractsDB.addContractsFromLogs(contractDeploymentData);
45
44
  };
46
45
  this.getBytecodeCommitment = async (classId)=>{
47
46
  this.log.trace(`Contract provider callback: getBytecodeCommitment(${classId})`);
@@ -86,9 +85,11 @@ export class ContractProviderForCpp {
86
85
  this.log.trace(`Contract provider callback: revertCheckpoint`);
87
86
  return Promise.resolve(this.contractsDB.revertCheckpoint());
88
87
  };
88
+ this.log = createLogger('simulator:contract_provider_for_cpp', bindings);
89
89
  }
90
90
  getContractInstance;
91
91
  getContractClass;
92
+ // eslint-disable-next-line require-await
92
93
  addContracts;
93
94
  getBytecodeCommitment;
94
95
  getDebugFunctionName;
@@ -1,4 +1,4 @@
1
- import { type Logger } from '@aztec/foundation/log';
1
+ import { type Logger, type LoggerBindings } from '@aztec/foundation/log';
2
2
  import { type PublicSimulatorConfig, PublicTxResult } from '@aztec/stdlib/avm';
3
3
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
4
4
  import type { GlobalVariables, Tx } from '@aztec/stdlib/tx';
@@ -18,7 +18,7 @@ export declare class CppPublicTxSimulator extends PublicTxSimulator implements P
18
18
  private cancellationToken?;
19
19
  /** Current simulation promise, used to wait for completion after cancellation. */
20
20
  private simulationPromise?;
21
- constructor(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, config?: Partial<PublicSimulatorConfig>);
21
+ constructor(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, config?: Partial<PublicSimulatorConfig>, bindings?: LoggerBindings);
22
22
  /**
23
23
  * Simulate a transaction's public portion using the C++ avvm simulator.
24
24
  *
@@ -40,7 +40,7 @@ export declare class CppPublicTxSimulator extends PublicTxSimulator implements P
40
40
  }
41
41
  export declare class MeasuredCppPublicTxSimulator extends CppPublicTxSimulator implements MeasuredPublicTxSimulatorInterface {
42
42
  protected readonly metrics: ExecutorMetricsInterface;
43
- constructor(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, metrics: ExecutorMetricsInterface, config?: Partial<PublicSimulatorConfig>);
43
+ constructor(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, metrics: ExecutorMetricsInterface, config?: Partial<PublicSimulatorConfig>, bindings?: LoggerBindings);
44
44
  simulate(tx: Tx, txLabel?: string): Promise<PublicTxResult>;
45
45
  }
46
46
  /**
@@ -48,6 +48,6 @@ export declare class MeasuredCppPublicTxSimulator extends CppPublicTxSimulator i
48
48
  */
49
49
  export declare class TelemetryCppPublicTxSimulator extends MeasuredCppPublicTxSimulator {
50
50
  readonly tracer: Tracer;
51
- constructor(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, telemetryClient?: TelemetryClient, config?: Partial<PublicSimulatorConfig>);
51
+ constructor(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, telemetryClient?: TelemetryClient, config?: Partial<PublicSimulatorConfig>, bindings?: LoggerBindings);
52
52
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BwX3B1YmxpY190eF9zaW11bGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3R4X3NpbXVsYXRvci9jcHBfcHVibGljX3R4X3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQTBCLE1BQU0sdUJBQXVCLENBQUM7QUFJNUUsT0FBTyxFQUdMLEtBQUsscUJBQXFCLEVBQzFCLGNBQWMsRUFFZixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLE1BQU0sRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUtoRyxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQ1Ysa0NBQWtDLEVBQ2xDLDBCQUEwQixFQUMzQixNQUFNLG9DQUFvQyxDQUFDO0FBRTVDOzs7O0dBSUc7QUFDSCxxQkFBYSxvQkFBcUIsU0FBUSxpQkFBa0IsWUFBVywwQkFBMEI7SUFDL0YsVUFBbUIsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUMvQiwyREFBMkQ7SUFDM0QsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQW9CO0lBQzlDLGtGQUFrRjtJQUNsRixPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBa0I7SUFFNUMsWUFDRSxVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsZUFBZSxFQUFFLGVBQWUsRUFDaEMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBSXhDO0lBRUQ7Ozs7O09BS0c7SUFDbUIsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQThFOUQ7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDVSxNQUFNLENBQUMsYUFBYSxHQUFFLE1BQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBZTlEO0NBQ0Y7QUFFRCxxQkFBYSw0QkFBNkIsU0FBUSxvQkFBcUIsWUFBVyxrQ0FBa0M7SUFLaEgsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsd0JBQXdCO0lBSnRELFlBQ0UsVUFBVSxFQUFFLHlCQUF5QixFQUNyQyxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLGVBQWUsRUFBRSxlQUFlLEVBQ2IsT0FBTyxFQUFFLHdCQUF3QixFQUNwRCxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMscUJBQXFCLENBQUMsRUFHeEM7SUFFcUIsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxHQUFFLE1BQXNCLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQVMvRjtDQUNGO0FBRUQ7O0dBRUc7QUFDSCxxQkFBYSw2QkFBOEIsU0FBUSw0QkFBNEI7SUFFN0UsU0FBZ0IsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUUvQixZQUNFLFVBQVUsRUFBRSx5QkFBeUIsRUFDckMsV0FBVyxFQUFFLGlCQUFpQixFQUM5QixlQUFlLEVBQUUsZUFBZSxFQUNoQyxlQUFlLEdBQUUsZUFBc0MsRUFDdkQsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBS3hDO0NBQ0YifQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BwX3B1YmxpY190eF9zaW11bGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3R4X3NpbXVsYXRvci9jcHBfcHVibGljX3R4X3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFJdkYsT0FBTyxFQUdMLEtBQUsscUJBQXFCLEVBQzFCLGNBQWMsRUFFZixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLE1BQU0sRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUtoRyxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQ1Ysa0NBQWtDLEVBQ2xDLDBCQUEwQixFQUMzQixNQUFNLG9DQUFvQyxDQUFDO0FBRTVDOzs7O0dBSUc7QUFDSCxxQkFBYSxvQkFBcUIsU0FBUSxpQkFBa0IsWUFBVywwQkFBMEI7SUFDL0YsVUFBbUIsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUMvQiwyREFBMkQ7SUFDM0QsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQW9CO0lBQzlDLGtGQUFrRjtJQUNsRixPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBa0I7SUFFNUMsWUFDRSxVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsZUFBZSxFQUFFLGVBQWUsRUFDaEMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQ3ZDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFJMUI7SUFFRDs7Ozs7T0FLRztJQUNtQixRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBOEU5RDtJQUVEOzs7Ozs7Ozs7T0FTRztJQUNVLE1BQU0sQ0FBQyxhQUFhLEdBQUUsTUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FlOUQ7Q0FDRjtBQUVELHFCQUFhLDRCQUE2QixTQUFRLG9CQUFxQixZQUFXLGtDQUFrQztJQUtoSCxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSx3QkFBd0I7SUFKdEQsWUFDRSxVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsZUFBZSxFQUFFLGVBQWUsRUFDYixPQUFPLEVBQUUsd0JBQXdCLEVBQ3BELE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUN2QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBRzFCO0lBRXFCLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sR0FBRSxNQUFzQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FTL0Y7Q0FDRjtBQUVEOztHQUVHO0FBQ0gscUJBQWEsNkJBQThCLFNBQVEsNEJBQTRCO0lBRTdFLFNBQWdCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFL0IsWUFDRSxVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsZUFBZSxFQUFFLGVBQWUsRUFDaEMsZUFBZSxHQUFFLGVBQXNDLEVBQ3ZELE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUN2QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBSzFCO0NBQ0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"cpp_public_tx_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/cpp_public_tx_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAA0B,MAAM,uBAAuB,CAAC;AAI5E,OAAO,EAGL,KAAK,qBAAqB,EAC1B,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAsB,MAAM,yBAAyB,CAAC;AAKhG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EACV,kCAAkC,EAClC,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,iBAAkB,YAAW,0BAA0B;IAC/F,UAAmB,GAAG,EAAE,MAAM,CAAC;IAC/B,2DAA2D;IAC3D,OAAO,CAAC,iBAAiB,CAAC,CAAoB;IAC9C,kFAAkF;IAClF,OAAO,CAAC,iBAAiB,CAAC,CAAkB;IAE5C,YACE,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,EAIxC;IAED;;;;;OAKG;IACmB,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CA8E9D;IAED;;;;;;;;;OASG;IACU,MAAM,CAAC,aAAa,GAAE,MAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAe9D;CACF;AAED,qBAAa,4BAA6B,SAAQ,oBAAqB,YAAW,kCAAkC;IAKhH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,wBAAwB;IAJtD,YACE,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EACb,OAAO,EAAE,wBAAwB,EACpD,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,EAGxC;IAEqB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAE,MAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,CAS/F;CACF;AAED;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,4BAA4B;IAE7E,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,YACE,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,eAAe,GAAE,eAAsC,EACvD,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,EAKxC;CACF"}
1
+ {"version":3,"file":"cpp_public_tx_simulator.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/cpp_public_tx_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAIvF,OAAO,EAGL,KAAK,qBAAqB,EAC1B,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAsB,MAAM,yBAAyB,CAAC;AAKhG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EACV,kCAAkC,EAClC,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAE5C;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,iBAAkB,YAAW,0BAA0B;IAC/F,UAAmB,GAAG,EAAE,MAAM,CAAC;IAC/B,2DAA2D;IAC3D,OAAO,CAAC,iBAAiB,CAAC,CAAoB;IAC9C,kFAAkF;IAClF,OAAO,CAAC,iBAAiB,CAAC,CAAkB;IAE5C,YACE,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACvC,QAAQ,CAAC,EAAE,cAAc,EAI1B;IAED;;;;;OAKG;IACmB,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CA8E9D;IAED;;;;;;;;;OASG;IACU,MAAM,CAAC,aAAa,GAAE,MAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAe9D;CACF;AAED,qBAAa,4BAA6B,SAAQ,oBAAqB,YAAW,kCAAkC;IAKhH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,wBAAwB;IAJtD,YACE,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EACb,OAAO,EAAE,wBAAwB,EACpD,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACvC,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAEqB,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,GAAE,MAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,CAS/F;CACF;AAED;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,4BAA4B;IAE7E,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,YACE,UAAU,EAAE,yBAAyB,EACrC,WAAW,EAAE,iBAAiB,EAC9B,eAAe,EAAE,eAAe,EAChC,eAAe,GAAE,eAAsC,EACvD,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,EACvC,QAAQ,CAAC,EAAE,cAAc,EAK1B;CACF"}