@aztec/simulator 0.0.1-commit.a072138 → 0.0.1-commit.a5db02d

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 (145) hide show
  1. package/README.md +4 -4
  2. package/dest/client.d.ts +1 -3
  3. package/dest/client.d.ts.map +1 -1
  4. package/dest/client.js +0 -2
  5. package/dest/private/acvm_wasm.d.ts +1 -1
  6. package/dest/private/acvm_wasm.d.ts.map +1 -1
  7. package/dest/private/acvm_wasm.js +3 -1
  8. package/dest/private/circuit_recording/circuit_recorder.d.ts +36 -23
  9. package/dest/private/circuit_recording/circuit_recorder.d.ts.map +1 -1
  10. package/dest/private/circuit_recording/circuit_recorder.js +65 -69
  11. package/dest/private/circuit_recording/file_circuit_recorder.d.ts +7 -19
  12. package/dest/private/circuit_recording/file_circuit_recorder.d.ts.map +1 -1
  13. package/dest/private/circuit_recording/file_circuit_recorder.js +38 -42
  14. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts +1 -1
  15. package/dest/private/circuit_recording/simulator_recorder_wrapper.d.ts.map +1 -1
  16. package/dest/private/circuit_recording/simulator_recorder_wrapper.js +11 -14
  17. package/dest/public/avm/avm_gas.js +3 -3
  18. package/dest/public/avm/avm_simulator.js +1 -1
  19. package/dest/public/avm/calldata.d.ts +1 -1
  20. package/dest/public/avm/calldata.d.ts.map +1 -1
  21. package/dest/public/avm/calldata.js +3 -2
  22. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +2 -0
  23. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +1 -0
  24. package/dest/public/avm/fixtures/account_proof_fetcher.js +152 -0
  25. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +2 -1
  26. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  27. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +18 -3
  28. package/dest/public/avm/fixtures/utils.d.ts +1 -1
  29. package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
  30. package/dest/public/avm/fixtures/utils.js +4 -1
  31. package/dest/public/avm/opcodes/accrued_substate.d.ts +2 -2
  32. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  33. package/dest/public/avm/opcodes/accrued_substate.js +3 -4
  34. package/dest/public/avm/opcodes/contract.d.ts +3 -2
  35. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  36. package/dest/public/avm/opcodes/contract.js +5 -1
  37. package/dest/public/avm/opcodes/ec_add.d.ts +2 -4
  38. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  39. package/dest/public/avm/opcodes/ec_add.js +13 -27
  40. package/dest/public/avm/serialization/bytecode_serialization.js +3 -3
  41. package/dest/public/avm/serialization/instruction_serialization.d.ts +2 -2
  42. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  43. package/dest/public/avm/serialization/instruction_serialization.js +1 -1
  44. package/dest/public/contracts_db_checkpoint.d.ts +2 -2
  45. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -1
  46. package/dest/public/contracts_db_checkpoint.js +1 -1
  47. package/dest/public/fixtures/amm_test.js +4 -4
  48. package/dest/public/fixtures/bulk_test.d.ts +1 -1
  49. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  50. package/dest/public/fixtures/bulk_test.js +33 -6
  51. package/dest/public/fixtures/custom_bytecode_tester.d.ts +1 -1
  52. package/dest/public/fixtures/custom_bytecode_tester.d.ts.map +1 -1
  53. package/dest/public/fixtures/custom_bytecode_tester.js +2 -2
  54. package/dest/public/fixtures/custom_bytecode_tests.d.ts +8 -1
  55. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
  56. package/dest/public/fixtures/custom_bytecode_tests.js +91 -2
  57. package/dest/public/fixtures/opcode_spammer.d.ts +1 -1
  58. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -1
  59. package/dest/public/fixtures/opcode_spammer.js +8 -16
  60. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +6 -5
  61. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  62. package/dest/public/fixtures/public_tx_simulation_tester.js +38 -9
  63. package/dest/public/fixtures/token_test.js +3 -3
  64. package/dest/public/fixtures/utils.d.ts +2 -2
  65. package/dest/public/fixtures/utils.d.ts.map +1 -1
  66. package/dest/public/fixtures/utils.js +21 -20
  67. package/dest/public/hinting_db_sources.d.ts +5 -5
  68. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  69. package/dest/public/hinting_db_sources.js +8 -7
  70. package/dest/public/public_db_sources.d.ts +6 -3
  71. package/dest/public/public_db_sources.d.ts.map +1 -1
  72. package/dest/public/public_db_sources.js +16 -10
  73. package/dest/public/public_processor/guarded_merkle_tree.d.ts +5 -5
  74. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  75. package/dest/public/public_processor/guarded_merkle_tree.js +5 -5
  76. package/dest/public/public_processor/public_processor.d.ts +8 -5
  77. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  78. package/dest/public/public_processor/public_processor.js +121 -67
  79. package/dest/public/public_processor/public_processor_metrics.d.ts +4 -1
  80. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  81. package/dest/public/public_processor/public_processor_metrics.js +8 -0
  82. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +1 -1
  83. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -1
  84. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +5 -4
  85. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +1 -1
  86. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
  87. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +2 -3
  88. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +1 -1
  89. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -1
  90. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +2 -2
  91. package/dest/public/public_tx_simulator/factories.d.ts +2 -2
  92. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
  93. package/dest/public/public_tx_simulator/factories.js +2 -2
  94. package/dest/public/public_tx_simulator/public_tx_context.d.ts +7 -3
  95. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  96. package/dest/public/public_tx_simulator/public_tx_context.js +8 -10
  97. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +6 -2
  98. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  99. package/dest/public/public_tx_simulator/public_tx_simulator.js +14 -9
  100. package/dest/public/state_manager/state_manager.js +1 -1
  101. package/dest/public/test_executor_metrics.d.ts +6 -1
  102. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  103. package/dest/public/test_executor_metrics.js +22 -0
  104. package/package.json +16 -16
  105. package/src/client.ts +0 -2
  106. package/src/private/acvm_wasm.ts +4 -1
  107. package/src/private/circuit_recording/circuit_recorder.ts +84 -78
  108. package/src/private/circuit_recording/file_circuit_recorder.ts +38 -48
  109. package/src/private/circuit_recording/simulator_recorder_wrapper.ts +9 -15
  110. package/src/public/avm/avm_gas.ts +2 -2
  111. package/src/public/avm/avm_simulator.ts +1 -1
  112. package/src/public/avm/calldata.ts +3 -2
  113. package/src/public/avm/fixtures/account_proof.json +553 -0
  114. package/src/public/avm/fixtures/account_proof_fetcher.ts +166 -0
  115. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +23 -3
  116. package/src/public/avm/fixtures/utils.ts +4 -1
  117. package/src/public/avm/opcodes/accrued_substate.ts +3 -4
  118. package/src/public/avm/opcodes/contract.ts +5 -1
  119. package/src/public/avm/opcodes/ec_add.ts +12 -31
  120. package/src/public/avm/opcodes/external_calls.ts +1 -1
  121. package/src/public/avm/serialization/bytecode_serialization.ts +2 -2
  122. package/src/public/avm/serialization/instruction_serialization.ts +1 -1
  123. package/src/public/contracts_db_checkpoint.ts +1 -1
  124. package/src/public/fixtures/amm_test.ts +4 -4
  125. package/src/public/fixtures/bulk_test.ts +31 -6
  126. package/src/public/fixtures/custom_bytecode_tester.ts +2 -2
  127. package/src/public/fixtures/custom_bytecode_tests.ts +209 -2
  128. package/src/public/fixtures/opcode_spammer.ts +10 -18
  129. package/src/public/fixtures/public_tx_simulation_tester.ts +45 -5
  130. package/src/public/fixtures/token_test.ts +3 -3
  131. package/src/public/fixtures/utils.ts +23 -24
  132. package/src/public/fuzzing/avm_fuzzer_simulator.ts +1 -1
  133. package/src/public/hinting_db_sources.ts +10 -7
  134. package/src/public/public_db_sources.ts +21 -14
  135. package/src/public/public_processor/guarded_merkle_tree.ts +6 -6
  136. package/src/public/public_processor/public_processor.ts +158 -88
  137. package/src/public/public_processor/public_processor_metrics.ts +12 -0
  138. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +5 -4
  139. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +2 -3
  140. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +2 -2
  141. package/src/public/public_tx_simulator/factories.ts +2 -1
  142. package/src/public/public_tx_simulator/public_tx_context.ts +8 -10
  143. package/src/public/public_tx_simulator/public_tx_simulator.ts +14 -10
  144. package/src/public/state_manager/state_manager.ts +1 -1
  145. package/src/public/test_executor_metrics.ts +24 -0
@@ -371,18 +371,19 @@ function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
371
371
  return (_apply_decs_2203_r = applyDecs2203RFactory())(targetClass, memberDecs, classDecs, parentClass);
372
372
  }
373
373
  var _dec, _dec1, _dec2, _initProto;
374
- import { MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NULLIFIER_SUBTREE_HEIGHT } from '@aztec/constants';
374
+ import { MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_TX_BLOB_DATA_SIZE_IN_FIELDS, NULLIFIER_SUBTREE_HEIGHT } from '@aztec/constants';
375
375
  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';
@@ -409,14 +410,12 @@ import { PublicProcessorMetrics } from './public_processor_metrics.js';
409
410
  /**
410
411
  * Creates a new instance of a PublicProcessor.
411
412
  * @param globalVariables - The global variables for the block being processed.
412
- * @param skipFeeEnforcement - Allows disabling balance checks for fee estimations.
413
+ * @param contractsDB - Optional pre-populated contracts DB; a fresh one is constructed if omitted.
413
414
  * @returns A new instance of a PublicProcessor.
414
- */ create(merkleTree, globalVariables, config) {
415
- const bindings = this.log.getBindings();
416
- const contractsDB = new PublicContractsDB(this.contractDataSource, bindings);
415
+ */ create(merkleTree, globalVariables, config, contractsDB = new PublicContractsDB(this.contractDataSource, this.log.getBindings())) {
417
416
  const guardedFork = new GuardedMerkleTreeOperations(merkleTree);
418
417
  const publicTxSimulator = this.createPublicTxSimulator(guardedFork, contractsDB, globalVariables, config);
419
- return new PublicProcessor(globalVariables, guardedFork, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient, createLogger('simulator:public-processor', bindings));
418
+ return new PublicProcessor(globalVariables, guardedFork, contractsDB, publicTxSimulator, this.dateProvider, this.telemetryClient, createLogger('simulator:public-processor', this.log.getBindings()));
420
419
  }
421
420
  createPublicTxSimulator(merkleTree, contractsDB, globalVariables, config) {
422
421
  return new TelemetryCppPublicTxSimulator(merkleTree, contractsDB, globalVariables, this.telemetryClient, config, this.log.getBindings());
@@ -428,6 +427,15 @@ class PublicProcessorTimeoutError extends Error {
428
427
  this.name = 'PublicProcessorTimeoutError';
429
428
  }
430
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
+ }
431
439
  _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
432
440
  [Attributes.TX_HASH]: tx.getTxHash().toString()
433
441
  })), _dec1 = trackSpan('PublicProcessor.processPrivateOnlyTx', (tx)=>({
@@ -446,6 +454,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
446
454
  dateProvider;
447
455
  log;
448
456
  opts;
457
+ debugLogStore;
449
458
  static{
450
459
  ({ e: [_initProto] } = _apply_decs_2203_r(this, [
451
460
  [
@@ -466,7 +475,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
466
475
  ], []));
467
476
  }
468
477
  metrics;
469
- constructor(globalVariables, guardedMerkleTree, contractsDB, publicTxSimulator, dateProvider, telemetryClient = getTelemetryClient(), log, opts = {}){
478
+ constructor(globalVariables, guardedMerkleTree, contractsDB, publicTxSimulator, dateProvider, telemetryClient = getTelemetryClient(), log, opts = {}, debugLogStore = new NullDebugLogStore()){
470
479
  this.globalVariables = globalVariables;
471
480
  this.guardedMerkleTree = guardedMerkleTree;
472
481
  this.contractsDB = contractsDB;
@@ -474,6 +483,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
474
483
  this.dateProvider = dateProvider;
475
484
  this.log = log;
476
485
  this.opts = opts;
486
+ this.debugLogStore = debugLogStore;
477
487
  _initProto(this);
478
488
  this.metrics = new PublicProcessorMetrics(telemetryClient, 'PublicProcessor');
479
489
  }
@@ -487,43 +497,52 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
487
497
  * @param validator - Pre-process validator and nullifier cache to use for processing the txs.
488
498
  * @returns The list of processed txs with their circuit simulation outputs.
489
499
  */ async process(txs, limits = {}, validator = {}) {
490
- const { maxTransactions, maxBlockSize, deadline, maxBlockGas, maxBlobFields } = limits;
500
+ const { maxTransactions, deadline, maxBlockGas, maxBlobFields, isBuildingProposal, signal } = limits;
491
501
  const { preprocessValidator, nullifierCache } = validator;
492
502
  const result = [];
493
503
  const usedTxs = [];
494
504
  const failed = [];
505
+ const debugLogs = [];
495
506
  const timer = new Timer();
496
507
  let totalSizeInBytes = 0;
497
508
  let returns = [];
498
509
  let totalPublicGas = new Gas(0, 0);
499
510
  let totalBlockGas = new Gas(0, 0);
500
511
  let totalBlobFields = 0;
512
+ let silentlySkippedCount = 0;
513
+ let totalSilentlySkippedDurationMs = 0;
501
514
  for await (const tx of txs){
502
515
  // Only process up to the max tx limit
503
516
  if (maxTransactions !== undefined && result.length >= maxTransactions) {
504
517
  this.log.debug(`Stopping tx processing due to reaching the max tx limit.`);
505
518
  break;
506
519
  }
507
- // Bail if we've hit the deadline
520
+ // Bail if we've hit the deadline or have been interrupted.
508
521
  if (deadline && this.dateProvider.now() > +deadline) {
509
522
  this.log.warn(`Stopping tx processing due to timeout.`);
510
523
  break;
511
524
  }
512
- // 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
+ }
513
529
  const txHash = tx.getTxHash().toString();
514
- const preTxSizeInBytes = tx.getEstimatedPrivateTxEffectsSize();
515
- if (maxBlockSize !== undefined && totalSizeInBytes + preTxSizeInBytes > maxBlockSize) {
516
- 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`, {
517
535
  txHash,
518
- sizeInBytes: preTxSizeInBytes,
519
- totalSizeInBytes,
520
- maxBlockSize
536
+ txBlobFields,
537
+ totalBlobFields,
538
+ maxBlobFields
521
539
  });
522
540
  continue;
523
541
  }
524
- // 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.
525
544
  const txGasLimit = tx.data.constants.txContext.gasSettings.gasLimits;
526
- if (maxBlockGas !== undefined && totalBlockGas.add(txGasLimit).gtAny(maxBlockGas)) {
545
+ if (isBuildingProposal && maxBlockGas !== undefined && totalBlockGas.add(txGasLimit).gtAny(maxBlockGas)) {
527
546
  this.log.warn(`Skipping processing of tx ${txHash} due to block gas limit`, {
528
547
  txHash,
529
548
  txGasLimit,
@@ -545,11 +564,6 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
545
564
  });
546
565
  returns.push(new NestedProcessReturnValues([]));
547
566
  continue;
548
- } else if (result.result === 'skipped') {
549
- const reason = result.reason.join(', ');
550
- this.log.debug(`Skipping tx ${txHash.toString()} due to pre-process validation: ${reason}`);
551
- returns.push(new NestedProcessReturnValues([]));
552
- continue;
553
567
  } else {
554
568
  this.log.trace(`Tx ${txHash.toString()} is valid before processing.`);
555
569
  }
@@ -563,83 +577,104 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
563
577
  const startStateReference = await this.guardedMerkleTree.getUnderlyingFork().getStateReference();
564
578
  this.contractsDB.createCheckpoint();
565
579
  try {
566
- const [processedTx, returnValues] = await this.processTx(tx, deadline);
580
+ const [txProcessingTimeMs, [processedTx, returnValues, txDebugLogs]] = await elapsed(()=>this.processTx(tx, deadline, signal));
567
581
  // Inject a fake processing failure after N txs if requested
568
582
  const fakeThrowAfter = this.opts.fakeThrowAfterProcessingTxCount;
569
583
  if (fakeThrowAfter !== undefined && result.length + failed.length + 1 >= fakeThrowAfter) {
570
584
  throw new Error(`Fake error after processing ${fakeThrowAfter} txs`);
571
585
  }
572
586
  const txBlobFields = processedTx.txEffect.getNumBlobFields();
573
- // If the actual size of this tx would exceed block size, skip it
574
587
  const txSize = txBlobFields * Fr.SIZE_IN_BYTES;
575
- if (maxBlockSize !== undefined && totalSizeInBytes + txSize > maxBlockSize) {
576
- this.log.debug(`Skipping processed tx ${txHash} sized ${txSize} due to max block size.`, {
588
+ // A single tx's effects must fit within the per-tx blob encoding: the rollup circuit encodes each
589
+ // tx into a fixed [Field; MAX_TX_BLOB_DATA_SIZE_IN_FIELDS] array, so a larger tx effect cannot be
590
+ // proven. The per-category side-effect limits already guarantee this upstream, so reaching here means
591
+ // the tx is malformed; reject it as invalid rather than letting it poison proving.
592
+ if (txBlobFields > MAX_TX_BLOB_DATA_SIZE_IN_FIELDS) {
593
+ const error = new Error(`Tx ${txHash} produced ${txBlobFields} blob fields, exceeding the per-tx maximum of ${MAX_TX_BLOB_DATA_SIZE_IN_FIELDS}`);
594
+ this.log.error(error.message, {
577
595
  txHash,
578
- sizeInBytes: txSize,
579
- totalSizeInBytes,
580
- maxBlockSize
596
+ txBlobFields
581
597
  });
582
- // Need to revert the checkpoint here and don't go any further
583
598
  await checkpoint.revert();
584
599
  this.contractsDB.revertCheckpoint();
600
+ failed.push({
601
+ tx,
602
+ error
603
+ });
604
+ returns.push(new NestedProcessReturnValues([]));
585
605
  continue;
586
606
  }
587
- // If the actual blob fields of this tx would exceed the limit, skip it
607
+ // If the actual blob fields of this tx would exceed the limit, skip it.
588
608
  // Note: maxBlobFields already accounts for block end blob fields and previous blocks in checkpoint.
589
609
  if (maxBlobFields !== undefined && totalBlobFields + txBlobFields > maxBlobFields) {
590
610
  this.log.debug(`Skipping processed tx ${txHash} with ${txBlobFields} blob fields due to max blob fields limit.`, {
591
611
  txHash,
592
612
  txBlobFields,
593
613
  totalBlobFields,
594
- maxBlobFields
614
+ maxBlobFields,
615
+ txProcessingTimeMs
595
616
  });
617
+ silentlySkippedCount += 1;
618
+ totalSilentlySkippedDurationMs += txProcessingTimeMs;
619
+ this.metrics.recordSilentlySkipped(txProcessingTimeMs);
596
620
  // Need to revert the checkpoint here and don't go any further
597
621
  await checkpoint.revert();
598
622
  this.contractsDB.revertCheckpoint();
599
623
  continue;
600
624
  }
625
+ // During re-execution, check if the actual gas used by this tx would push the block over the gas limit.
626
+ // Unlike the proposal-building check (which uses declared gas limits pessimistically before processing),
627
+ // this uses actual gas and stops processing when the limit is exceeded.
628
+ if (!isBuildingProposal && maxBlockGas !== undefined && totalBlockGas.add(processedTx.gasUsed.totalGas).gtAny(maxBlockGas)) {
629
+ this.log.warn(`Stopping re-execution since tx ${txHash} would push block gas over limit`, {
630
+ txHash,
631
+ txGas: processedTx.gasUsed.totalGas,
632
+ totalBlockGas,
633
+ maxBlockGas
634
+ });
635
+ await checkpoint.revert();
636
+ this.contractsDB.revertCheckpoint();
637
+ break;
638
+ }
601
639
  // FIXME(fcarreiro): it's ugly to have to notify the validator of nullifiers.
602
640
  // I'd rather pass the validators the processedTx as well and let them deal with it.
603
641
  nullifierCache?.addNullifiers(processedTx.txEffect.nullifiers.map((n)=>n.toBuffer()));
604
642
  result.push(processedTx);
605
643
  usedTxs.push(tx);
606
644
  returns = returns.concat(returnValues);
645
+ debugLogs.push(...txDebugLogs);
646
+ this.debugLogStore.storeLogs(processedTx.hash.toString(), txDebugLogs);
607
647
  totalPublicGas = totalPublicGas.add(processedTx.gasUsed.publicGas);
608
648
  totalBlockGas = totalBlockGas.add(processedTx.gasUsed.totalGas);
609
649
  totalSizeInBytes += txSize;
610
650
  totalBlobFields += txBlobFields;
651
+ // Commit the tx-level contracts checkpoint on success
652
+ this.contractsDB.commitCheckpoint();
611
653
  } catch (err) {
612
- if (err?.name === 'PublicProcessorTimeoutError') {
613
- this.log.warn(`Stopping tx processing due to timeout.`);
614
- // We hit the transaction execution deadline.
615
- // There may still be a transaction executing on a worker thread (C++ via NAPI).
616
- // Signal cancellation AND WAIT for the simulation to actually stop.
617
- // This is critical because C++ might be in the middle of a slow operation (e.g., pad_trees)
618
- // and won't check the cancellation flag until that operation completes.
619
- // Without waiting, we'd proceed to revert checkpoints while C++ is still writing to state.
620
- // Wait for C++ to stop gracefully.
654
+ if (isPublicProcessorInterruptError(err)) {
655
+ const interruptReason = err.name === 'PublicProcessorTimeoutError' ? 'timeout' : 'abort signal';
656
+ this.log.warn(`Stopping tx processing due to ${interruptReason}.`);
657
+ // The tx may still be executing on a worker thread (C++ via NAPI).
658
+ // Signal cancellation AND WAIT for the simulation to actually stop before touching fork checkpoints.
621
659
  await this.publicTxSimulator.cancel?.();
622
660
  // Now stop the guarded fork to prevent any further TS-side access to the world state.
623
661
  await this.guardedMerkleTree.stop();
624
662
  // We now know there can't be any further access to world state. The fork is in a state where there is:
625
663
  // 1. At least one outstanding checkpoint that has not been committed (the one created before we processed the tx).
626
664
  // 2. Possible state updates on that checkpoint or any others created during execution.
627
- // First we revert a checkpoint as managed by the ForkCheckpoint. This will revert whatever is the current checkpoint
628
- // which may not be the one originally created by this object. But that is ok, we do this to fulfil the ForkCheckpoint
629
- // lifecycle expectations and ensure it doesn't attempt to commit later on.
630
- await checkpoint.revert();
631
- // Now we want to revert any/all remaining checkpoints, destroying any outstanding state updates.
632
- // This needs to be done directly on the underlying fork as the guarded fork has been stopped.
633
- await this.guardedMerkleTree.getUnderlyingFork().revertAllCheckpoints();
665
+ // Revert all checkpoints at or above this checkpoint's depth (inclusive), destroying any outstanding state
666
+ // updates from this tx and any nested checkpoints created during execution. This preserves any checkpoints
667
+ // created by callers below our depth.
668
+ await checkpoint.revertToCheckpoint();
634
669
  // Revert any contracts added to the DB for the tx.
635
670
  this.contractsDB.revertCheckpoint();
636
671
  // Ensure we're at the same state as when we started processing this tx.
637
672
  await this.checkWorldStateUnchanged(startStateReference, txHash, err);
638
673
  break;
639
674
  }
640
- // Roll back state to start of TX before proceeding to next TX
641
- await checkpoint.revert();
642
- await this.guardedMerkleTree.getUnderlyingFork().revertAllCheckpoints();
675
+ // Roll back state to start of TX before proceeding to next TX.
676
+ // Reverts all checkpoints at or above this checkpoint's depth, preserving any caller checkpoints below.
677
+ await checkpoint.revertToCheckpoint();
643
678
  this.contractsDB.revertCheckpoint();
644
679
  const errorMessage = err instanceof Error || err instanceof AssertionError ? err.message : 'Unknown error';
645
680
  this.log.warn(`Failed to process tx ${txHash.toString()}: ${errorMessage} ${err?.stack}`);
@@ -653,25 +688,30 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
653
688
  } finally{
654
689
  // Base case is we always commit the checkpoint. Using the ForkCheckpoint means this has no effect if the tx was previously reverted
655
690
  await checkpoint.commit();
656
- this.contractsDB.commitCheckpointOkIfNone();
657
691
  }
658
692
  }
659
693
  const duration = timer.s();
660
694
  const rate = duration > 0 ? totalPublicGas.l2Gas / duration : 0;
661
695
  this.metrics.recordAllTxs(totalPublicGas, rate);
662
- this.log.info(`Processed ${result.length} successful txs and ${failed.length} failed txs in ${duration}s`, {
696
+ const silentlySkippedDurationMs = Math.round(totalSilentlySkippedDurationMs);
697
+ this.log.info(`Processed ${result.length} successful txs and ${failed.length} failed txs ` + `(${silentlySkippedCount} silently skipped, ${silentlySkippedDurationMs}ms wasted) ` + `in ${duration}s`, {
698
+ blockNumber: this.globalVariables.blockNumber,
699
+ successfulCount: result.length,
700
+ failedCount: failed.length,
663
701
  duration,
664
702
  rate,
665
703
  totalPublicGas,
666
704
  totalBlockGas,
667
- totalSizeInBytes
705
+ totalSizeInBytes,
706
+ silentlySkippedCount,
707
+ silentlySkippedDurationMs
668
708
  });
669
709
  return [
670
710
  result,
671
711
  failed,
672
712
  usedTxs,
673
713
  returns,
674
- totalBlobFields
714
+ debugLogs
675
715
  ];
676
716
  }
677
717
  async checkWorldStateUnchanged(startStateReference, txHash, cause) {
@@ -687,8 +727,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
687
727
  });
688
728
  }
689
729
  }
690
- async processTx(tx, deadline) {
691
- const [time, [processedTx, returnValues]] = await elapsed(()=>this.processTxWithinDeadline(tx, deadline));
730
+ async processTx(tx, deadline, signal) {
731
+ const [time, [processedTx, returnValues, debugLogs]] = await elapsed(()=>this.processTxWithinDeadline(tx, deadline, signal));
692
732
  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`, {
693
733
  txHash: processedTx.hash,
694
734
  txFee: processedTx.txEffect.transactionFee.toBigInt(),
@@ -706,7 +746,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
706
746
  });
707
747
  return [
708
748
  processedTx,
709
- returnValues ?? []
749
+ returnValues ?? [],
750
+ debugLogs
710
751
  ];
711
752
  }
712
753
  async doTreeInsertionsForPrivateOnlyTx(processedTx) {
@@ -728,7 +769,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
728
769
  const treeInsertionEnd = process.hrtime.bigint();
729
770
  this.metrics.recordTreeInsertions(Number(treeInsertionEnd - treeInsertionStart) / 1_000);
730
771
  }
731
- /** Processes the given tx within deadline. Returns timeout if deadline is hit. */ async processTxWithinDeadline(tx, deadline) {
772
+ /** Processes the given tx within deadline or until the signal is aborted. */ async processTxWithinDeadline(tx, deadline, signal) {
732
773
  const innerProcessFn = tx.hasPublicCalls() ? ()=>this.processTxWithPublicCalls(tx) : ()=>this.processPrivateOnlyTx(tx);
733
774
  // Fake a delay per tx if instructed (used for tests)
734
775
  const fakeDelayPerTxMs = this.opts.fakeProcessingDelayPerTxMs;
@@ -738,20 +779,31 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
738
779
  await sleep(fakeDelayPerTxMs);
739
780
  return result;
740
781
  } : innerProcessFn;
741
- if (!deadline) {
782
+ const processingSignal = this.getProcessingSignal(tx, deadline, signal);
783
+ if (!processingSignal) {
742
784
  return await processFn();
743
785
  }
744
- const txHash = tx.getTxHash();
786
+ return await execWithSignal(()=>processFn(), processingSignal, (signal)=>signal.reason?.name === 'TimeoutError' ? new PublicProcessorTimeoutError() : new PublicProcessorAbortError());
787
+ }
788
+ getProcessingSignal(tx, deadline, signal) {
789
+ if (!deadline) {
790
+ return signal;
791
+ }
745
792
  const timeout = +deadline - this.dateProvider.now();
746
793
  if (timeout <= 0) {
747
794
  throw new PublicProcessorTimeoutError();
748
795
  }
796
+ const txHash = tx.getTxHash();
749
797
  this.log.debug(`Processing tx ${txHash.toString()} within ${timeout}ms`, {
750
798
  deadline: deadline.toISOString(),
751
799
  now: new Date(this.dateProvider.now()).toISOString(),
752
800
  txHash
753
801
  });
754
- return await executeTimeout(()=>processFn(), timeout, ()=>new PublicProcessorTimeoutError());
802
+ const timeoutSignal = AbortSignal.timeout(timeout);
803
+ return signal ? AbortSignal.any([
804
+ signal,
805
+ timeoutSignal
806
+ ]) : timeoutSignal;
755
807
  }
756
808
  /**
757
809
  * Creates the public data write for paying the tx fee.
@@ -780,10 +832,11 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
780
832
  this.metrics.recordClassPublication(...tx.getContractClassLogs().filter((log)=>ContractClassPublishedEvent.isContractClassPublishedEvent(log)).map((log)=>ContractClassPublishedEvent.fromLog(log)));
781
833
  // Fee payment insertion has already been done. Do the rest.
782
834
  await this.doTreeInsertionsForPrivateOnlyTx(processedTx);
783
- await this.contractsDB.addNewContracts(tx);
835
+ this.contractsDB.addNewContracts(tx);
784
836
  return [
785
837
  processedTx,
786
- undefined
838
+ undefined,
839
+ []
787
840
  ];
788
841
  }
789
842
  async processTxWithPublicCalls(tx) {
@@ -805,7 +858,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
805
858
  const processedTx = makeProcessedTxFromTxWithPublicCalls(tx, this.globalVariables, avmProvingRequest, publicTxEffect, gasUsed, revertCode, revertReason);
806
859
  return [
807
860
  processedTx,
808
- appLogicReturnValues
861
+ appLogicReturnValues,
862
+ result.logs ?? []
809
863
  ];
810
864
  }
811
865
  /**
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvcl9tZXRyaWNzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL3B1YmxpY19wcm9jZXNzb3IvcHVibGljX3Byb2Nlc3Nvcl9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDNUYsT0FBTyxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUtMLEtBQUssZUFBZSxFQUNwQixLQUFLLE1BQU0sRUFHWixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLHFCQUFhLHNCQUFzQjtJQUNqQyxTQUFnQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBRS9CLE9BQU8sQ0FBQyxVQUFVLENBQVk7SUFDOUIsT0FBTyxDQUFDLE9BQU8sQ0FBZ0I7SUFDL0IsT0FBTyxDQUFDLFlBQVksQ0FBZ0I7SUFFcEMsT0FBTyxDQUFDLGFBQWEsQ0FBWTtJQUNqQyxPQUFPLENBQUMsVUFBVSxDQUFnQjtJQUVsQyxPQUFPLENBQUMsZ0JBQWdCLENBQVk7SUFDcEMsT0FBTyxDQUFDLFFBQVEsQ0FBUTtJQUN4QixPQUFPLENBQUMsaUJBQWlCLENBQVk7SUFDckMsT0FBTyxDQUFDLE9BQU8sQ0FBWTtJQUMzQixPQUFPLENBQUMsS0FBSyxDQUFZO0lBRXpCLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBWTtJQUV6QyxZQUFZLE1BQU0sRUFBRSxlQUFlLEVBQUUsSUFBSSxTQUFvQixFQThCNUQ7SUFFRCxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFHbEU7SUFFRCxRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLFFBWTVEO0lBRUQsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFnQjFDO0lBRUQsY0FBYyxTQUliO0lBRUQsbUJBQW1CLENBQUMsU0FBUyxFQUFFLGdCQUFnQixRQUU5QztJQUVELHNCQUFzQixDQUFDLEdBQUcsTUFBTSxFQUFFLDJCQUEyQixFQUFFLFFBUzlEO0lBRUQsb0JBQW9CLENBQUMsVUFBVSxFQUFFLE1BQU0sUUFFdEM7Q0FDRiJ9
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,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,YAAY,MAAM,EAAE,eAAe,EAAE,IAAI,SAAoB,EA8B5D;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"}
@@ -13,6 +13,8 @@ export class PublicProcessorMetrics {
13
13
  gasRate;
14
14
  txGas;
15
15
  treeInsertionDuration;
16
+ silentlySkippedCount;
17
+ silentlySkippedDuration;
16
18
  constructor(client, name = 'PublicProcessor'){
17
19
  this.tracer = client.getTracer(name);
18
20
  const meter = client.getMeter(name);
@@ -42,6 +44,8 @@ export class PublicProcessorMetrics {
42
44
  this.txGas = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_TX_GAS);
43
45
  this.gasRate = meter.createHistogram(Metrics.PUBLIC_PROCESSOR_GAS_RATE);
44
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);
45
49
  }
46
50
  recordPhaseDuration(phaseName, durationMs) {
47
51
  this.phaseCount.add(1, {
@@ -105,4 +109,8 @@ export class PublicProcessorMetrics {
105
109
  recordTreeInsertions(durationUs) {
106
110
  this.treeInsertionDuration.record(Math.ceil(durationUs));
107
111
  }
112
+ recordSilentlySkipped(durationMs) {
113
+ this.silentlySkippedCount.add(1);
114
+ this.silentlySkippedDuration.record(Math.ceil(durationMs));
115
+ }
108
116
  }
@@ -16,4 +16,4 @@ export declare class ContractProviderForCpp implements ContractProvider {
16
16
  commitCheckpoint: () => Promise<void>;
17
17
  revertCheckpoint: () => Promise<void>;
18
18
  }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfcHJvdmlkZXJfZm9yX2NwcC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfdHhfc2ltdWxhdG9yL2NvbnRyYWN0X3Byb3ZpZGVyX2Zvcl9jcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3RELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXhELE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUscUJBQWEsc0JBQXVCLFlBQVcsZ0JBQWdCO0lBSTNELE9BQU8sQ0FBQyxXQUFXO0lBQ25CLE9BQU8sQ0FBQyxlQUFlO0lBSnpCLE9BQU8sQ0FBQyxHQUFHLENBQVM7SUFFcEIsWUFDVSxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLGVBQWUsRUFBRSxlQUFlLEVBQ3hDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHMUI7SUFFTSxtQkFBbUIsb0VBYXhCO0lBRUssZ0JBQWdCLG9FQWVyQjtJQUVLLFlBQVksMkVBV2pCO0lBRUsscUJBQXFCLG9FQWdCMUI7SUFFSyxvQkFBb0IscUVBc0J6QjtJQUVLLGdCQUFnQixzQkFHckI7SUFFSyxnQkFBZ0Isc0JBR3JCO0lBRUssZ0JBQWdCLHNCQUdyQjtDQUNIIn0=
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":"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;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"}
@@ -13,7 +13,7 @@ export class ContractProviderForCpp {
13
13
  this.globalVariables = globalVariables;
14
14
  this.getContractInstance = async (address)=>{
15
15
  this.log.trace(`Contract provider callback: getContractInstance(${address})`);
16
- const aztecAddr = AztecAddress.fromString(address);
16
+ const aztecAddr = AztecAddress.fromStringUnsafe(address);
17
17
  const instance = await this.contractsDB.getContractInstance(aztecAddr, this.globalVariables.timestamp);
18
18
  if (!instance) {
19
19
  this.log.debug(`Contract instance not found: ${address}`);
@@ -39,8 +39,8 @@ export class ContractProviderForCpp {
39
39
  // Construct ContractDeploymentData from plain object.
40
40
  const contractDeploymentData = ContractDeploymentData.fromPlainObject(rawData);
41
41
  // Add contracts to the contracts DB
42
- this.log.trace(`Calling contractsDB.addContracts`);
43
- await this.contractsDB.addContracts(contractDeploymentData);
42
+ this.log.trace(`Calling contractsDB.addContractsFromLogs`);
43
+ this.contractsDB.addContractsFromLogs(contractDeploymentData);
44
44
  };
45
45
  this.getBytecodeCommitment = async (classId)=>{
46
46
  this.log.trace(`Contract provider callback: getBytecodeCommitment(${classId})`);
@@ -58,7 +58,7 @@ export class ContractProviderForCpp {
58
58
  this.getDebugFunctionName = async (address, selector)=>{
59
59
  this.log.trace(`Contract provider callback: getDebugFunctionName(${address}, ${selector})`);
60
60
  // Parse address and selector strings
61
- const aztecAddr = AztecAddress.fromString(address);
61
+ const aztecAddr = AztecAddress.fromStringUnsafe(address);
62
62
  const selectorFr = Fr.fromString(selector);
63
63
  const functionSelector = FunctionSelector.fromFieldOrUndefined(selectorFr);
64
64
  if (!functionSelector) {
@@ -89,6 +89,7 @@ export class ContractProviderForCpp {
89
89
  }
90
90
  getContractInstance;
91
91
  getContractClass;
92
+ // eslint-disable-next-line require-await
92
93
  addContracts;
93
94
  getBytecodeCommitment;
94
95
  getDebugFunctionName;
@@ -50,4 +50,4 @@ export declare class TelemetryCppPublicTxSimulator extends MeasuredCppPublicTxSi
50
50
  readonly tracer: Tracer;
51
51
  constructor(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, telemetryClient?: TelemetryClient, config?: Partial<PublicSimulatorConfig>, bindings?: LoggerBindings);
52
52
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BwX3B1YmxpY190eF9zaW11bGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3R4X3NpbXVsYXRvci9jcHBfcHVibGljX3R4X3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxjQUFjLEVBQTBCLE1BQU0sdUJBQXVCLENBQUM7QUFJakcsT0FBTyxFQUdMLEtBQUsscUJBQXFCLEVBQzFCLGNBQWMsRUFFZixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLE1BQU0sRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUtoRyxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQ1Ysa0NBQWtDLEVBQ2xDLDBCQUEwQixFQUMzQixNQUFNLG9DQUFvQyxDQUFDO0FBRTVDOzs7O0dBSUc7QUFDSCxxQkFBYSxvQkFBcUIsU0FBUSxpQkFBa0IsWUFBVywwQkFBMEI7SUFDL0YsVUFBbUIsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUMvQiwyREFBMkQ7SUFDM0QsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQW9CO0lBQzlDLGtGQUFrRjtJQUNsRixPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBa0I7SUFFNUMsWUFDRSxVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsZUFBZSxFQUFFLGVBQWUsRUFDaEMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQ3ZDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFJMUI7SUFFRDs7Ozs7T0FLRztJQUNtQixRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBK0U5RDtJQUVEOzs7Ozs7Ozs7T0FTRztJQUNVLE1BQU0sQ0FBQyxhQUFhLEdBQUUsTUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FlOUQ7Q0FDRjtBQUVELHFCQUFhLDRCQUE2QixTQUFRLG9CQUFxQixZQUFXLGtDQUFrQztJQUtoSCxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSx3QkFBd0I7SUFKdEQsWUFDRSxVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsZUFBZSxFQUFFLGVBQWUsRUFDYixPQUFPLEVBQUUsd0JBQXdCLEVBQ3BELE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUN2QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBRzFCO0lBRXFCLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sR0FBRSxNQUFzQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FTL0Y7Q0FDRjtBQUVEOztHQUVHO0FBQ0gscUJBQWEsNkJBQThCLFNBQVEsNEJBQTRCO0lBRTdFLFNBQWdCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFL0IsWUFDRSxVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsZUFBZSxFQUFFLGVBQWUsRUFDaEMsZUFBZSxHQUFFLGVBQXNDLEVBQ3ZELE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUN2QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBSzFCO0NBQ0YifQ==
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,EAAE,KAAK,cAAc,EAA0B,MAAM,uBAAuB,CAAC;AAIjG,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,CA+E9D;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"}
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"}
@@ -1,4 +1,4 @@
1
- import { createLogger, logLevel } from '@aztec/foundation/log';
1
+ import { createLogger } from '@aztec/foundation/log';
2
2
  import { sleep } from '@aztec/foundation/sleep';
3
3
  import { avmSimulate, cancelSimulation, createCancellationToken } from '@aztec/native';
4
4
  import { ProtocolContractsList } from '@aztec/protocol-contracts';
@@ -51,8 +51,7 @@ import { PublicTxSimulator } from './public_tx_simulator.js';
51
51
  this.cancellationToken = createCancellationToken();
52
52
  // Store the promise so cancel() can wait for it
53
53
  this.log.debug(`Calling C++ simulator for tx ${txHash}`);
54
- this.simulationPromise = avmSimulate(inputBuffer, contractProvider, wsCppHandle, logLevel, // TODO: re-enable logging
55
- undefined, this.cancellationToken);
54
+ this.simulationPromise = avmSimulate(inputBuffer, contractProvider, wsCppHandle, this.log.level, undefined, this.cancellationToken);
56
55
  let resultBuffer;
57
56
  try {
58
57
  resultBuffer = await this.simulationPromise;
@@ -39,4 +39,4 @@ export declare class MeasuredCppPublicTxSimulatorHintedDbs extends CppPublicTxSi
39
39
  constructor(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, metrics: ExecutorMetricsInterface, config?: Partial<PublicSimulatorConfig>, bindings?: LoggerBindings);
40
40
  simulate(tx: Tx, txLabel?: string): Promise<PublicTxResult>;
41
41
  }
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BwX3B1YmxpY190eF9zaW11bGF0b3Jfd2l0aF9oaW50ZWRfZGJzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL3B1YmxpY190eF9zaW11bGF0b3IvY3BwX3B1YmxpY190eF9zaW11bGF0b3Jfd2l0aF9oaW50ZWRfZGJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBRSxLQUFLLGNBQWMsRUFBMEIsTUFBTSx1QkFBdUIsQ0FBQztBQUVqRyxPQUFPLEVBRUwsS0FBSyxxQkFBcUIsRUFDMUIsY0FBYyxFQUVmLE1BQU0sbUJBQW1CLENBQUM7QUFFM0IsT0FBTyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJNUQsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUNWLGtDQUFrQyxFQUNsQywwQkFBMEIsRUFDM0IsTUFBTSxvQ0FBb0MsQ0FBQztBQUU1Qzs7Ozs7R0FLRztBQUNILHFCQUFhLDZCQUE4QixTQUFRLGlCQUFrQixZQUFXLDBCQUEwQjtJQUN4RyxVQUFtQixHQUFHLEVBQUUsTUFBTSxDQUFDO0lBRS9CLFlBQ0UsVUFBVSxFQUFFLHlCQUF5QixFQUNyQyxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUN2QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBSTFCO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ21CLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0E4QzlEO0NBQ0Y7QUFFRDs7Ozs7O0dBTUc7QUFDSCxxQkFBYSxxQ0FDWCxTQUFRLDZCQUNSLFlBQVcsa0NBQWtDO0lBTTNDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLHdCQUF3QjtJQUp0RCxZQUNFLFVBQVUsRUFBRSx5QkFBeUIsRUFDckMsV0FBVyxFQUFFLGlCQUFpQixFQUM5QixlQUFlLEVBQUUsZUFBZSxFQUNiLE9BQU8sRUFBRSx3QkFBd0IsRUFDcEQsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQ3ZDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHMUI7SUFFcUIsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxHQUFFLE1BQXNCLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQVMvRjtDQUNGIn0=
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BwX3B1YmxpY190eF9zaW11bGF0b3Jfd2l0aF9oaW50ZWRfZGJzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHVibGljL3B1YmxpY190eF9zaW11bGF0b3IvY3BwX3B1YmxpY190eF9zaW11bGF0b3Jfd2l0aF9oaW50ZWRfZGJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBRSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RixPQUFPLEVBRUwsS0FBSyxxQkFBcUIsRUFDMUIsY0FBYyxFQUVmLE1BQU0sbUJBQW1CLENBQUM7QUFFM0IsT0FBTyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJNUQsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUNWLGtDQUFrQyxFQUNsQywwQkFBMEIsRUFDM0IsTUFBTSxvQ0FBb0MsQ0FBQztBQUU1Qzs7Ozs7R0FLRztBQUNILHFCQUFhLDZCQUE4QixTQUFRLGlCQUFrQixZQUFXLDBCQUEwQjtJQUN4RyxVQUFtQixHQUFHLEVBQUUsTUFBTSxDQUFDO0lBRS9CLFlBQ0UsVUFBVSxFQUFFLHlCQUF5QixFQUNyQyxXQUFXLEVBQUUsaUJBQWlCLEVBQzlCLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUN2QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBSTFCO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ21CLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0E4QzlEO0NBQ0Y7QUFFRDs7Ozs7O0dBTUc7QUFDSCxxQkFBYSxxQ0FDWCxTQUFRLDZCQUNSLFlBQVcsa0NBQWtDO0lBTTNDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLHdCQUF3QjtJQUp0RCxZQUNFLFVBQVUsRUFBRSx5QkFBeUIsRUFDckMsV0FBVyxFQUFFLGlCQUFpQixFQUM5QixlQUFlLEVBQUUsZUFBZSxFQUNiLE9BQU8sRUFBRSx3QkFBd0IsRUFDcEQsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQ3ZDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHMUI7SUFFcUIsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxHQUFFLE1BQXNCLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQVMvRjtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"cpp_public_tx_simulator_with_hinted_dbs.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAA0B,MAAM,uBAAuB,CAAC;AAEjG,OAAO,EAEL,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;AAI5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EACV,kCAAkC,EAClC,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAE5C;;;;;GAKG;AACH,qBAAa,6BAA8B,SAAQ,iBAAkB,YAAW,0BAA0B;IACxG,UAAmB,GAAG,EAAE,MAAM,CAAC;IAE/B,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;;;;;;;;;OASG;IACmB,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CA8C9D;CACF;AAED;;;;;;GAMG;AACH,qBAAa,qCACX,SAAQ,6BACR,YAAW,kCAAkC;IAM3C,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"}
1
+ {"version":3,"file":"cpp_public_tx_simulator_with_hinted_dbs.d.ts","sourceRoot":"","sources":["../../../src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EAEL,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;AAI5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EACV,kCAAkC,EAClC,0BAA0B,EAC3B,MAAM,oCAAoC,CAAC;AAE5C;;;;;GAKG;AACH,qBAAa,6BAA8B,SAAQ,iBAAkB,YAAW,0BAA0B;IACxG,UAAmB,GAAG,EAAE,MAAM,CAAC;IAE/B,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;;;;;;;;;OASG;IACmB,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CA8C9D;CACF;AAED;;;;;;GAMG;AACH,qBAAa,qCACX,SAAQ,6BACR,YAAW,kCAAkC;IAM3C,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"}
@@ -1,4 +1,4 @@
1
- import { createLogger, logLevel } from '@aztec/foundation/log';
1
+ import { createLogger } from '@aztec/foundation/log';
2
2
  import { avmSimulateWithHintedDbs } from '@aztec/native';
3
3
  import { AvmCircuitInputs, PublicTxResult, deserializeFromMessagePack } from '@aztec/stdlib/avm';
4
4
  import { SimulationError } from '@aztec/stdlib/errors';
@@ -43,7 +43,7 @@ import { PublicTxSimulator } from './public_tx_simulator.js';
43
43
  const inputBuffer = avmCircuitInputs.serializeWithMessagePack();
44
44
  let resultBuffer;
45
45
  try {
46
- resultBuffer = await avmSimulateWithHintedDbs(inputBuffer, logLevel);
46
+ resultBuffer = await avmSimulateWithHintedDbs(inputBuffer, this.log.level);
47
47
  } catch (error) {
48
48
  throw new SimulationError(`C++ hinted simulation failed: ${error.message}`, []);
49
49
  }