@aztec/simulator 0.0.1-commit.179ed20 → 0.0.1-commit.189eedb3

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 (127) hide show
  1. package/README.md +4 -4
  2. package/dest/private/acvm_wasm.d.ts +1 -1
  3. package/dest/private/acvm_wasm.d.ts.map +1 -1
  4. package/dest/private/acvm_wasm.js +3 -1
  5. package/dest/private/circuit_recording/circuit_recorder.js +2 -2
  6. package/dest/public/avm/avm_gas.js +3 -3
  7. package/dest/public/avm/avm_simulator.js +1 -1
  8. package/dest/public/avm/calldata.d.ts +1 -1
  9. package/dest/public/avm/calldata.d.ts.map +1 -1
  10. package/dest/public/avm/calldata.js +3 -2
  11. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts +2 -0
  12. package/dest/public/avm/fixtures/account_proof_fetcher.d.ts.map +1 -0
  13. package/dest/public/avm/fixtures/account_proof_fetcher.js +152 -0
  14. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts +2 -1
  15. package/dest/public/avm/fixtures/base_avm_simulation_tester.d.ts.map +1 -1
  16. package/dest/public/avm/fixtures/base_avm_simulation_tester.js +17 -2
  17. package/dest/public/avm/fixtures/utils.d.ts +1 -1
  18. package/dest/public/avm/fixtures/utils.d.ts.map +1 -1
  19. package/dest/public/avm/fixtures/utils.js +3 -0
  20. package/dest/public/avm/opcodes/accrued_substate.d.ts +2 -2
  21. package/dest/public/avm/opcodes/accrued_substate.d.ts.map +1 -1
  22. package/dest/public/avm/opcodes/accrued_substate.js +3 -4
  23. package/dest/public/avm/opcodes/contract.d.ts +3 -2
  24. package/dest/public/avm/opcodes/contract.d.ts.map +1 -1
  25. package/dest/public/avm/opcodes/contract.js +5 -1
  26. package/dest/public/avm/opcodes/ec_add.d.ts +2 -4
  27. package/dest/public/avm/opcodes/ec_add.d.ts.map +1 -1
  28. package/dest/public/avm/opcodes/ec_add.js +13 -27
  29. package/dest/public/avm/serialization/bytecode_serialization.js +3 -3
  30. package/dest/public/avm/serialization/instruction_serialization.d.ts +2 -2
  31. package/dest/public/avm/serialization/instruction_serialization.d.ts.map +1 -1
  32. package/dest/public/avm/serialization/instruction_serialization.js +1 -1
  33. package/dest/public/contracts_db_checkpoint.d.ts +2 -2
  34. package/dest/public/contracts_db_checkpoint.d.ts.map +1 -1
  35. package/dest/public/contracts_db_checkpoint.js +1 -1
  36. package/dest/public/fixtures/amm_test.js +2 -2
  37. package/dest/public/fixtures/bulk_test.d.ts +1 -1
  38. package/dest/public/fixtures/bulk_test.d.ts.map +1 -1
  39. package/dest/public/fixtures/bulk_test.js +31 -4
  40. package/dest/public/fixtures/custom_bytecode_tests.d.ts +3 -1
  41. package/dest/public/fixtures/custom_bytecode_tests.d.ts.map +1 -1
  42. package/dest/public/fixtures/custom_bytecode_tests.js +61 -1
  43. package/dest/public/fixtures/opcode_spammer.d.ts +1 -1
  44. package/dest/public/fixtures/opcode_spammer.d.ts.map +1 -1
  45. package/dest/public/fixtures/opcode_spammer.js +8 -16
  46. package/dest/public/fixtures/public_tx_simulation_tester.d.ts +6 -5
  47. package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
  48. package/dest/public/fixtures/public_tx_simulation_tester.js +37 -10
  49. package/dest/public/fixtures/utils.d.ts +2 -2
  50. package/dest/public/fixtures/utils.d.ts.map +1 -1
  51. package/dest/public/fixtures/utils.js +19 -20
  52. package/dest/public/hinting_db_sources.d.ts +6 -5
  53. package/dest/public/hinting_db_sources.d.ts.map +1 -1
  54. package/dest/public/hinting_db_sources.js +11 -7
  55. package/dest/public/public_db_sources.d.ts +6 -3
  56. package/dest/public/public_db_sources.d.ts.map +1 -1
  57. package/dest/public/public_db_sources.js +16 -10
  58. package/dest/public/public_processor/guarded_merkle_tree.d.ts +8 -7
  59. package/dest/public/public_processor/guarded_merkle_tree.d.ts.map +1 -1
  60. package/dest/public/public_processor/guarded_merkle_tree.js +8 -5
  61. package/dest/public/public_processor/public_processor.d.ts +8 -5
  62. package/dest/public/public_processor/public_processor.d.ts.map +1 -1
  63. package/dest/public/public_processor/public_processor.js +107 -72
  64. package/dest/public/public_processor/public_processor_metrics.d.ts +4 -1
  65. package/dest/public/public_processor/public_processor_metrics.d.ts.map +1 -1
  66. package/dest/public/public_processor/public_processor_metrics.js +8 -0
  67. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts +1 -1
  68. package/dest/public/public_tx_simulator/contract_provider_for_cpp.d.ts.map +1 -1
  69. package/dest/public/public_tx_simulator/contract_provider_for_cpp.js +3 -2
  70. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts +1 -1
  71. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.d.ts.map +1 -1
  72. package/dest/public/public_tx_simulator/cpp_public_tx_simulator.js +4 -10
  73. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts +1 -1
  74. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.d.ts.map +1 -1
  75. package/dest/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.js +2 -2
  76. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts +1 -1
  77. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.d.ts.map +1 -1
  78. package/dest/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.js +3 -7
  79. package/dest/public/public_tx_simulator/factories.d.ts +2 -2
  80. package/dest/public/public_tx_simulator/factories.d.ts.map +1 -1
  81. package/dest/public/public_tx_simulator/factories.js +2 -2
  82. package/dest/public/public_tx_simulator/public_tx_context.d.ts +7 -3
  83. package/dest/public/public_tx_simulator/public_tx_context.d.ts.map +1 -1
  84. package/dest/public/public_tx_simulator/public_tx_context.js +8 -10
  85. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts +6 -2
  86. package/dest/public/public_tx_simulator/public_tx_simulator.d.ts.map +1 -1
  87. package/dest/public/public_tx_simulator/public_tx_simulator.js +14 -9
  88. package/dest/public/test_executor_metrics.d.ts +6 -1
  89. package/dest/public/test_executor_metrics.d.ts.map +1 -1
  90. package/dest/public/test_executor_metrics.js +22 -0
  91. package/package.json +16 -16
  92. package/src/private/acvm_wasm.ts +4 -1
  93. package/src/private/circuit_recording/circuit_recorder.ts +2 -2
  94. package/src/public/avm/avm_gas.ts +2 -2
  95. package/src/public/avm/avm_simulator.ts +1 -1
  96. package/src/public/avm/calldata.ts +3 -2
  97. package/src/public/avm/fixtures/account_proof.json +553 -0
  98. package/src/public/avm/fixtures/account_proof_fetcher.ts +166 -0
  99. package/src/public/avm/fixtures/base_avm_simulation_tester.ts +22 -2
  100. package/src/public/avm/fixtures/utils.ts +3 -0
  101. package/src/public/avm/opcodes/accrued_substate.ts +3 -4
  102. package/src/public/avm/opcodes/contract.ts +5 -1
  103. package/src/public/avm/opcodes/ec_add.ts +12 -31
  104. package/src/public/avm/opcodes/external_calls.ts +1 -1
  105. package/src/public/avm/serialization/bytecode_serialization.ts +2 -2
  106. package/src/public/avm/serialization/instruction_serialization.ts +1 -1
  107. package/src/public/contracts_db_checkpoint.ts +1 -1
  108. package/src/public/fixtures/amm_test.ts +2 -2
  109. package/src/public/fixtures/bulk_test.ts +29 -4
  110. package/src/public/fixtures/custom_bytecode_tests.ts +139 -1
  111. package/src/public/fixtures/opcode_spammer.ts +10 -18
  112. package/src/public/fixtures/public_tx_simulation_tester.ts +47 -6
  113. package/src/public/fixtures/utils.ts +26 -22
  114. package/src/public/fuzzing/avm_fuzzer_simulator.ts +1 -1
  115. package/src/public/hinting_db_sources.ts +14 -7
  116. package/src/public/public_db_sources.ts +21 -14
  117. package/src/public/public_processor/guarded_merkle_tree.ts +11 -8
  118. package/src/public/public_processor/public_processor.ts +140 -91
  119. package/src/public/public_processor/public_processor_metrics.ts +12 -0
  120. package/src/public/public_tx_simulator/contract_provider_for_cpp.ts +3 -2
  121. package/src/public/public_tx_simulator/cpp_public_tx_simulator.ts +5 -15
  122. package/src/public/public_tx_simulator/cpp_public_tx_simulator_with_hinted_dbs.ts +2 -2
  123. package/src/public/public_tx_simulator/cpp_vs_ts_public_tx_simulator.ts +3 -10
  124. package/src/public/public_tx_simulator/factories.ts +2 -1
  125. package/src/public/public_tx_simulator/public_tx_context.ts +8 -10
  126. package/src/public/public_tx_simulator/public_tx_simulator.ts +14 -10
  127. package/src/public/test_executor_metrics.ts +24 -0
@@ -3,6 +3,7 @@ import { DateProvider } from '@aztec/foundation/timer';
3
3
  import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
4
4
  import type { ContractDataSource } from '@aztec/stdlib/contract';
5
5
  import type { MerkleTreeWriteOperations, PublicProcessorLimits, PublicProcessorValidator, SequencerConfig } from '@aztec/stdlib/interfaces/server';
6
+ import { type DebugLog, type DebugLogStore } from '@aztec/stdlib/logs';
6
7
  import { type FailedTx, GlobalVariables, NestedProcessReturnValues, type ProcessedTx, Tx } from '@aztec/stdlib/tx';
7
8
  import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
8
9
  import { PublicContractsDB } from '../public_db_sources.js';
@@ -20,10 +21,10 @@ export declare class PublicProcessorFactory {
20
21
  /**
21
22
  * Creates a new instance of a PublicProcessor.
22
23
  * @param globalVariables - The global variables for the block being processed.
23
- * @param skipFeeEnforcement - Allows disabling balance checks for fee estimations.
24
+ * @param contractsDB - Optional pre-populated contracts DB; a fresh one is constructed if omitted.
24
25
  * @returns A new instance of a PublicProcessor.
25
26
  */
26
- create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables, config: PublicSimulatorConfig): PublicProcessor;
27
+ create(merkleTree: MerkleTreeWriteOperations, globalVariables: GlobalVariables, config: PublicSimulatorConfig, contractsDB?: PublicContractsDB): PublicProcessor;
27
28
  protected createPublicTxSimulator(merkleTree: MerkleTreeWriteOperations, contractsDB: PublicContractsDB, globalVariables: GlobalVariables, config?: Partial<PublicTxSimulatorConfig>): PublicTxSimulatorInterface;
28
29
  }
29
30
  /**
@@ -38,8 +39,9 @@ export declare class PublicProcessor implements Traceable {
38
39
  private dateProvider;
39
40
  private log;
40
41
  private opts;
42
+ private debugLogStore;
41
43
  private metrics;
42
- constructor(globalVariables: GlobalVariables, guardedMerkleTree: GuardedMerkleTreeOperations, contractsDB: PublicContractsDB, publicTxSimulator: PublicTxSimulatorInterface, dateProvider: DateProvider, telemetryClient: TelemetryClient | undefined, log: Logger, opts?: Pick<SequencerConfig, 'fakeProcessingDelayPerTxMs' | 'fakeThrowAfterProcessingTxCount'>);
44
+ constructor(globalVariables: GlobalVariables, guardedMerkleTree: GuardedMerkleTreeOperations, contractsDB: PublicContractsDB, publicTxSimulator: PublicTxSimulatorInterface, dateProvider: DateProvider, telemetryClient: TelemetryClient | undefined, log: Logger, opts?: Pick<SequencerConfig, 'fakeProcessingDelayPerTxMs' | 'fakeThrowAfterProcessingTxCount'>, debugLogStore?: DebugLogStore);
43
45
  get tracer(): Tracer;
44
46
  /**
45
47
  * Run each tx through the public circuit and the public kernel circuit if needed.
@@ -48,11 +50,12 @@ export declare class PublicProcessor implements Traceable {
48
50
  * @param validator - Pre-process validator and nullifier cache to use for processing the txs.
49
51
  * @returns The list of processed txs with their circuit simulation outputs.
50
52
  */
51
- process(txs: Iterable<Tx> | AsyncIterable<Tx>, limits?: PublicProcessorLimits, validator?: PublicProcessorValidator): Promise<[ProcessedTx[], FailedTx[], Tx[], NestedProcessReturnValues[], number]>;
53
+ process(txs: Iterable<Tx> | AsyncIterable<Tx>, limits?: PublicProcessorLimits, validator?: PublicProcessorValidator): Promise<[ProcessedTx[], FailedTx[], Tx[], NestedProcessReturnValues[], DebugLog[]]>;
52
54
  private checkWorldStateUnchanged;
53
55
  private processTx;
54
56
  private doTreeInsertionsForPrivateOnlyTx;
55
57
  private processTxWithinDeadline;
58
+ private getProcessingSignal;
56
59
  private performFeePaymentPublicDataWrite;
57
60
  private processPrivateOnlyTx;
58
61
  private processTxWithPublicCalls;
@@ -61,4 +64,4 @@ export declare class PublicProcessor implements Traceable {
61
64
  */
62
65
  private static generateProvingRequest;
63
66
  }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfcHJvY2Vzc29yL3B1YmxpY19wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE9BQU8sRUFBRSxZQUFZLEVBQWtDLE1BQU0seUJBQXlCLENBQUM7QUFJdkYsT0FBTyxFQU1MLHFCQUFxQixFQUN0QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHakUsT0FBTyxLQUFLLEVBQ1YseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsZUFBZSxFQUNoQixNQUFNLGlDQUFpQyxDQUFDO0FBR3pDLE9BQU8sRUFDTCxLQUFLLFFBQVEsRUFDYixlQUFlLEVBQ2YseUJBQXlCLEVBQ3pCLEtBQUssV0FBVyxFQUVoQixFQUFFLEVBR0gsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBRUwsS0FBSyxlQUFlLEVBQ3BCLEtBQUssU0FBUyxFQUNkLEtBQUssTUFBTSxFQUdaLE1BQU0seUJBQXlCLENBQUM7QUFLakMsT0FBTyxFQUFFLGlCQUFpQixFQUFpQixNQUFNLHlCQUF5QixDQUFDO0FBQzNFLE9BQU8sRUFDTCxLQUFLLHVCQUF1QixFQUM1QixLQUFLLDBCQUEwQixFQUVoQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3ZFOztHQUVHO0FBQ0gscUJBQWEsc0JBQXNCO0lBRy9CLE9BQU8sQ0FBQyxrQkFBa0I7SUFDMUIsT0FBTyxDQUFDLFlBQVk7SUFDcEIsU0FBUyxDQUFDLGVBQWUsRUFBRSxlQUFlO0lBSjVDLE9BQU8sQ0FBQyxHQUFHLENBQVM7SUFDcEIsWUFDVSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFDdEMsWUFBWSxHQUFFLFlBQWlDLEVBQzdDLGVBQWUsR0FBRSxlQUFzQyxFQUNqRSxRQUFRLENBQUMsRUFBRSxjQUFjLEVBRzFCO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQ1gsVUFBVSxFQUFFLHlCQUF5QixFQUNyQyxlQUFlLEVBQUUsZUFBZSxFQUNoQyxNQUFNLEVBQUUscUJBQXFCLEdBQzVCLGVBQWUsQ0FnQmpCO0lBRUQsU0FBUyxDQUFDLHVCQUF1QixDQUMvQixVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsZUFBZSxFQUFFLGVBQWUsRUFDaEMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLHVCQUF1QixDQUFDLEdBQ3hDLDBCQUEwQixDQVM1QjtDQUNGO0FBU0Q7OztHQUdHO0FBQ0gscUJBQWEsZUFBZ0IsWUFBVyxTQUFTO0lBSTdDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsZUFBZTtJQUMxQyxPQUFPLENBQUMsaUJBQWlCO0lBQ3pCLFNBQVMsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCO0lBQ3hDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSwwQkFBMEI7SUFDdkQsT0FBTyxDQUFDLFlBQVk7SUFFcEIsT0FBTyxDQUFDLEdBQUc7SUFDWCxPQUFPLENBQUMsSUFBSTtJQVZkLE9BQU8sQ0FBQyxPQUFPLENBQXlCO0lBRXhDLFlBQ1ksZUFBZSxFQUFFLGVBQWUsRUFDbEMsaUJBQWlCLEVBQUUsMkJBQTJCLEVBQzVDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQy9DLFlBQVksRUFBRSxZQUFZLEVBQ2xDLGVBQWUsNkJBQXdDLEVBQy9DLEdBQUcsRUFBRSxNQUFNLEVBQ1gsSUFBSSxHQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsNEJBQTRCLEdBQUcsaUNBQWlDLENBQU0sRUFHM0c7SUFFRCxJQUFJLE1BQU0sSUFBSSxNQUFNLENBRW5CO0lBRUQ7Ozs7OztPQU1HO0lBQ1UsT0FBTyxDQUNsQixHQUFHLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFDckMsTUFBTSxHQUFFLHFCQUEwQixFQUNsQyxTQUFTLEdBQUUsd0JBQTZCLEdBQ3ZDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0E2TWpGO1lBRWEsd0JBQXdCO1lBaUJ4QixTQUFTO1lBMkJULGdDQUFnQztZQTRCaEMsdUJBQXVCO1lBZ0R2QixnQ0FBZ0M7WUEwQmhDLG9CQUFvQjtZQStCcEIsd0JBQXdCO0lBeUN0Qzs7T0FFRztJQUNILE9BQU8sQ0FBQyxNQUFNLENBQUMsc0JBQXNCO0NBU3RDIn0=
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3B1YmxpYy9wdWJsaWNfcHJvY2Vzc29yL3B1YmxpY19wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE9BQU8sRUFBRSxZQUFZLEVBQWtDLE1BQU0seUJBQXlCLENBQUM7QUFJdkYsT0FBTyxFQU1MLHFCQUFxQixFQUN0QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHakUsT0FBTyxLQUFLLEVBQ1YseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsZUFBZSxFQUNoQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxLQUFLLGFBQWEsRUFBcUIsTUFBTSxvQkFBb0IsQ0FBQztBQUcxRixPQUFPLEVBQ0wsS0FBSyxRQUFRLEVBQ2IsZUFBZSxFQUNmLHlCQUF5QixFQUN6QixLQUFLLFdBQVcsRUFFaEIsRUFBRSxFQUdILE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUVMLEtBQUssZUFBZSxFQUNwQixLQUFLLFNBQVMsRUFDZCxLQUFLLE1BQU0sRUFHWixNQUFNLHlCQUF5QixDQUFDO0FBS2pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBaUIsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSywwQkFBMEIsRUFFaEMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUd2RTs7R0FFRztBQUNILHFCQUFhLHNCQUFzQjtJQUcvQixPQUFPLENBQUMsa0JBQWtCO0lBQzFCLE9BQU8sQ0FBQyxZQUFZO0lBQ3BCLFNBQVMsQ0FBQyxlQUFlLEVBQUUsZUFBZTtJQUo1QyxPQUFPLENBQUMsR0FBRyxDQUFTO0lBQ3BCLFlBQ1Usa0JBQWtCLEVBQUUsa0JBQWtCLEVBQ3RDLFlBQVksR0FBRSxZQUFpQyxFQUM3QyxlQUFlLEdBQUUsZUFBc0MsRUFDakUsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUcxQjtJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUNYLFVBQVUsRUFBRSx5QkFBeUIsRUFDckMsZUFBZSxFQUFFLGVBQWUsRUFDaEMsTUFBTSxFQUFFLHFCQUFxQixFQUM3QixXQUFXLEdBQUUsaUJBQTBGLEdBQ3RHLGVBQWUsQ0FhakI7SUFFRCxTQUFTLENBQUMsdUJBQXVCLENBQy9CLFVBQVUsRUFBRSx5QkFBeUIsRUFDckMsV0FBVyxFQUFFLGlCQUFpQixFQUM5QixlQUFlLEVBQUUsZUFBZSxFQUNoQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsdUJBQXVCLENBQUMsR0FDeEMsMEJBQTBCLENBUzVCO0NBQ0Y7QUFvQkQ7OztHQUdHO0FBQ0gscUJBQWEsZUFBZ0IsWUFBVyxTQUFTO0lBRzdDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsZUFBZTtJQUMxQyxPQUFPLENBQUMsaUJBQWlCO0lBQ3pCLFNBQVMsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCO0lBQ3hDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSwwQkFBMEI7SUFDdkQsT0FBTyxDQUFDLFlBQVk7SUFFcEIsT0FBTyxDQUFDLEdBQUc7SUFDWCxPQUFPLENBQUMsSUFBSTtJQUNaLE9BQU8sQ0FBQyxhQUFhO0lBVnZCLE9BQU8sQ0FBQyxPQUFPLENBQXlCO0lBQ3hDLFlBQ1ksZUFBZSxFQUFFLGVBQWUsRUFDbEMsaUJBQWlCLEVBQUUsMkJBQTJCLEVBQzVDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsaUJBQWlCLEVBQUUsMEJBQTBCLEVBQy9DLFlBQVksRUFBRSxZQUFZLEVBQ2xDLGVBQWUsNkJBQXdDLEVBQy9DLEdBQUcsRUFBRSxNQUFNLEVBQ1gsSUFBSSxHQUFFLElBQUksQ0FBQyxlQUFlLEVBQUUsNEJBQTRCLEdBQUcsaUNBQWlDLENBQU0sRUFDbEcsYUFBYSxHQUFFLGFBQXVDLEVBRy9EO0lBRUQsSUFBSSxNQUFNLElBQUksTUFBTSxDQUVuQjtJQUVEOzs7Ozs7T0FNRztJQUNVLE9BQU8sQ0FDbEIsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQ3JDLE1BQU0sR0FBRSxxQkFBMEIsRUFDbEMsU0FBUyxHQUFFLHdCQUE2QixHQUN2QyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSx5QkFBeUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FtT3JGO1lBRWEsd0JBQXdCO1lBaUJ4QixTQUFTO1lBaUNULGdDQUFnQztZQTRCaEMsdUJBQXVCO0lBaUNyQyxPQUFPLENBQUMsbUJBQW1CO1lBMEJiLGdDQUFnQztZQTBCaEMsb0JBQW9CO1lBK0JwQix3QkFBd0I7SUF5Q3RDOztPQUVHO0lBQ0gsT0FBTyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0I7Q0FTdEMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public_processor.d.ts","sourceRoot":"","sources":["../../../src/public/public_processor/public_processor.ts"],"names":[],"mappings":"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"}
@@ -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';
@@ -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,85 @@ _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.`, {
577
- txHash,
578
- sizeInBytes: txSize,
579
- totalSizeInBytes,
580
- maxBlockSize
581
- });
582
- // Need to revert the checkpoint here and don't go any further
583
- await checkpoint.revert();
584
- this.contractsDB.revertCheckpoint();
585
- continue;
586
- }
587
- // If the actual blob fields of this tx would exceed the limit, skip it
588
+ // If the actual blob fields of this tx would exceed the limit, skip it.
588
589
  // Note: maxBlobFields already accounts for block end blob fields and previous blocks in checkpoint.
589
590
  if (maxBlobFields !== undefined && totalBlobFields + txBlobFields > maxBlobFields) {
590
591
  this.log.debug(`Skipping processed tx ${txHash} with ${txBlobFields} blob fields due to max blob fields limit.`, {
591
592
  txHash,
592
593
  txBlobFields,
593
594
  totalBlobFields,
594
- maxBlobFields
595
+ maxBlobFields,
596
+ txProcessingTimeMs
595
597
  });
598
+ silentlySkippedCount += 1;
599
+ totalSilentlySkippedDurationMs += txProcessingTimeMs;
600
+ this.metrics.recordSilentlySkipped(txProcessingTimeMs);
596
601
  // Need to revert the checkpoint here and don't go any further
597
602
  await checkpoint.revert();
598
603
  this.contractsDB.revertCheckpoint();
599
604
  continue;
600
605
  }
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`, {
611
+ txHash,
612
+ txGas: processedTx.gasUsed.totalGas,
613
+ totalBlockGas,
614
+ maxBlockGas
615
+ });
616
+ await checkpoint.revert();
617
+ this.contractsDB.revertCheckpoint();
618
+ break;
619
+ }
601
620
  // FIXME(fcarreiro): it's ugly to have to notify the validator of nullifiers.
602
621
  // I'd rather pass the validators the processedTx as well and let them deal with it.
603
622
  nullifierCache?.addNullifiers(processedTx.txEffect.nullifiers.map((n)=>n.toBuffer()));
604
623
  result.push(processedTx);
605
624
  usedTxs.push(tx);
606
625
  returns = returns.concat(returnValues);
626
+ debugLogs.push(...txDebugLogs);
627
+ this.debugLogStore.storeLogs(processedTx.hash.toString(), txDebugLogs);
607
628
  totalPublicGas = totalPublicGas.add(processedTx.gasUsed.publicGas);
608
629
  totalBlockGas = totalBlockGas.add(processedTx.gasUsed.totalGas);
609
630
  totalSizeInBytes += txSize;
610
631
  totalBlobFields += txBlobFields;
632
+ // Commit the tx-level contracts checkpoint on success
633
+ this.contractsDB.commitCheckpoint();
611
634
  } 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.
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.
621
640
  await this.publicTxSimulator.cancel?.();
622
641
  // Now stop the guarded fork to prevent any further TS-side access to the world state.
623
642
  await this.guardedMerkleTree.stop();
624
643
  // We now know there can't be any further access to world state. The fork is in a state where there is:
625
644
  // 1. At least one outstanding checkpoint that has not been committed (the one created before we processed the tx).
626
645
  // 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();
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();
634
650
  // Revert any contracts added to the DB for the tx.
635
651
  this.contractsDB.revertCheckpoint();
636
652
  // Ensure we're at the same state as when we started processing this tx.
637
653
  await this.checkWorldStateUnchanged(startStateReference, txHash, err);
638
654
  break;
639
655
  }
640
- // Roll back state to start of TX before proceeding to next TX
641
- await checkpoint.revert();
642
- 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();
643
659
  this.contractsDB.revertCheckpoint();
644
660
  const errorMessage = err instanceof Error || err instanceof AssertionError ? err.message : 'Unknown error';
645
661
  this.log.warn(`Failed to process tx ${txHash.toString()}: ${errorMessage} ${err?.stack}`);
@@ -653,25 +669,30 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
653
669
  } finally{
654
670
  // Base case is we always commit the checkpoint. Using the ForkCheckpoint means this has no effect if the tx was previously reverted
655
671
  await checkpoint.commit();
656
- this.contractsDB.commitCheckpointOkIfNone();
657
672
  }
658
673
  }
659
674
  const duration = timer.s();
660
675
  const rate = duration > 0 ? totalPublicGas.l2Gas / duration : 0;
661
676
  this.metrics.recordAllTxs(totalPublicGas, rate);
662
- 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,
663
682
  duration,
664
683
  rate,
665
684
  totalPublicGas,
666
685
  totalBlockGas,
667
- totalSizeInBytes
686
+ totalSizeInBytes,
687
+ silentlySkippedCount,
688
+ silentlySkippedDurationMs
668
689
  });
669
690
  return [
670
691
  result,
671
692
  failed,
672
693
  usedTxs,
673
694
  returns,
674
- totalBlobFields
695
+ debugLogs
675
696
  ];
676
697
  }
677
698
  async checkWorldStateUnchanged(startStateReference, txHash, cause) {
@@ -687,8 +708,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
687
708
  });
688
709
  }
689
710
  }
690
- async processTx(tx, deadline) {
691
- 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));
692
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`, {
693
714
  txHash: processedTx.hash,
694
715
  txFee: processedTx.txEffect.transactionFee.toBigInt(),
@@ -706,7 +727,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
706
727
  });
707
728
  return [
708
729
  processedTx,
709
- returnValues ?? []
730
+ returnValues ?? [],
731
+ debugLogs
710
732
  ];
711
733
  }
712
734
  async doTreeInsertionsForPrivateOnlyTx(processedTx) {
@@ -728,7 +750,7 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
728
750
  const treeInsertionEnd = process.hrtime.bigint();
729
751
  this.metrics.recordTreeInsertions(Number(treeInsertionEnd - treeInsertionStart) / 1_000);
730
752
  }
731
- /** 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) {
732
754
  const innerProcessFn = tx.hasPublicCalls() ? ()=>this.processTxWithPublicCalls(tx) : ()=>this.processPrivateOnlyTx(tx);
733
755
  // Fake a delay per tx if instructed (used for tests)
734
756
  const fakeDelayPerTxMs = this.opts.fakeProcessingDelayPerTxMs;
@@ -738,20 +760,31 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
738
760
  await sleep(fakeDelayPerTxMs);
739
761
  return result;
740
762
  } : innerProcessFn;
741
- if (!deadline) {
763
+ const processingSignal = this.getProcessingSignal(tx, deadline, signal);
764
+ if (!processingSignal) {
742
765
  return await processFn();
743
766
  }
744
- 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
+ }
745
773
  const timeout = +deadline - this.dateProvider.now();
746
774
  if (timeout <= 0) {
747
775
  throw new PublicProcessorTimeoutError();
748
776
  }
777
+ const txHash = tx.getTxHash();
749
778
  this.log.debug(`Processing tx ${txHash.toString()} within ${timeout}ms`, {
750
779
  deadline: deadline.toISOString(),
751
780
  now: new Date(this.dateProvider.now()).toISOString(),
752
781
  txHash
753
782
  });
754
- return await executeTimeout(()=>processFn(), timeout, ()=>new PublicProcessorTimeoutError());
783
+ const timeoutSignal = AbortSignal.timeout(timeout);
784
+ return signal ? AbortSignal.any([
785
+ signal,
786
+ timeoutSignal
787
+ ]) : timeoutSignal;
755
788
  }
756
789
  /**
757
790
  * Creates the public data write for paying the tx fee.
@@ -780,10 +813,11 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
780
813
  this.metrics.recordClassPublication(...tx.getContractClassLogs().filter((log)=>ContractClassPublishedEvent.isContractClassPublishedEvent(log)).map((log)=>ContractClassPublishedEvent.fromLog(log)));
781
814
  // Fee payment insertion has already been done. Do the rest.
782
815
  await this.doTreeInsertionsForPrivateOnlyTx(processedTx);
783
- await this.contractsDB.addNewContracts(tx);
816
+ this.contractsDB.addNewContracts(tx);
784
817
  return [
785
818
  processedTx,
786
- undefined
819
+ undefined,
820
+ []
787
821
  ];
788
822
  }
789
823
  async processTxWithPublicCalls(tx) {
@@ -805,7 +839,8 @@ _dec = trackSpan('PublicProcessor.processTx', (tx)=>({
805
839
  const processedTx = makeProcessedTxFromTxWithPublicCalls(tx, this.globalVariables, avmProvingRequest, publicTxEffect, gasUsed, revertCode, revertReason);
806
840
  return [
807
841
  processedTx,
808
- appLogicReturnValues
842
+ appLogicReturnValues,
843
+ result.logs ?? []
809
844
  ];
810
845
  }
811
846
  /**
@@ -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"}
@@ -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})`);
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BwX3B1YmxpY190eF9zaW11bGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3R4X3NpbXVsYXRvci9jcHBfcHVibGljX3R4X3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFJdkYsT0FBTyxFQUdMLEtBQUsscUJBQXFCLEVBQzFCLGNBQWMsRUFFZixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBRSxLQUFLLE1BQU0sRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUdoRyxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pGLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQ1Ysa0NBQWtDLEVBQ2xDLDBCQUEwQixFQUMzQixNQUFNLG9DQUFvQyxDQUFDO0FBRTVDOzs7O0dBSUc7QUFDSCxxQkFBYSxvQkFBcUIsU0FBUSxpQkFBa0IsWUFBVywwQkFBMEI7SUFDL0YsVUFBbUIsR0FBRyxFQUFFLE1BQU0sQ0FBQztJQUMvQiwyREFBMkQ7SUFDM0QsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQW9CO0lBQzlDLGtGQUFrRjtJQUNsRixPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBa0I7SUFFNUMsWUFDRSxVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsZUFBZSxFQUFFLGVBQWUsRUFDaEMsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQ3ZDLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFJMUI7SUFFRDs7Ozs7T0FLRztJQUNtQixRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLENBd0U5RDtJQUVEOzs7Ozs7Ozs7T0FTRztJQUNVLE1BQU0sQ0FBQyxhQUFhLEdBQUUsTUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FlOUQ7Q0FDRjtBQUVELHFCQUFhLDRCQUE2QixTQUFRLG9CQUFxQixZQUFXLGtDQUFrQztJQUtoSCxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSx3QkFBd0I7SUFKdEQsWUFDRSxVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsZUFBZSxFQUFFLGVBQWUsRUFDYixPQUFPLEVBQUUsd0JBQXdCLEVBQ3BELE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUN2QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBRzFCO0lBRXFCLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sR0FBRSxNQUFzQixHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FTL0Y7Q0FDRjtBQUVEOztHQUVHO0FBQ0gscUJBQWEsNkJBQThCLFNBQVEsNEJBQTRCO0lBRTdFLFNBQWdCLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFFL0IsWUFDRSxVQUFVLEVBQUUseUJBQXlCLEVBQ3JDLFdBQVcsRUFBRSxpQkFBaUIsRUFDOUIsZUFBZSxFQUFFLGVBQWUsRUFDaEMsZUFBZSxHQUFFLGVBQXNDLEVBQ3ZELE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUN2QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBSzFCO0NBQ0YifQ==
@@ -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;AAC5D,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAsB,MAAM,yBAAyB,CAAC;AAGhG,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,CAwE9D;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"}