@aztec/simulator 0.63.1 → 0.65.0

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 (123) hide show
  1. package/dest/avm/avm_contract_call_result.d.ts +18 -1
  2. package/dest/avm/avm_contract_call_result.d.ts.map +1 -1
  3. package/dest/avm/avm_contract_call_result.js +30 -3
  4. package/dest/avm/avm_memory_types.d.ts.map +1 -1
  5. package/dest/avm/avm_memory_types.js +7 -11
  6. package/dest/avm/avm_simulator.d.ts +6 -1
  7. package/dest/avm/avm_simulator.d.ts.map +1 -1
  8. package/dest/avm/avm_simulator.js +29 -8
  9. package/dest/avm/avm_tree.d.ts +4 -18
  10. package/dest/avm/avm_tree.d.ts.map +1 -1
  11. package/dest/avm/avm_tree.js +72 -53
  12. package/dest/avm/errors.d.ts +7 -0
  13. package/dest/avm/errors.d.ts.map +1 -1
  14. package/dest/avm/errors.js +11 -1
  15. package/dest/avm/fixtures/index.d.ts +2 -2
  16. package/dest/avm/fixtures/index.d.ts.map +1 -1
  17. package/dest/avm/fixtures/index.js +1 -1
  18. package/dest/avm/index.d.ts +1 -0
  19. package/dest/avm/index.d.ts.map +1 -1
  20. package/dest/avm/index.js +2 -1
  21. package/dest/avm/journal/journal.d.ts +14 -13
  22. package/dest/avm/journal/journal.d.ts.map +1 -1
  23. package/dest/avm/journal/journal.js +81 -68
  24. package/dest/avm/journal/public_storage.d.ts +0 -1
  25. package/dest/avm/journal/public_storage.d.ts.map +1 -1
  26. package/dest/avm/journal/public_storage.js +6 -6
  27. package/dest/avm/opcodes/accrued_substate.js +2 -2
  28. package/dest/avm/opcodes/addressing_mode.d.ts.map +1 -1
  29. package/dest/avm/opcodes/addressing_mode.js +8 -2
  30. package/dest/avm/opcodes/contract.d.ts +2 -2
  31. package/dest/avm/opcodes/contract.d.ts.map +1 -1
  32. package/dest/avm/opcodes/contract.js +4 -4
  33. package/dest/avm/opcodes/control_flow.d.ts +2 -2
  34. package/dest/avm/opcodes/control_flow.d.ts.map +1 -1
  35. package/dest/avm/opcodes/control_flow.js +4 -4
  36. package/dest/avm/opcodes/environment_getters.d.ts +2 -2
  37. package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
  38. package/dest/avm/opcodes/environment_getters.js +4 -4
  39. package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
  40. package/dest/avm/opcodes/external_calls.js +2 -4
  41. package/dest/avm/opcodes/memory.d.ts +4 -4
  42. package/dest/avm/opcodes/memory.d.ts.map +1 -1
  43. package/dest/avm/opcodes/memory.js +12 -12
  44. package/dest/avm/opcodes/misc.d.ts +2 -2
  45. package/dest/avm/opcodes/misc.d.ts.map +1 -1
  46. package/dest/avm/opcodes/misc.js +4 -4
  47. package/dest/index.d.ts +0 -1
  48. package/dest/index.d.ts.map +1 -1
  49. package/dest/index.js +1 -2
  50. package/dest/public/dual_side_effect_trace.d.ts +3 -9
  51. package/dest/public/dual_side_effect_trace.d.ts.map +1 -1
  52. package/dest/public/dual_side_effect_trace.js +5 -11
  53. package/dest/public/enqueued_call_side_effect_trace.d.ts +4 -10
  54. package/dest/public/enqueued_call_side_effect_trace.d.ts.map +1 -1
  55. package/dest/public/enqueued_call_side_effect_trace.js +6 -15
  56. package/dest/public/executor_metrics.d.ts +1 -2
  57. package/dest/public/executor_metrics.d.ts.map +1 -1
  58. package/dest/public/executor_metrics.js +2 -8
  59. package/dest/public/fixtures/index.d.ts +14 -0
  60. package/dest/public/fixtures/index.d.ts.map +1 -0
  61. package/dest/public/fixtures/index.js +101 -0
  62. package/dest/public/index.d.ts +1 -2
  63. package/dest/public/index.d.ts.map +1 -1
  64. package/dest/public/index.js +1 -2
  65. package/dest/public/public_processor.d.ts +0 -2
  66. package/dest/public/public_processor.d.ts.map +1 -1
  67. package/dest/public/public_processor.js +5 -12
  68. package/dest/public/public_tx_context.d.ts +6 -4
  69. package/dest/public/public_tx_context.d.ts.map +1 -1
  70. package/dest/public/public_tx_context.js +11 -7
  71. package/dest/public/public_tx_simulator.d.ts +56 -5
  72. package/dest/public/public_tx_simulator.d.ts.map +1 -1
  73. package/dest/public/public_tx_simulator.js +106 -26
  74. package/dest/public/side_effect_trace.d.ts +4 -10
  75. package/dest/public/side_effect_trace.d.ts.map +1 -1
  76. package/dest/public/side_effect_trace.js +6 -15
  77. package/dest/public/side_effect_trace_interface.d.ts +3 -9
  78. package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
  79. package/dest/public/transitional_adapters.d.ts +1 -2
  80. package/dest/public/transitional_adapters.d.ts.map +1 -1
  81. package/dest/public/transitional_adapters.js +8 -10
  82. package/package.json +10 -10
  83. package/src/avm/avm_contract_call_result.ts +39 -2
  84. package/src/avm/avm_memory_types.ts +6 -10
  85. package/src/avm/avm_simulator.ts +58 -8
  86. package/src/avm/avm_tree.ts +89 -64
  87. package/src/avm/errors.ts +11 -0
  88. package/src/avm/fixtures/index.ts +4 -3
  89. package/src/avm/index.ts +1 -0
  90. package/src/avm/journal/journal.ts +118 -126
  91. package/src/avm/journal/public_storage.ts +5 -6
  92. package/src/avm/opcodes/accrued_substate.ts +1 -1
  93. package/src/avm/opcodes/addressing_mode.ts +7 -2
  94. package/src/avm/opcodes/contract.ts +2 -2
  95. package/src/avm/opcodes/control_flow.ts +2 -2
  96. package/src/avm/opcodes/environment_getters.ts +2 -2
  97. package/src/avm/opcodes/external_calls.ts +1 -3
  98. package/src/avm/opcodes/memory.ts +9 -9
  99. package/src/avm/opcodes/misc.ts +2 -2
  100. package/src/index.ts +0 -1
  101. package/src/public/dual_side_effect_trace.ts +4 -13
  102. package/src/public/enqueued_call_side_effect_trace.ts +14 -17
  103. package/src/public/executor_metrics.ts +1 -9
  104. package/src/public/fixtures/index.ts +159 -0
  105. package/src/public/index.ts +1 -5
  106. package/src/public/public_processor.ts +5 -27
  107. package/src/public/public_tx_context.ts +13 -8
  108. package/src/public/public_tx_simulator.ts +182 -50
  109. package/src/public/side_effect_trace.ts +9 -19
  110. package/src/public/side_effect_trace_interface.ts +3 -9
  111. package/src/public/transitional_adapters.ts +12 -12
  112. package/dest/mocks/fixtures.d.ts +0 -28
  113. package/dest/mocks/fixtures.d.ts.map +0 -1
  114. package/dest/mocks/fixtures.js +0 -48
  115. package/dest/mocks/index.d.ts +0 -2
  116. package/dest/mocks/index.d.ts.map +0 -1
  117. package/dest/mocks/index.js +0 -2
  118. package/dest/public/executor.d.ts +0 -47
  119. package/dest/public/executor.d.ts.map +0 -1
  120. package/dest/public/executor.js +0 -90
  121. package/src/mocks/fixtures.ts +0 -72
  122. package/src/mocks/index.ts +0 -1
  123. package/src/public/executor.ts +0 -154
@@ -1,12 +1,11 @@
1
1
  import { __esDecorate, __runInitializers } from "tslib";
2
2
  import { MerkleTreeId, NestedProcessReturnValues, Tx, TxExecutionPhase, makeProcessedTxFromPrivateOnlyTx, makeProcessedTxFromTxWithPublicCalls, } from '@aztec/circuit-types';
3
- import { ContractClassRegisteredEvent, Fr, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, NULLIFIER_SUBTREE_HEIGHT, PUBLIC_DATA_SUBTREE_HEIGHT, PublicDataWrite, } from '@aztec/circuits.js';
3
+ import { ContractClassRegisteredEvent, Fr, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NULLIFIER_SUBTREE_HEIGHT, PublicDataWrite, } from '@aztec/circuits.js';
4
4
  import { padArrayEnd } from '@aztec/foundation/collection';
5
5
  import { createDebugLogger } from '@aztec/foundation/log';
6
6
  import { Timer } from '@aztec/foundation/timer';
7
7
  import { ProtocolContractAddress } from '@aztec/protocol-contracts';
8
8
  import { Attributes, trackSpan } from '@aztec/telemetry-client';
9
- import { PublicExecutor } from './executor.js';
10
9
  import { computeFeePayerBalanceLeafSlot, computeFeePayerBalanceStorageSlot } from './fee_payment.js';
11
10
  import { WorldStateDB } from './public_db_sources.js';
12
11
  import { PublicProcessorMetrics } from './public_processor_metrics.js';
@@ -26,11 +25,10 @@ export class PublicProcessorFactory {
26
25
  * @returns A new instance of a PublicProcessor.
27
26
  */
28
27
  create(merkleTree, maybeHistoricalHeader, globalVariables) {
29
- const { telemetryClient } = this;
30
28
  const historicalHeader = maybeHistoricalHeader ?? merkleTree.getInitialHeader();
31
29
  const worldStateDB = new WorldStateDB(merkleTree, this.contractDataSource);
32
- const publicExecutor = new PublicExecutor(worldStateDB, telemetryClient);
33
- return PublicProcessor.create(merkleTree, publicExecutor, globalVariables, historicalHeader, worldStateDB, this.telemetryClient);
30
+ const publicTxSimulator = new PublicTxSimulator(merkleTree, worldStateDB, this.telemetryClient, globalVariables);
31
+ return new PublicProcessor(merkleTree, globalVariables, historicalHeader, worldStateDB, publicTxSimulator, this.telemetryClient);
34
32
  }
35
33
  }
36
34
  /**
@@ -51,10 +49,6 @@ let PublicProcessor = (() => {
51
49
  this.log = log;
52
50
  this.metrics = new PublicProcessorMetrics(telemetryClient, 'PublicProcessor');
53
51
  }
54
- static create(db, publicExecutor, globalVariables, historicalHeader, worldStateDB, telemetryClient) {
55
- const publicTxSimulator = PublicTxSimulator.create(db, publicExecutor, globalVariables, worldStateDB);
56
- return new _a(db, globalVariables, historicalHeader, worldStateDB, publicTxSimulator, telemetryClient);
57
- }
58
52
  get tracer() {
59
53
  return this.metrics.tracer;
60
54
  }
@@ -122,8 +116,7 @@ let PublicProcessor = (() => {
122
116
  this.log.warn(`Detected duplicate nullifier after public processing for: ${processedTx.hash}.`);
123
117
  }
124
118
  }
125
- const allPublicDataWrites = padArrayEnd(processedTx.txEffect.publicDataWrites, PublicDataWrite.empty(), MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
126
- await this.db.batchInsert(MerkleTreeId.PUBLIC_DATA_TREE, allPublicDataWrites.map(x => x.toBuffer()), PUBLIC_DATA_SUBTREE_HEIGHT);
119
+ await this.db.batchInsert(MerkleTreeId.PUBLIC_DATA_TREE, processedTx.txEffect.publicDataWrites.map(x => x.toBuffer()), 0);
127
120
  result.push(processedTx);
128
121
  returns = returns.concat(returnValues ?? []);
129
122
  }
@@ -208,4 +201,4 @@ let PublicProcessor = (() => {
208
201
  _a;
209
202
  })();
210
203
  export { PublicProcessor };
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFlBQVksRUFFWix5QkFBeUIsRUFHekIsRUFBRSxFQUNGLGdCQUFnQixFQUVoQixnQ0FBZ0MsRUFDaEMsb0NBQW9DLEdBQ3JDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUVMLDRCQUE0QixFQUU1QixFQUFFLEVBR0Ysc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQiw0Q0FBNEMsRUFDNUMsd0JBQXdCLEVBQ3hCLDBCQUEwQixFQUMxQixlQUFlLEdBQ2hCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFxQyxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU3RDs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFBb0Isa0JBQXNDLEVBQVUsZUFBZ0M7UUFBaEYs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
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFlBQVksRUFFWix5QkFBeUIsRUFHekIsRUFBRSxFQUNGLGdCQUFnQixFQUVoQixnQ0FBZ0MsRUFDaEMsb0NBQW9DLEdBQ3JDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUVMLDRCQUE0QixFQUU1QixFQUFFLEVBR0Ysc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsZUFBZSxHQUNoQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFVBQVUsRUFBcUMsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFbkcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLGlDQUFpQyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTdEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUFvQixrQkFBc0MsRUFBVSxlQUFnQztRQUFoRix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQWlCO0lBQUcsQ0FBQztJQUV4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
@@ -1,8 +1,8 @@
1
1
  import { type AvmProvingRequest, type MerkleTreeReadOperations, type PublicExecutionRequest, type SimulationError, type Tx, TxExecutionPhase, TxHash } from '@aztec/circuit-types';
2
2
  import { Fr, Gas, type GasSettings, type GlobalVariables, type Header, type PrivateToPublicAccumulatedData, type PublicCallRequest, RevertCode, type StateReference } from '@aztec/circuits.js';
3
+ import { type AvmFinalizedCallResult } from '../avm/avm_contract_call_result.js';
3
4
  import { AvmPersistableStateManager } from '../avm/index.js';
4
5
  import { PublicEnqueuedCallSideEffectTrace } from './enqueued_call_side_effect_trace.js';
5
- import { type EnqueuedPublicCallExecutionResult } from './execution.js';
6
6
  import { type WorldStateDB } from './public_db_sources.js';
7
7
  /**
8
8
  * The transaction-level context for public execution.
@@ -23,6 +23,7 @@ export declare class PublicTxContext {
23
23
  private readonly nonRevertibleAccumulatedDataFromPrivate;
24
24
  private readonly revertibleAccumulatedDataFromPrivate;
25
25
  trace: PublicEnqueuedCallSideEffectTrace;
26
+ private doMerkleOperations;
26
27
  private log;
27
28
  private gasUsed;
28
29
  teardownGasUsed: Gas;
@@ -31,8 +32,9 @@ export declare class PublicTxContext {
31
32
  revertReason: SimulationError | undefined;
32
33
  avmProvingRequest: AvmProvingRequest | undefined;
33
34
  constructor(state: PhaseStateManager, globalVariables: GlobalVariables, historicalHeader: Header, // FIXME(dbanks12): remove
34
- startStateReference: StateReference, startGasUsed: Gas, gasSettings: GasSettings, setupCallRequests: PublicCallRequest[], appLogicCallRequests: PublicCallRequest[], teardownCallRequests: PublicCallRequest[], setupExecutionRequests: PublicExecutionRequest[], appLogicExecutionRequests: PublicExecutionRequest[], teardownExecutionRequests: PublicExecutionRequest[], nonRevertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData, revertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData, trace: PublicEnqueuedCallSideEffectTrace);
35
- static create(db: MerkleTreeReadOperations, worldStateDB: WorldStateDB, tx: Tx, globalVariables: GlobalVariables): Promise<PublicTxContext>;
35
+ startStateReference: StateReference, startGasUsed: Gas, gasSettings: GasSettings, setupCallRequests: PublicCallRequest[], appLogicCallRequests: PublicCallRequest[], teardownCallRequests: PublicCallRequest[], setupExecutionRequests: PublicExecutionRequest[], appLogicExecutionRequests: PublicExecutionRequest[], teardownExecutionRequests: PublicExecutionRequest[], nonRevertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData, revertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData, trace: PublicEnqueuedCallSideEffectTrace, // FIXME(dbanks12): should be private
36
+ doMerkleOperations: boolean);
37
+ static create(db: MerkleTreeReadOperations, worldStateDB: WorldStateDB, tx: Tx, globalVariables: GlobalVariables, doMerkleOperations: boolean): Promise<PublicTxContext>;
36
38
  /**
37
39
  * Signal that the entire transaction execution is done.
38
40
  * All phases have been processed.
@@ -104,7 +106,7 @@ export declare class PublicTxContext {
104
106
  * Generate the proving request for the AVM circuit.
105
107
  */
106
108
  generateProvingRequest(endStateReference: StateReference): AvmProvingRequest;
107
- updateProvingRequest(real: boolean, phase: TxExecutionPhase, worldStateDB: WorldStateDB, stateManager: AvmPersistableStateManager, executionRequest: PublicExecutionRequest, result: EnqueuedPublicCallExecutionResult, allocatedGas: Gas): Promise<void>;
109
+ updateProvingRequest(real: boolean, phase: TxExecutionPhase, fnName: string, stateManager: AvmPersistableStateManager, executionRequest: PublicExecutionRequest, result: AvmFinalizedCallResult, allocatedGas: Gas): void;
108
110
  }
109
111
  /**
110
112
  * Thin wrapper around the state manager to handle forking and merging for phases.
@@ -1 +1 @@
1
- {"version":3,"file":"public_tx_context.d.ts","sourceRoot":"","sources":["../../src/public/public_tx_context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"public_tx_context.d.ts","sourceRoot":"","sources":["../../src/public/public_tx_context.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,8 @@ import { getCallRequestsByPhase, getExecutionRequestsByPhase } from './utils.js'
14
14
  */
15
15
  export class PublicTxContext {
16
16
  constructor(state, globalVariables, historicalHeader, // FIXME(dbanks12): remove
17
- startStateReference, startGasUsed, gasSettings, setupCallRequests, appLogicCallRequests, teardownCallRequests, setupExecutionRequests, appLogicExecutionRequests, teardownExecutionRequests, nonRevertibleAccumulatedDataFromPrivate, revertibleAccumulatedDataFromPrivate, trace) {
17
+ startStateReference, startGasUsed, gasSettings, setupCallRequests, appLogicCallRequests, teardownCallRequests, setupExecutionRequests, appLogicExecutionRequests, teardownExecutionRequests, nonRevertibleAccumulatedDataFromPrivate, revertibleAccumulatedDataFromPrivate, trace, // FIXME(dbanks12): should be private
18
+ doMerkleOperations) {
18
19
  this.state = state;
19
20
  this.globalVariables = globalVariables;
20
21
  this.historicalHeader = historicalHeader;
@@ -30,6 +31,7 @@ export class PublicTxContext {
30
31
  this.nonRevertibleAccumulatedDataFromPrivate = nonRevertibleAccumulatedDataFromPrivate;
31
32
  this.revertibleAccumulatedDataFromPrivate = revertibleAccumulatedDataFromPrivate;
32
33
  this.trace = trace;
34
+ this.doMerkleOperations = doMerkleOperations;
33
35
  /* Gas actually used during teardown (different from limit) */
34
36
  this.teardownGasUsed = Gas.empty();
35
37
  /* Entire transaction execution is done. */
@@ -39,7 +41,7 @@ export class PublicTxContext {
39
41
  this.log = createDebugLogger(`aztec:public_tx_context`);
40
42
  this.gasUsed = startGasUsed;
41
43
  }
42
- static async create(db, worldStateDB, tx, globalVariables) {
44
+ static async create(db, worldStateDB, tx, globalVariables, doMerkleOperations) {
43
45
  const nonRevertibleAccumulatedDataFromPrivate = tx.data.forPublic.nonRevertibleAccumulatedData;
44
46
  const revertibleAccumulatedDataFromPrivate = tx.data.forPublic.revertibleAccumulatedData;
45
47
  const nonRevertibleNullifiersFromPrivate = nonRevertibleAccumulatedDataFromPrivate.nullifiers.filter(n => !n.isEmpty());
@@ -57,8 +59,8 @@ export class PublicTxContext {
57
59
  /*startSideEffectCounter=*/ 0, previousAccumulatedDataArrayLengths);
58
60
  const trace = new DualSideEffectTrace(innerCallTrace, enqueuedCallTrace);
59
61
  // Transaction level state manager that will be forked for revertible phases.
60
- const txStateManager = AvmPersistableStateManager.newWithPendingSiloedNullifiers(worldStateDB, trace, nonRevertibleNullifiersFromPrivate);
61
- return new PublicTxContext(new PhaseStateManager(txStateManager), globalVariables, tx.data.constants.historicalHeader, await db.getStateReference(), tx.data.gasUsed, tx.data.constants.txContext.gasSettings, getCallRequestsByPhase(tx, TxExecutionPhase.SETUP), getCallRequestsByPhase(tx, TxExecutionPhase.APP_LOGIC), getCallRequestsByPhase(tx, TxExecutionPhase.TEARDOWN), getExecutionRequestsByPhase(tx, TxExecutionPhase.SETUP), getExecutionRequestsByPhase(tx, TxExecutionPhase.APP_LOGIC), getExecutionRequestsByPhase(tx, TxExecutionPhase.TEARDOWN), tx.data.forPublic.nonRevertibleAccumulatedData, tx.data.forPublic.revertibleAccumulatedData, enqueuedCallTrace);
62
+ const txStateManager = await AvmPersistableStateManager.newWithPendingSiloedNullifiers(worldStateDB, trace, nonRevertibleNullifiersFromPrivate, doMerkleOperations);
63
+ return new PublicTxContext(new PhaseStateManager(txStateManager), globalVariables, tx.data.constants.historicalHeader, await db.getStateReference(), tx.data.gasUsed, tx.data.constants.txContext.gasSettings, getCallRequestsByPhase(tx, TxExecutionPhase.SETUP), getCallRequestsByPhase(tx, TxExecutionPhase.APP_LOGIC), getCallRequestsByPhase(tx, TxExecutionPhase.TEARDOWN), getExecutionRequestsByPhase(tx, TxExecutionPhase.SETUP), getExecutionRequestsByPhase(tx, TxExecutionPhase.APP_LOGIC), getExecutionRequestsByPhase(tx, TxExecutionPhase.TEARDOWN), tx.data.forPublic.nonRevertibleAccumulatedData, tx.data.forPublic.revertibleAccumulatedData, enqueuedCallTrace, doMerkleOperations);
62
64
  }
63
65
  /**
64
66
  * Signal that the entire transaction execution is done.
@@ -245,11 +247,13 @@ export class PublicTxContext {
245
247
  return this.avmProvingRequest;
246
248
  }
247
249
  // TODO(dbanks12): remove once AVM proves entire public tx
248
- async updateProvingRequest(real, phase, worldStateDB, stateManager, executionRequest, result, allocatedGas) {
250
+ updateProvingRequest(real, phase, fnName, stateManager, executionRequest, result, allocatedGas) {
249
251
  if (this.avmProvingRequest === undefined) {
250
252
  // Propagate the very first avmProvingRequest of the tx for now.
251
253
  // Eventually this will be the proof for the entire public portion of the transaction.
252
- this.avmProvingRequest = await generateAvmProvingRequest(real, worldStateDB, stateManager, this.historicalHeader, this.globalVariables, executionRequest, result, allocatedGas, this.getTransactionFee(phase));
254
+ this.avmProvingRequest = generateAvmProvingRequest(real, fnName, stateManager, this.historicalHeader, this.globalVariables, executionRequest,
255
+ // TODO(dbanks12): do we need this return type unless we are doing an isolated call?
256
+ stateManager.trace.toPublicEnqueuedCallExecutionResult(result), allocatedGas, this.getTransactionFee(phase));
253
257
  }
254
258
  }
255
259
  }
@@ -290,4 +294,4 @@ class PhaseStateManager {
290
294
  this.currentlyActiveStateManager = undefined;
291
295
  }
292
296
  }
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X2NvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL3B1YmxpY190eF9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFNTCxnQkFBZ0IsRUFDaEIsTUFBTSxHQUNQLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUVMLEVBQUUsRUFDRixHQUFHLEVBTUgsVUFBVSxFQUVWLHFCQUFxQixHQUN0QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR2pILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRjs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBaUIxQixZQUNrQixLQUF3QixFQUN2QixlQUFnQyxFQUNoQyxnQkFBd0IsRUFBRSwwQkFBMEI7SUFDcEQsbUJBQW1DLEVBQ25DLFlBQWlCLEVBQ2pCLFdBQXdCLEVBQ3hCLGlCQUFzQyxFQUN0QyxvQkFBeUMsRUFDekMsb0JBQXlDLEVBQ3pDLHNCQUFnRCxFQUNoRCx5QkFBbUQsRUFD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
297
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X2NvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL3B1YmxpY190eF9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFNTCxnQkFBZ0IsRUFDaEIsTUFBTSxHQUNQLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUVMLEVBQUUsRUFDRixHQUFHLEVBTUgsVUFBVSxFQUVWLHFCQUFxQixHQUN0QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRy9CLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRWpILE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRjs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBaUIxQixZQUNrQixLQUF3QixFQUN2QixlQUFnQyxFQUNoQyxnQkFBd0IsRUFBRSwwQkFBMEI7SUFDcEQsbUJBQW1DLEVBQ25DLFlBQWlCLEVBQ2pCLFdBQXdCLEVBQ3hCLGlCQUFzQyxFQUN0QyxvQkFBeUMsRUFDekMsb0JBQXlDLEVBQ3pDLHNCQUFnRCxFQUNoRCx5QkFBbUQsRUFD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
@@ -1,6 +1,7 @@
1
1
  import { type AvmProvingRequest, type GasUsed, type MerkleTreeReadOperations, NestedProcessReturnValues, type SimulationError, type Tx, TxExecutionPhase } from '@aztec/circuit-types';
2
2
  import { type GlobalVariables, type RevertCode } from '@aztec/circuits.js';
3
- import { type PublicExecutor } from './executor.js';
3
+ import { type TelemetryClient } from '@aztec/telemetry-client';
4
+ import { ExecutorMetrics } from './executor_metrics.js';
4
5
  import { type WorldStateDB } from './public_db_sources.js';
5
6
  export type ProcessedPhase = {
6
7
  phase: TxExecutionPhase;
@@ -20,17 +21,67 @@ export type PublicTxResult = {
20
21
  };
21
22
  export declare class PublicTxSimulator {
22
23
  private db;
23
- private globalVariables;
24
24
  private worldStateDB;
25
- private publicExecutor;
25
+ private globalVariables;
26
26
  private realAvmProvingRequests;
27
+ private doMerkleOperations;
28
+ metrics: ExecutorMetrics;
27
29
  private log;
28
- constructor(db: MerkleTreeReadOperations, globalVariables: GlobalVariables, worldStateDB: WorldStateDB, publicExecutor: PublicExecutor, realAvmProvingRequests?: boolean);
29
- static create(db: MerkleTreeReadOperations, publicExecutor: PublicExecutor, globalVariables: GlobalVariables, worldStateDB: WorldStateDB, realAvmProvingRequests?: boolean): PublicTxSimulator;
30
+ constructor(db: MerkleTreeReadOperations, worldStateDB: WorldStateDB, client: TelemetryClient, globalVariables: GlobalVariables, realAvmProvingRequests?: boolean, doMerkleOperations?: boolean);
31
+ /**
32
+ * Simulate a transaction's public portion including all of its phases.
33
+ * @param tx - The transaction to simulate.
34
+ * @returns The result of the transaction's public execution.
35
+ */
30
36
  simulate(tx: Tx): Promise<PublicTxResult>;
37
+ /**
38
+ * Simulate the setup phase of a transaction's public execution.
39
+ * @param context - WILL BE MUTATED. The context of the currently executing public transaction portion
40
+ * @returns The phase result.
41
+ */
31
42
  private simulateSetupPhase;
43
+ /**
44
+ * Simulate the app logic phase of a transaction's public execution.
45
+ * @param context - WILL BE MUTATED. The context of the currently executing public transaction portion
46
+ * @returns The phase result.
47
+ */
32
48
  private simulateAppLogicPhase;
49
+ /**
50
+ * Simulate the teardown phase of a transaction's public execution.
51
+ * @param context - WILL BE MUTATED. The context of the currently executing public transaction portion
52
+ * @returns The phase result.
53
+ */
33
54
  private simulateTeardownPhase;
55
+ /**
56
+ * Simulate a phase of a transaction's public execution.
57
+ * @param phase - The current phase
58
+ * @param context - WILL BE MUTATED. The context of the currently executing public transaction portion
59
+ * @returns The phase result.
60
+ */
34
61
  private simulatePhase;
62
+ /**
63
+ * Simulate an enqueued public call.
64
+ * @param phase - The current phase of public execution
65
+ * @param context - WILL BE MUTATED. The context of the currently executing public transaction portion
66
+ * @param callRequest - The enqueued call to execute
67
+ * @param executionRequest - The execution request (includes args)
68
+ * @returns The result of execution.
69
+ */
70
+ private simulateEnqueuedCall;
71
+ /**
72
+ * Simulate an enqueued public call, without modifying the context (PublicTxContext).
73
+ * Resulting modifcations to the context can be applied by the caller.
74
+ *
75
+ * This function can be mocked for testing to skip actual AVM simulation
76
+ * while still simulating phases and generating a proving request.
77
+ *
78
+ * @param stateManager - The state manager for AvmSimulation
79
+ * @param context - The context of the currently executing public transaction portion
80
+ * @param executionRequest - The execution request (includes args)
81
+ * @param allocatedGas - The gas allocated to the enqueued call
82
+ * @param fnName - The name of the function
83
+ * @returns The result of execution.
84
+ */
85
+ private simulateEnqueuedCallInternal;
35
86
  }
36
87
  //# sourceMappingURL=public_tx_simulator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public_tx_simulator.d.ts","sourceRoot":"","sources":["../../src/public/public_tx_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,wBAAwB,EAC7B,yBAAyB,EACzB,KAAK,eAAe,EACpB,KAAK,EAAE,EACP,gBAAgB,EAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAO,KAAK,eAAe,EAAgC,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAK9G,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,yBAAyB,EAAE,CAAC;IAC1C,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC,CAAC;AAEF,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,sBAAsB;IAPhC,OAAO,CAAC,GAAG,CAAc;gBAGf,EAAE,EAAE,wBAAwB,EAC5B,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,EAC9B,sBAAsB,GAAE,OAAc;IAKhD,MAAM,CAAC,MAAM,CACX,EAAE,EAAE,wBAAwB,EAC5B,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,sBAAsB,GAAE,OAAc;IAKlC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;YA2DjC,kBAAkB;YAIlB,qBAAqB;YAoBrB,qBAAqB;YAoBrB,aAAa;CAoE5B"}
1
+ {"version":3,"file":"public_tx_simulator.d.ts","sourceRoot":"","sources":["../../src/public/public_tx_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,wBAAwB,EAC7B,yBAAyB,EAEzB,KAAK,eAAe,EACpB,KAAK,EAAE,EACP,gBAAgB,EAEjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAGL,KAAK,eAAe,EAGpB,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAK/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,yBAAyB,EAAE,CAAC;IAC1C,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,4BAA4B;IAC5B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC,CAAC;AAEF,qBAAa,iBAAiB;IAM1B,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,YAAY;IAEpB,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,kBAAkB;IAV5B,OAAO,EAAE,eAAe,CAAC;IAEzB,OAAO,CAAC,GAAG,CAAc;gBAGf,EAAE,EAAE,wBAAwB,EAC5B,YAAY,EAAE,YAAY,EAClC,MAAM,EAAE,eAAe,EACf,eAAe,EAAE,eAAe,EAChC,sBAAsB,GAAE,OAAc,EACtC,kBAAkB,GAAE,OAAe;IAM7C;;;;OAIG;IACG,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAiE/C;;;;OAIG;YACW,kBAAkB;IAIhC;;;;OAIG;YACW,qBAAqB;IAoBnC;;;;OAIG;YACW,qBAAqB;IAoBnC;;;;;OAKG;YACW,aAAa;IAqC3B;;;;;;;OAOG;YACW,oBAAoB;IAsDlC;;;;;;;;;;;;;OAaG;YACW,4BAA4B;CAiD3C"}
@@ -1,23 +1,29 @@
1
1
  import { NestedProcessReturnValues, TxExecutionPhase, UnencryptedFunctionL2Logs, } from '@aztec/circuit-types';
2
- import { Gas, MAX_L2_GAS_PER_ENQUEUED_CALL } from '@aztec/circuits.js';
2
+ import { Gas, MAX_L2_GAS_PER_ENQUEUED_CALL, } from '@aztec/circuits.js';
3
3
  import { createDebugLogger } from '@aztec/foundation/log';
4
4
  import { Timer } from '@aztec/foundation/timer';
5
+ import { AvmSimulator } from '../avm/index.js';
6
+ import { getPublicFunctionDebugName } from '../common/debug_fn_name.js';
7
+ import { ExecutorMetrics } from './executor_metrics.js';
5
8
  import { PublicTxContext } from './public_tx_context.js';
6
9
  export class PublicTxSimulator {
7
- constructor(db, globalVariables, worldStateDB, publicExecutor, realAvmProvingRequests = true) {
10
+ constructor(db, worldStateDB, client, globalVariables, realAvmProvingRequests = true, doMerkleOperations = false) {
8
11
  this.db = db;
9
- this.globalVariables = globalVariables;
10
12
  this.worldStateDB = worldStateDB;
11
- this.publicExecutor = publicExecutor;
13
+ this.globalVariables = globalVariables;
12
14
  this.realAvmProvingRequests = realAvmProvingRequests;
15
+ this.doMerkleOperations = doMerkleOperations;
13
16
  this.log = createDebugLogger(`aztec:public_tx_simulator`);
17
+ this.metrics = new ExecutorMetrics(client, 'PublicTxSimulator');
14
18
  }
15
- static create(db, publicExecutor, globalVariables, worldStateDB, realAvmProvingRequests = true) {
16
- return new PublicTxSimulator(db, globalVariables, worldStateDB, publicExecutor, realAvmProvingRequests);
17
- }
19
+ /**
20
+ * Simulate a transaction's public portion including all of its phases.
21
+ * @param tx - The transaction to simulate.
22
+ * @returns The result of the transaction's public execution.
23
+ */
18
24
  async simulate(tx) {
19
25
  this.log.verbose(`Processing tx ${tx.getTxHash()}`);
20
- const context = await PublicTxContext.create(this.db, this.worldStateDB, tx, this.globalVariables);
26
+ const context = await PublicTxContext.create(this.db, this.worldStateDB, tx, this.globalVariables, this.doMerkleOperations);
21
27
  // add new contracts to the contracts db so that their functions may be found and called
22
28
  // TODO(#4073): This is catching only private deployments, when we add public ones, we'll
23
29
  // have to capture contracts emitted in that phase as well.
@@ -63,9 +69,19 @@ export class PublicTxSimulator {
63
69
  processedPhases: processedPhases,
64
70
  };
65
71
  }
72
+ /**
73
+ * Simulate the setup phase of a transaction's public execution.
74
+ * @param context - WILL BE MUTATED. The context of the currently executing public transaction portion
75
+ * @returns The phase result.
76
+ */
66
77
  async simulateSetupPhase(context) {
67
78
  return await this.simulatePhase(TxExecutionPhase.SETUP, context);
68
79
  }
80
+ /**
81
+ * Simulate the app logic phase of a transaction's public execution.
82
+ * @param context - WILL BE MUTATED. The context of the currently executing public transaction portion
83
+ * @returns The phase result.
84
+ */
69
85
  async simulateAppLogicPhase(context) {
70
86
  // Fork the state manager so that we can rollback state if app logic or teardown reverts.
71
87
  // Don't need to fork for setup since it's non-revertible (if setup fails, transaction is thrown out).
@@ -83,6 +99,11 @@ export class PublicTxSimulator {
83
99
  }
84
100
  return result;
85
101
  }
102
+ /**
103
+ * Simulate the teardown phase of a transaction's public execution.
104
+ * @param context - WILL BE MUTATED. The context of the currently executing public transaction portion
105
+ * @returns The phase result.
106
+ */
86
107
  async simulateTeardownPhase(context) {
87
108
  if (!context.state.isForked()) {
88
109
  // If state isn't forked (app logic was empty or reverted), fork now
@@ -100,10 +121,15 @@ export class PublicTxSimulator {
100
121
  }
101
122
  return result;
102
123
  }
124
+ /**
125
+ * Simulate a phase of a transaction's public execution.
126
+ * @param phase - The current phase
127
+ * @param context - WILL BE MUTATED. The context of the currently executing public transaction portion
128
+ * @returns The phase result.
129
+ */
103
130
  async simulatePhase(phase, context) {
104
131
  const callRequests = context.getCallRequestsForPhase(phase);
105
132
  const executionRequests = context.getExecutionRequestsForPhase(phase);
106
- const txStateManager = context.state.getActiveStateManager();
107
133
  this.log.debug(`Beginning processing in phase ${TxExecutionPhase[phase]} for tx ${context.getTxHash()}`);
108
134
  const returnValues = [];
109
135
  let reverted = false;
@@ -115,25 +141,11 @@ export class PublicTxSimulator {
115
141
  }
116
142
  const callRequest = callRequests[i];
117
143
  const executionRequest = executionRequests[i];
118
- const availableGas = context.getGasLeftForPhase(phase);
119
- // Gas allocated to an enqueued call can be different from the available gas
120
- // if there is more gas available than the max allocation per enqueued call.
121
- const allocatedGas = new Gas(
122
- /*daGas=*/ availableGas.daGas,
123
- /*l2Gas=*/ Math.min(availableGas.l2Gas, MAX_L2_GAS_PER_ENQUEUED_CALL));
124
- const enqueuedCallResult = (await this.publicExecutor.simulate(txStateManager, executionRequest, this.globalVariables, // todo get from context
125
- allocatedGas, context.getTransactionFee(phase)));
126
- // TODO(dbanks12): remove once AVM proves entire public tx
127
- await context.updateProvingRequest(this.realAvmProvingRequests, phase, this.worldStateDB, txStateManager, executionRequest, enqueuedCallResult, allocatedGas);
128
- txStateManager.traceEnqueuedCall(callRequest, executionRequest.args, enqueuedCallResult.reverted);
129
- const gasUsed = allocatedGas.sub(Gas.from(enqueuedCallResult.endGasLeft));
130
- context.consumeGas(phase, gasUsed);
131
- returnValues.push(new NestedProcessReturnValues(enqueuedCallResult.returnValues));
144
+ const enqueuedCallResult = await this.simulateEnqueuedCall(phase, context, callRequest, executionRequest);
145
+ returnValues.push(new NestedProcessReturnValues(enqueuedCallResult.output));
132
146
  if (enqueuedCallResult.reverted) {
133
147
  reverted = true;
134
- const culprit = `${executionRequest.callContext.contractAddress}:${executionRequest.callContext.functionSelector}`;
135
148
  revertReason = enqueuedCallResult.revertReason;
136
- context.revert(phase, enqueuedCallResult.revertReason, culprit); // throws if in setup (non-revertible) phase
137
149
  }
138
150
  }
139
151
  return {
@@ -144,5 +156,73 @@ export class PublicTxSimulator {
144
156
  revertReason,
145
157
  };
146
158
  }
159
+ /**
160
+ * Simulate an enqueued public call.
161
+ * @param phase - The current phase of public execution
162
+ * @param context - WILL BE MUTATED. The context of the currently executing public transaction portion
163
+ * @param callRequest - The enqueued call to execute
164
+ * @param executionRequest - The execution request (includes args)
165
+ * @returns The result of execution.
166
+ */
167
+ async simulateEnqueuedCall(phase, context, callRequest, executionRequest) {
168
+ const stateManager = context.state.getActiveStateManager();
169
+ const address = executionRequest.callContext.contractAddress;
170
+ const selector = executionRequest.callContext.functionSelector;
171
+ const fnName = await getPublicFunctionDebugName(this.worldStateDB, address, selector, executionRequest.args);
172
+ const availableGas = context.getGasLeftForPhase(phase);
173
+ // Gas allocated to an enqueued call can be different from the available gas
174
+ // if there is more gas available than the max allocation per enqueued call.
175
+ const allocatedGas = new Gas(
176
+ /*daGas=*/ availableGas.daGas,
177
+ /*l2Gas=*/ Math.min(availableGas.l2Gas, MAX_L2_GAS_PER_ENQUEUED_CALL));
178
+ const result = await this.simulateEnqueuedCallInternal(context.state.getActiveStateManager(), executionRequest, allocatedGas, context.getTransactionFee(phase), fnName);
179
+ const gasUsed = allocatedGas.sub(result.gasLeft);
180
+ context.consumeGas(phase, gasUsed);
181
+ this.log.verbose(`[AVM] Enqueued public call consumed ${gasUsed.l2Gas} L2 gas ending with ${result.gasLeft.l2Gas} L2 gas left.`);
182
+ // TODO(dbanks12): remove once AVM proves entire public tx
183
+ context.updateProvingRequest(this.realAvmProvingRequests, phase, fnName, stateManager, executionRequest, result, allocatedGas);
184
+ stateManager.traceEnqueuedCall(callRequest, executionRequest.args, result.reverted);
185
+ if (result.reverted) {
186
+ const culprit = `${executionRequest.callContext.contractAddress}:${executionRequest.callContext.functionSelector}`;
187
+ context.revert(phase, result.revertReason, culprit); // throws if in setup (non-revertible) phase
188
+ }
189
+ return result;
190
+ }
191
+ /**
192
+ * Simulate an enqueued public call, without modifying the context (PublicTxContext).
193
+ * Resulting modifcations to the context can be applied by the caller.
194
+ *
195
+ * This function can be mocked for testing to skip actual AVM simulation
196
+ * while still simulating phases and generating a proving request.
197
+ *
198
+ * @param stateManager - The state manager for AvmSimulation
199
+ * @param context - The context of the currently executing public transaction portion
200
+ * @param executionRequest - The execution request (includes args)
201
+ * @param allocatedGas - The gas allocated to the enqueued call
202
+ * @param fnName - The name of the function
203
+ * @returns The result of execution.
204
+ */
205
+ async simulateEnqueuedCallInternal(stateManager, executionRequest, allocatedGas, transactionFee, fnName) {
206
+ const address = executionRequest.callContext.contractAddress;
207
+ const sender = executionRequest.callContext.msgSender;
208
+ const selector = executionRequest.callContext.functionSelector;
209
+ this.log.verbose(`[AVM] Executing enqueued public call to external function ${fnName}@${address} with ${allocatedGas.l2Gas} allocated L2 gas.`);
210
+ const timer = new Timer();
211
+ const simulator = AvmSimulator.create(stateManager, address, sender, selector, transactionFee, this.globalVariables, executionRequest.callContext.isStaticCall, executionRequest.args, allocatedGas);
212
+ const avmCallResult = await simulator.execute();
213
+ const result = avmCallResult.finalize();
214
+ this.log.verbose(`[AVM] Simulation of enqueued public call ${fnName} completed. reverted: ${result.reverted}${result.reverted ? ', reason: ' + result.revertReason : ''}.`, {
215
+ eventName: 'avm-simulation',
216
+ appCircuitName: fnName,
217
+ duration: timer.ms(),
218
+ });
219
+ if (result.reverted) {
220
+ this.metrics.recordFunctionSimulationFailure();
221
+ }
222
+ else {
223
+ this.metrics.recordFunctionSimulation(timer.ms());
224
+ }
225
+ return result;
226
+ }
147
227
  }
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X3NpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3R4X3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwseUJBQXlCLEVBR3pCLGdCQUFnQixFQUNoQix5QkFBeUIsR0FDMUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsR0FBRyxFQUF3Qiw0QkFBNEIsRUFBbUIsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RyxPQUFPLEVBQW9CLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQW9CekQsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUNVLEVBQTRCLEVBQzVCLGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLGNBQThCLEVBQzlCLHlCQUFrQyxJQUFJO1FBSnRDLE9BQUUsR0FBRixFQUFFLENBQTBCO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUFnQjtRQUU5QyxJQUFJLENBQUMsR0FBRyxHQUFHLGlCQUFpQixDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQ1gsRUFBNEIsRUFDNUIsY0FBOEIsRUFDOUIsZUFBZ0MsRUFDaEMsWUFBMEIsRUFDMUIseUJBQWtDLElBQUk7UUFFdEMsT0FBTyxJQUFJLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRCxLQUFLLENBQUMsUUFB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
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X3NpbXVsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3R4X3NpbXVsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwseUJBQXlCLEVBSXpCLGdCQUFnQixFQUNoQix5QkFBeUIsR0FDMUIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBRUwsR0FBRyxFQUVILDRCQUE0QixHQUc3QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJaEQsT0FBTyxFQUFtQyxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBb0J6RCxNQUFNLE9BQU8saUJBQWlCO0lBSzVCLFlBQ1UsRUFBNEIsRUFDNUIsWUFBMEIsRUFDbEMsTUFBdUIsRUFDZixlQUFnQyxFQUNoQyx5QkFBa0MsSUFBSSxFQUN0QyxxQkFBOEIsS0FBSztRQUxuQyxPQUFFLEdBQUYsRUFBRSxDQUEwQjtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUUxQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUFnQjtRQUN0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWlCO1FBRTNDLElBQUksQ0FBQyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRSxtQkFBbUIs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