Skip to content

Commit

Permalink
refactor: remove EnqueuedCallSimulator
Browse files Browse the repository at this point in the history
  • Loading branch information
dbanks12 committed Nov 17, 2024
1 parent 7e3c14c commit 76c87c7
Show file tree
Hide file tree
Showing 8 changed files with 438 additions and 503 deletions.
268 changes: 0 additions & 268 deletions yarn-project/simulator/src/public/enqueued_call_simulator.ts

This file was deleted.

4 changes: 2 additions & 2 deletions yarn-project/simulator/src/public/public_processor.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ describe('public_processor', () => {

worldStateDB.storageRead.mockResolvedValue(Fr.ZERO);

publicTxProcessor.process.mockImplementation(() => {
publicTxProcessor.simulate.mockImplementation(() => {
return Promise.resolve(mockedEnqueuedCallsResult);
});

Expand Down Expand Up @@ -136,7 +136,7 @@ describe('public_processor', () => {
});

it('returns failed txs without aborting entire operation', async function () {
publicTxProcessor.process.mockRejectedValue(new SimulationError(`Failed`, []));
publicTxProcessor.simulate.mockRejectedValue(new SimulationError(`Failed`, []));

const tx = mockTxWithPublicCalls();
const [processed, failed] = await processor.process([tx], 1, handler);
Expand Down
10 changes: 2 additions & 8 deletions yarn-project/simulator/src/public/public_processor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,13 +97,7 @@ export class PublicProcessor {
worldStateDB: WorldStateDB,
telemetryClient: TelemetryClient,
) {
const publicTxSimulator = PublicTxSimulator.create(
db,
publicExecutor,
globalVariables,
historicalHeader,
worldStateDB,
);
const publicTxSimulator = PublicTxSimulator.create(db, publicExecutor, globalVariables, worldStateDB);

return new PublicProcessor(db, globalVariables, historicalHeader, worldStateDB, publicTxSimulator, telemetryClient);
}
Expand Down Expand Up @@ -281,7 +275,7 @@ export class PublicProcessor {
const timer = new Timer();

const { avmProvingRequest, gasUsed, revertCode, revertReason, processedPhases } =
await this.publicTxSimulator.process(tx);
await this.publicTxSimulator.simulate(tx);

if (!avmProvingRequest) {
this.metrics.recordFailedTx();
Expand Down
44 changes: 34 additions & 10 deletions yarn-project/simulator/src/public/public_tx_context.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ import {
} from '@aztec/circuit-types';
import {
type AvmCircuitPublicInputs,
CombinedConstantData,
Fr,
Gas,
type GasSettings,
type GlobalVariables,
type Header,
type PrivateToPublicAccumulatedData,
PublicAccumulatedDataArrayLengths,
type PublicCallRequest,
Expand All @@ -29,14 +29,11 @@ import { inspect } from 'util';
import { AvmPersistableStateManager } from '../avm/index.js';
import { DualSideEffectTrace } from './dual_side_effect_trace.js';
import { PublicEnqueuedCallSideEffectTrace } from './enqueued_call_side_effect_trace.js';
import { type EnqueuedPublicCallExecutionResult } from './execution.js';
import { type WorldStateDB } from './public_db_sources.js';
import { PublicSideEffectTrace } from './side_effect_trace.js';
import {
convertPrivateToPublicAccumulatedData,
generateAvmCircuitPublicInputs,
getCallRequestsByPhase,
getExecutionRequestsByPhase,
} from './utils.js';
import { generateAvmCircuitPublicInputs, generateAvmProvingRequest } from './transitional_adapters.js';
import { convertPrivateToPublicAccumulatedData, getCallRequestsByPhase, getExecutionRequestsByPhase } from './utils.js';

export class PublicTxContext {
private log: DebugLogger;
Expand All @@ -53,12 +50,12 @@ export class PublicTxContext {
/* What caused a revert (if one occurred)? */
public revertReason: SimulationError | undefined;

public avmProvingRequest: AvmProvingRequest | undefined; // tmp hack
public avmProvingRequest: AvmProvingRequest | undefined; // FIXME(dbanks12): remove

constructor(
public readonly state: PhaseStateManager,
private readonly globalVariables: GlobalVariables,
public readonly constants: CombinedConstantData, // FIXME(dbanks12): remove
private readonly historicalHeader: Header, // FIXME(dbanks12): remove
private readonly startStateReference: StateReference,
private readonly startGasUsed: Gas,
private readonly gasSettings: GasSettings,
Expand Down Expand Up @@ -114,7 +111,7 @@ export class PublicTxContext {
return new PublicTxContext(
new PhaseStateManager(txStateManager),
globalVariables,
CombinedConstantData.combine(tx.data.constants, globalVariables),
tx.data.constants.historicalHeader,
await db.getStateReference(),
tx.data.gasUsed,
tx.data.constants.txContext.gasSettings,
Expand Down Expand Up @@ -334,6 +331,33 @@ export class PublicTxContext {
this.avmProvingRequest!.inputs.output = this.generateAvmCircuitPublicInputs(endStateReference);
return this.avmProvingRequest!;
}

// TODO(dbanks12): remove once AVM proves entire public tx
async updateProvingRequest(
real: boolean,
phase: TxExecutionPhase,
worldStateDB: WorldStateDB,
stateManager: AvmPersistableStateManager,
executionRequest: PublicExecutionRequest,
result: EnqueuedPublicCallExecutionResult,
allocatedGas: Gas,
) {
if (this.avmProvingRequest === undefined) {
// Propagate the very first avmProvingRequest of the tx for now.
// Eventually this will be the proof for the entire public portion of the transaction.
this.avmProvingRequest = await generateAvmProvingRequest(
real,
worldStateDB,
stateManager,
this.historicalHeader,
this.globalVariables,
executionRequest,
result,
allocatedGas,
this.getTransactionFee(phase),
);
}
}
}

class PhaseStateManager {
Expand Down
Loading

0 comments on commit 76c87c7

Please sign in to comment.