diff --git a/yarn-project/simulator/src/public/avm/avm_context.ts b/yarn-project/simulator/src/public/avm/avm_context.ts index 9b5ed8a24d05..40cbed5ee8df 100644 --- a/yarn-project/simulator/src/public/avm/avm_context.ts +++ b/yarn-project/simulator/src/public/avm/avm_context.ts @@ -1,11 +1,11 @@ import type { Fr } from '@aztec/foundation/fields'; import type { AztecAddress } from '@aztec/stdlib/aztec-address'; +import type { PublicPersistableStateManager } from '../state_manager/state_manager.js'; import type { AvmExecutionEnvironment } from './avm_execution_environment.js'; import { type Gas, gasToGasLeft } from './avm_gas.js'; import { AvmMachineState } from './avm_machine_state.js'; import type { AvmSimulator } from './avm_simulator.js'; -import type { AvmPersistableStateManager } from './journal/journal.js'; /** * An execution context includes the information necessary to initiate AVM @@ -20,7 +20,7 @@ export class AvmContext { * @returns new AvmContext instance */ constructor( - public persistableState: AvmPersistableStateManager, + public persistableState: PublicPersistableStateManager, public environment: AvmExecutionEnvironment, public machineState: AvmMachineState, ) {} diff --git a/yarn-project/simulator/src/public/avm/avm_simulator.test.ts b/yarn-project/simulator/src/public/avm/avm_simulator.test.ts index 999a78d6b785..4465582819b2 100644 --- a/yarn-project/simulator/src/public/avm/avm_simulator.test.ts +++ b/yarn-project/simulator/src/public/avm/avm_simulator.test.ts @@ -36,6 +36,7 @@ import { mock } from 'jest-mock-extended'; import { SideEffectTrace } from '../../public/side_effect_trace.js'; import type { PublicSideEffectTraceInterface } from '../../public/side_effect_trace_interface.js'; import { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js'; +import type { PublicPersistableStateManager } from '../state_manager/state_manager.js'; import type { AvmContext } from './avm_context.js'; import type { AvmExecutionEnvironment } from './avm_execution_environment.js'; import { type MemoryValue, TypeTag, type Uint8, type Uint64 } from './avm_memory_types.js'; @@ -57,7 +58,6 @@ import { resolveContractAssertionMessage, } from './fixtures/index.js'; import { SimpleContractDataSource } from './fixtures/simple_contract_data_source.js'; -import type { AvmPersistableStateManager } from './journal/journal.js'; import { Add, CalldataCopy, @@ -555,7 +555,7 @@ describe('AVM simulator: transpiled Noir contracts', () => { let treesDB: PublicTreesDB; let contractsDB: PublicContractsDB; let trace: PublicSideEffectTraceInterface; - let persistableState: AvmPersistableStateManager; + let persistableState: PublicPersistableStateManager; beforeAll(async () => { siloedNullifier0 = await siloNullifier(address, value0); @@ -1093,7 +1093,7 @@ describe('AVM simulator: transpiled Noir contracts', () => { let treesDB: PublicTreesDB; let contractsDB: PublicContractsDB; let trace: PublicSideEffectTraceInterface; - let persistableState: AvmPersistableStateManager; + let persistableState: PublicPersistableStateManager; let leafSlot0: Fr; diff --git a/yarn-project/simulator/src/public/avm/avm_simulator.ts b/yarn-project/simulator/src/public/avm/avm_simulator.ts index 7bbfd0ed82bd..29d4c61f709d 100644 --- a/yarn-project/simulator/src/public/avm/avm_simulator.ts +++ b/yarn-project/simulator/src/public/avm/avm_simulator.ts @@ -7,6 +7,7 @@ import type { GlobalVariables } from '@aztec/stdlib/tx'; import { strict as assert } from 'assert'; import { SideEffectLimitReachedError } from '../side_effect_errors.js'; +import type { PublicPersistableStateManager } from '../state_manager/state_manager.js'; import { AvmContext } from './avm_context.js'; import { AvmContractCallResult } from './avm_contract_call_result.js'; import { AvmExecutionEnvironment } from './avm_execution_environment.js'; @@ -19,7 +20,6 @@ import { revertReasonFromExceptionalHalt, revertReasonFromExplicitRevert, } from './errors.js'; -import type { AvmPersistableStateManager } from './journal/journal.js'; import type { Instruction } from './opcodes/instruction.js'; import { INSTRUCTION_SET, @@ -75,7 +75,7 @@ export class AvmSimulator { } public static async create( - stateManager: AvmPersistableStateManager, + stateManager: PublicPersistableStateManager, address: AztecAddress, sender: AztecAddress, transactionFee: Fr, diff --git a/yarn-project/simulator/src/public/avm/fixtures/avm_simulation_tester.ts b/yarn-project/simulator/src/public/avm/fixtures/avm_simulation_tester.ts index cccf1aef8810..ea52a7da7e84 100644 --- a/yarn-project/simulator/src/public/avm/fixtures/avm_simulation_tester.ts +++ b/yarn-project/simulator/src/public/avm/fixtures/avm_simulation_tester.ts @@ -16,8 +16,8 @@ import { initExecutionEnvironment, resolveContractAssertionMessage, } from '../../avm/fixtures/index.js'; -import { AvmPersistableStateManager } from '../../avm/journal/journal.js'; import { PublicContractsDB, PublicTreesDB } from '../../public_db_sources.js'; +import { PublicPersistableStateManager } from '../../state_manager/state_manager.js'; import { AvmSimulator } from '../avm_simulator.js'; import { BaseAvmSimulationTester } from './base_avm_simulation_tester.js'; import { SimpleContractDataSource } from './simple_contract_data_source.js'; @@ -34,7 +34,7 @@ export class AvmSimulationTester extends BaseAvmSimulationTester { constructor( contractDataSource: SimpleContractDataSource, merkleTrees: MerkleTreeWriteOperations, - private stateManager: AvmPersistableStateManager, + private stateManager: PublicPersistableStateManager, ) { super(contractDataSource, merkleTrees); } @@ -47,7 +47,7 @@ export class AvmSimulationTester extends BaseAvmSimulationTester { const trace = new SideEffectTrace(); const firstNullifier = new Fr(420000); - const stateManager = AvmPersistableStateManager.create( + const stateManager = PublicPersistableStateManager.create( treesDB, contractsDB, trace, diff --git a/yarn-project/simulator/src/public/avm/fixtures/index.ts b/yarn-project/simulator/src/public/avm/fixtures/index.ts index c577ae0cd7bb..12003bc2ee94 100644 --- a/yarn-project/simulator/src/public/avm/fixtures/index.ts +++ b/yarn-project/simulator/src/public/avm/fixtures/index.ts @@ -30,15 +30,15 @@ import merge from 'lodash.merge'; import { resolveAssertionMessageFromRevertData, traverseCauseChain } from '../../../common/index.js'; import type { PublicContractsDB, PublicTreesDB } from '../../public_db_sources.js'; import type { PublicSideEffectTraceInterface } from '../../side_effect_trace_interface.js'; +import { NullifierManager } from '../../state_manager/nullifiers.js'; +import { PublicStorage } from '../../state_manager/public_storage.js'; +import { PublicPersistableStateManager } from '../../state_manager/state_manager.js'; import { AvmContext } from '../avm_context.js'; import { AvmExecutionEnvironment } from '../avm_execution_environment.js'; import { AvmMachineState } from '../avm_machine_state.js'; import { Field, Uint8, Uint32, Uint64 } from '../avm_memory_types.js'; import { AvmSimulator } from '../avm_simulator.js'; import type { AvmRevertReason } from '../errors.js'; -import { AvmPersistableStateManager } from '../journal/journal.js'; -import { NullifierManager } from '../journal/nullifiers.js'; -import { PublicStorage } from '../journal/public_storage.js'; export const PUBLIC_DISPATCH_FN_NAME = 'public_dispatch'; export const DEFAULT_BLOCK_NUMBER = 42; @@ -47,7 +47,7 @@ export const DEFAULT_BLOCK_NUMBER = 42; * Create a new AVM context with default values. */ export function initContext(overrides?: { - persistableState?: AvmPersistableStateManager; + persistableState?: PublicPersistableStateManager; env?: AvmExecutionEnvironment; machineState?: AvmMachineState; }): AvmContext { @@ -70,9 +70,9 @@ export function initPersistableStateManager(overrides?: { doMerkleOperations?: boolean; firstNullifier?: Fr; blockNumber?: number; -}): AvmPersistableStateManager { +}): PublicPersistableStateManager { const treesDB = overrides?.treesDB || mock(); - return new AvmPersistableStateManager( + return new PublicPersistableStateManager( treesDB, overrides?.contractsDB || mock(), overrides?.trace || mock(), diff --git a/yarn-project/simulator/src/public/avm/index.ts b/yarn-project/simulator/src/public/avm/index.ts index 27a419c30d49..62c6c0b6105c 100644 --- a/yarn-project/simulator/src/public/avm/index.ts +++ b/yarn-project/simulator/src/public/avm/index.ts @@ -1,3 +1,2 @@ export * from './avm_simulator.js'; -export * from './journal/index.js'; export * from './fixtures/simple_contract_data_source.js'; diff --git a/yarn-project/simulator/src/public/avm/journal/index.ts b/yarn-project/simulator/src/public/avm/journal/index.ts deleted file mode 100644 index 5a3cc78b4162..000000000000 --- a/yarn-project/simulator/src/public/avm/journal/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './journal.js'; diff --git a/yarn-project/simulator/src/public/avm/opcodes/accrued_substate.test.ts b/yarn-project/simulator/src/public/avm/opcodes/accrued_substate.test.ts index 9afcb6dd7b46..a1aa53c41eaf 100644 --- a/yarn-project/simulator/src/public/avm/opcodes/accrued_substate.test.ts +++ b/yarn-project/simulator/src/public/avm/opcodes/accrued_substate.test.ts @@ -6,11 +6,11 @@ import { mock } from 'jest-mock-extended'; import type { PublicSideEffectTraceInterface } from '../../../public/side_effect_trace_interface.js'; import type { PublicTreesDB } from '../../public_db_sources.js'; +import type { PublicPersistableStateManager } from '../../state_manager/state_manager.js'; import type { AvmContext } from '../avm_context.js'; import { Field, Uint8, Uint32 } from '../avm_memory_types.js'; import { InstructionExecutionError, StaticCallAlterationError } from '../errors.js'; import { initContext, initExecutionEnvironment, initPersistableStateManager } from '../fixtures/index.js'; -import type { AvmPersistableStateManager } from '../journal/journal.js'; import { mockGetNullifierIndex, mockL1ToL2MessageExists, @@ -30,7 +30,7 @@ import { describe('Accrued Substate', () => { let treesDB: PublicTreesDB; let trace: PublicSideEffectTraceInterface; - let persistableState: AvmPersistableStateManager; + let persistableState: PublicPersistableStateManager; let context: AvmContext; const address = AztecAddress.fromNumber(1); diff --git a/yarn-project/simulator/src/public/avm/opcodes/accrued_substate.ts b/yarn-project/simulator/src/public/avm/opcodes/accrued_substate.ts index 60aa40ede1dd..9502fcf830ad 100644 --- a/yarn-project/simulator/src/public/avm/opcodes/accrued_substate.ts +++ b/yarn-project/simulator/src/public/avm/opcodes/accrued_substate.ts @@ -1,7 +1,7 @@ +import { NullifierCollisionError } from '../../state_manager/nullifiers.js'; import type { AvmContext } from '../avm_context.js'; import { TypeTag, Uint1 } from '../avm_memory_types.js'; import { InstructionExecutionError, StaticCallAlterationError } from '../errors.js'; -import { NullifierCollisionError } from '../journal/nullifiers.js'; import { Opcode, OperandType } from '../serialization/instruction_serialization.js'; import { Addressing } from './addressing_mode.js'; import { Instruction } from './instruction.js'; diff --git a/yarn-project/simulator/src/public/avm/opcodes/contract.test.ts b/yarn-project/simulator/src/public/avm/opcodes/contract.test.ts index 37636bfd036a..70dfa7193aaf 100644 --- a/yarn-project/simulator/src/public/avm/opcodes/contract.test.ts +++ b/yarn-project/simulator/src/public/avm/opcodes/contract.test.ts @@ -4,10 +4,10 @@ import { SerializableContractInstance } from '@aztec/stdlib/contract'; import { mock } from 'jest-mock-extended'; +import type { PublicPersistableStateManager } from '../../state_manager/state_manager.js'; import type { AvmContext } from '../avm_context.js'; import { Field, TypeTag, Uint1 } from '../avm_memory_types.js'; import { initContext } from '../fixtures/index.js'; -import type { AvmPersistableStateManager } from '../journal/journal.js'; import { ContractInstanceMember, GetContractInstance } from './contract.js'; describe('Contract opcodes', () => { @@ -17,7 +17,7 @@ describe('Contract opcodes', () => { let contractClassId: Fr; let initializationHash: Fr; - let persistableState: jest.Mocked; + let persistableState: jest.Mocked; let context: AvmContext; beforeEach(async () => { @@ -26,7 +26,7 @@ describe('Contract opcodes', () => { deployer = contractInstance.deployer; contractClassId = contractInstance.currentContractClassId; initializationHash = contractInstance.initializationHash; - persistableState = mock(); + persistableState = mock(); context = initContext({ persistableState }); }); diff --git a/yarn-project/simulator/src/public/avm/opcodes/external_calls.test.ts b/yarn-project/simulator/src/public/avm/opcodes/external_calls.test.ts index 77c4b29f472c..4841f4bb4da7 100644 --- a/yarn-project/simulator/src/public/avm/opcodes/external_calls.test.ts +++ b/yarn-project/simulator/src/public/avm/opcodes/external_calls.test.ts @@ -6,10 +6,10 @@ import { mock } from 'jest-mock-extended'; import type { PublicSideEffectTraceInterface } from '../../../public/side_effect_trace_interface.js'; import type { PublicContractsDB, PublicTreesDB } from '../../public_db_sources.js'; +import type { PublicPersistableStateManager } from '../../state_manager/state_manager.js'; import type { AvmContext } from '../avm_context.js'; import { Field, TypeTag, Uint1, Uint32 } from '../avm_memory_types.js'; import { initContext, initPersistableStateManager } from '../fixtures/index.js'; -import type { AvmPersistableStateManager } from '../journal/journal.js'; import { encodeToBytecode } from '../serialization/bytecode_serialization.js'; import { Opcode } from '../serialization/instruction_serialization.js'; import { @@ -30,7 +30,7 @@ describe('External Calls', () => { let treesDB: PublicTreesDB; let contractsDB: PublicContractsDB; let trace: PublicSideEffectTraceInterface; - let persistableState: AvmPersistableStateManager; + let persistableState: PublicPersistableStateManager; beforeEach(() => { treesDB = mock(); diff --git a/yarn-project/simulator/src/public/avm/opcodes/storage.test.ts b/yarn-project/simulator/src/public/avm/opcodes/storage.test.ts index 46e5b160ac66..8a2f07e5b591 100644 --- a/yarn-project/simulator/src/public/avm/opcodes/storage.test.ts +++ b/yarn-project/simulator/src/public/avm/opcodes/storage.test.ts @@ -3,21 +3,21 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address'; import { type MockProxy, mock } from 'jest-mock-extended'; +import type { PublicPersistableStateManager } from '../../state_manager/state_manager.js'; import type { AvmContext } from '../avm_context.js'; import { Field } from '../avm_memory_types.js'; import { StaticCallAlterationError } from '../errors.js'; import { initContext, initExecutionEnvironment } from '../fixtures/index.js'; -import type { AvmPersistableStateManager } from '../journal/journal.js'; import { SLoad, SStore } from './storage.js'; describe('Storage Instructions', () => { let context: AvmContext; - let persistableState: MockProxy; + let persistableState: MockProxy; let address: AztecAddress; beforeEach(async () => { address = await AztecAddress.random(); - persistableState = mock(); + persistableState = mock(); context = initContext({ persistableState: persistableState, env: initExecutionEnvironment({ address }), diff --git a/yarn-project/simulator/src/public/avm/test_utils.ts b/yarn-project/simulator/src/public/avm/test_utils.ts index cdd8ad33cbc2..1be367d7cab4 100644 --- a/yarn-project/simulator/src/public/avm/test_utils.ts +++ b/yarn-project/simulator/src/public/avm/test_utils.ts @@ -4,7 +4,7 @@ import type { ContractClassPublic, ContractInstanceWithAddress } from '@aztec/st import type { jest } from '@jest/globals'; import { mock } from 'jest-mock-extended'; -import type { PublicContractsDB, PublicTreesDB } from '../../public/public_db_sources.js'; +import type { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js'; import type { PublicSideEffectTraceInterface } from '../side_effect_trace_interface.js'; export function mockTraceFork(trace: PublicSideEffectTraceInterface, nestedTrace?: PublicSideEffectTraceInterface) { diff --git a/yarn-project/simulator/src/public/public_tx_simulator/measured_public_tx_simulator.ts b/yarn-project/simulator/src/public/public_tx_simulator/measured_public_tx_simulator.ts index 21a58a0f7df4..1127042018e8 100644 --- a/yarn-project/simulator/src/public/public_tx_simulator/measured_public_tx_simulator.ts +++ b/yarn-project/simulator/src/public/public_tx_simulator/measured_public_tx_simulator.ts @@ -5,9 +5,9 @@ import type { AvmSimulationStats } from '@aztec/stdlib/stats'; import { type GlobalVariables, PublicCallRequestWithCalldata, Tx, TxExecutionPhase } from '@aztec/stdlib/tx'; import type { AvmFinalizedCallResult } from '../avm/avm_contract_call_result.js'; -import type { AvmPersistableStateManager } from '../avm/index.js'; import type { ExecutorMetricsInterface } from '../executor_metrics_interface.js'; import type { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js'; +import type { PublicPersistableStateManager } from '../state_manager/state_manager.js'; import { PublicTxContext } from './public_tx_context.js'; import { type ProcessedPhase, type PublicTxResult, PublicTxSimulator } from './public_tx_simulator.js'; @@ -65,7 +65,7 @@ export class MeasuredPublicTxSimulator extends PublicTxSimulator { } protected override async simulateEnqueuedCallInternal( - stateManager: AvmPersistableStateManager, + stateManager: PublicPersistableStateManager, callRequest: PublicCallRequestWithCalldata, allocatedGas: Gas, transactionFee: Fr, diff --git a/yarn-project/simulator/src/public/public_tx_simulator/public_tx_context.ts b/yarn-project/simulator/src/public/public_tx_simulator/public_tx_context.ts index 42c476500eed..d53e768721aa 100644 --- a/yarn-project/simulator/src/public/public_tx_simulator/public_tx_context.ts +++ b/yarn-project/simulator/src/public/public_tx_simulator/public_tx_context.ts @@ -38,10 +38,10 @@ import { strict as assert } from 'assert'; import { inspect } from 'util'; import type { PublicContractsDBInterface } from '../../server.js'; -import { AvmPersistableStateManager } from '../avm/index.js'; import { HintingPublicContractsDB, HintingPublicTreesDB } from '../hinting_db_sources.js'; import type { PublicTreesDB } from '../public_db_sources.js'; import { SideEffectArrayLengths, SideEffectTrace } from '../side_effect_trace.js'; +import { PublicPersistableStateManager } from '../state_manager/state_manager.js'; import { getCallRequestsWithCalldataByPhase } from '../utils.js'; /** @@ -110,7 +110,7 @@ export class PublicTxContext { const hintingTreesDB = new HintingPublicTreesDB(treesDB, hints); // Transaction level state manager that will be forked for revertible phases. - const txStateManager = AvmPersistableStateManager.create( + const txStateManager = PublicPersistableStateManager.create( hintingTreesDB, hintingContractsDB, trace, @@ -424,9 +424,9 @@ export class PublicTxContext { class PhaseStateManager { private log: Logger; - private currentlyActiveStateManager: AvmPersistableStateManager | undefined; + private currentlyActiveStateManager: PublicPersistableStateManager | undefined; - constructor(private readonly txStateManager: AvmPersistableStateManager) { + constructor(private readonly txStateManager: PublicPersistableStateManager) { this.log = createLogger(`simulator:public_phase_state_manager`); } diff --git a/yarn-project/simulator/src/public/public_tx_simulator/public_tx_simulator.test.ts b/yarn-project/simulator/src/public/public_tx_simulator/public_tx_simulator.test.ts index a567d007d606..083a5189158e 100644 --- a/yarn-project/simulator/src/public/public_tx_simulator/public_tx_simulator.test.ts +++ b/yarn-project/simulator/src/public/public_tx_simulator/public_tx_simulator.test.ts @@ -37,9 +37,9 @@ import { jest } from '@jest/globals'; import { mock } from 'jest-mock-extended'; import { AvmFinalizedCallResult } from '../avm/avm_contract_call_result.js'; -import { AvmPersistableStateManager } from '../avm/journal/journal.js'; import type { InstructionSet } from '../avm/serialization/bytecode_serialization.js'; import { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js'; +import { PublicPersistableStateManager } from '../state_manager/state_manager.js'; import { type PublicTxResult, PublicTxSimulator } from './public_tx_simulator.js'; describe('public_tx_simulator', () => { @@ -69,7 +69,7 @@ describe('public_tx_simulator', () => { let simulator: PublicTxSimulator; let simulateInternal: jest.SpiedFunction< ( - stateManager: AvmPersistableStateManager, + stateManager: PublicPersistableStateManager, executionResult: any, allocatedGas: Gas, transactionFee: any, @@ -129,12 +129,12 @@ describe('public_tx_simulator', () => { }; const mockPublicExecutor = ( - mockedSimulatorExecutions: ((stateManager: AvmPersistableStateManager) => Promise)[], + mockedSimulatorExecutions: ((stateManager: PublicPersistableStateManager) => Promise)[], ) => { for (const executeSimulator of mockedSimulatorExecutions) { simulateInternal.mockImplementationOnce( async ( - stateManager: AvmPersistableStateManager, + stateManager: PublicPersistableStateManager, _executionResult: any, allocatedGas: Gas, _transactionFee: any, @@ -259,7 +259,7 @@ describe('public_tx_simulator', () => { ); simulateInternal.mockImplementation( ( - _stateManager: AvmPersistableStateManager, + _stateManager: PublicPersistableStateManager, _executionResult: any, allocatedGas: Gas, _transactionFee: any, @@ -492,17 +492,17 @@ describe('public_tx_simulator', () => { mockPublicExecutor([ // SETUP - async (_stateManager: AvmPersistableStateManager) => { + async (_stateManager: PublicPersistableStateManager) => { // Nothing happened in setup phase. }, // APP LOGIC - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { // mock storage writes on the state manager await stateManager.writeStorage(contractAddress, contractSlotA, fr(0x101)); await stateManager.writeStorage(contractAddress, contractSlotB, fr(0x151)); await stateManager.readStorage(contractAddress, contractSlotA); }, - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { // mock storage writes on the state manager await stateManager.writeStorage(contractAddress, contractSlotA, fr(0x103)); await stateManager.writeStorage(contractAddress, contractSlotC, fr(0x201)); @@ -564,20 +564,20 @@ describe('public_tx_simulator', () => { const siloedNullifiers = [new Fr(0x10000), new Fr(0x20000), new Fr(0x30000), new Fr(0x40000), new Fr(0x50000)]; mockPublicExecutor([ // SETUP - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[0]); }, // APP LOGIC - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[1]); await stateManager.writeSiloedNullifier(siloedNullifiers[2]); }, - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[3]); return Promise.resolve(appLogicFailure); }, // TEARDOWN - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[4]); }, ]); @@ -650,19 +650,19 @@ describe('public_tx_simulator', () => { const siloedNullifiers = [new Fr(10000), new Fr(20000), new Fr(30000), new Fr(40000), new Fr(50000)]; mockPublicExecutor([ // SETUP - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[0]); }, // APP LOGIC - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[1]); await stateManager.writeSiloedNullifier(siloedNullifiers[2]); }, - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[3]); }, // TEARDOWN - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[4]); return Promise.resolve(teardownFailure); }, @@ -733,20 +733,20 @@ describe('public_tx_simulator', () => { const siloedNullifiers = [new Fr(10000), new Fr(20000), new Fr(30000), new Fr(40000), new Fr(50000)]; mockPublicExecutor([ // SETUP - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[0]); }, // APP LOGIC - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[1]); await stateManager.writeSiloedNullifier(siloedNullifiers[2]); }, - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[3]); return Promise.resolve(appLogicFailure); }, // TEARDOWN - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[4]); return Promise.resolve(teardownFailure); }, @@ -818,19 +818,19 @@ describe('public_tx_simulator', () => { mockPublicExecutor([ // SETUP - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[0]); }, // APP LOGIC - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[1]); await stateManager.writeSiloedNullifier(siloedNullifiers[2]); }, - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[3]); }, // TEARDOWN - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[4]); }, ]); @@ -855,20 +855,20 @@ describe('public_tx_simulator', () => { const siloedNullifiers = [new Fr(10000), new Fr(20000), new Fr(30000), new Fr(40000), new Fr(50000)]; mockPublicExecutor([ // SETUP - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[0]); }, // APP LOGIC - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[1]); await stateManager.writeSiloedNullifier(siloedNullifiers[2]); }, - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[3]); return Promise.resolve(appLogicFailure); }, // TEARDOWN - async (stateManager: AvmPersistableStateManager) => { + async (stateManager: PublicPersistableStateManager) => { await stateManager.writeSiloedNullifier(siloedNullifiers[4]); }, ]); diff --git a/yarn-project/simulator/src/public/public_tx_simulator/public_tx_simulator.ts b/yarn-project/simulator/src/public/public_tx_simulator/public_tx_simulator.ts index b31ba4895a68..c8a070f05a72 100644 --- a/yarn-project/simulator/src/public/public_tx_simulator/public_tx_simulator.ts +++ b/yarn-project/simulator/src/public/public_tx_simulator/public_tx_simulator.ts @@ -25,9 +25,10 @@ import { strict as assert } from 'assert'; import { getPublicFunctionDebugName } from '../../common/debug_fn_name.js'; import type { AvmFinalizedCallResult } from '../avm/avm_contract_call_result.js'; -import { type AvmPersistableStateManager, AvmSimulator } from '../avm/index.js'; -import { NullifierCollisionError } from '../avm/journal/nullifiers.js'; +import { AvmSimulator } from '../avm/index.js'; import type { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js'; +import { NullifierCollisionError } from '../state_manager/nullifiers.js'; +import type { PublicPersistableStateManager } from '../state_manager/state_manager.js'; import { PublicTxContext } from './public_tx_context.js'; export type ProcessedPhase = { @@ -313,7 +314,7 @@ export class PublicTxSimulator { * @returns The result of execution. */ protected async simulateEnqueuedCallInternal( - stateManager: AvmPersistableStateManager, + stateManager: PublicPersistableStateManager, { request, calldata }: PublicCallRequestWithCalldata, allocatedGas: Gas, transactionFee: Fr, diff --git a/yarn-project/simulator/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts b/yarn-project/simulator/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts index aff10196e728..ddab1ea4bfed 100644 --- a/yarn-project/simulator/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts +++ b/yarn-project/simulator/src/public/public_tx_simulator/telemetry_public_tx_simulator.ts @@ -4,9 +4,9 @@ import { type GlobalVariables, PublicCallRequestWithCalldata, TxExecutionPhase } import { Attributes, type TelemetryClient, type Tracer, getTelemetryClient, trackSpan } from '@aztec/telemetry-client'; import type { AvmFinalizedCallResult } from '../avm/avm_contract_call_result.js'; -import type { AvmPersistableStateManager } from '../avm/index.js'; import { ExecutorMetrics } from '../executor_metrics.js'; import type { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js'; +import type { PublicPersistableStateManager } from '../state_manager/state_manager.js'; import { MeasuredPublicTxSimulator } from './measured_public_tx_simulator.js'; import { PublicTxContext } from './public_tx_context.js'; @@ -51,7 +51,7 @@ export class TelemetryPublicTxSimulator extends MeasuredPublicTxSimulator { }), ) protected override async simulateEnqueuedCallInternal( - stateManager: AvmPersistableStateManager, + stateManager: PublicPersistableStateManager, callRequest: PublicCallRequestWithCalldata, allocatedGas: Gas, transactionFee: Fr, diff --git a/yarn-project/simulator/src/public/state_manager/index.ts b/yarn-project/simulator/src/public/state_manager/index.ts new file mode 100644 index 000000000000..564e7e0c813a --- /dev/null +++ b/yarn-project/simulator/src/public/state_manager/index.ts @@ -0,0 +1 @@ +export * from './state_manager.js'; diff --git a/yarn-project/simulator/src/public/avm/journal/nullifiers.test.ts b/yarn-project/simulator/src/public/state_manager/nullifiers.test.ts similarity index 98% rename from yarn-project/simulator/src/public/avm/journal/nullifiers.test.ts rename to yarn-project/simulator/src/public/state_manager/nullifiers.test.ts index 1294f334a84a..8ca8936a94a4 100644 --- a/yarn-project/simulator/src/public/avm/journal/nullifiers.test.ts +++ b/yarn-project/simulator/src/public/state_manager/nullifiers.test.ts @@ -2,7 +2,7 @@ import { Fr } from '@aztec/foundation/fields'; import { type MockProxy, mock } from 'jest-mock-extended'; -import type { PublicTreesDB } from '../../public_db_sources.js'; +import type { PublicTreesDB } from '../public_db_sources.js'; import { NullifierManager } from './nullifiers.js'; describe('avm nullifier caching', () => { diff --git a/yarn-project/simulator/src/public/avm/journal/nullifiers.ts b/yarn-project/simulator/src/public/state_manager/nullifiers.ts similarity index 98% rename from yarn-project/simulator/src/public/avm/journal/nullifiers.ts rename to yarn-project/simulator/src/public/state_manager/nullifiers.ts index 74fda79693c1..a593d637e07c 100644 --- a/yarn-project/simulator/src/public/avm/journal/nullifiers.ts +++ b/yarn-project/simulator/src/public/state_manager/nullifiers.ts @@ -1,6 +1,6 @@ import type { Fr } from '@aztec/foundation/fields'; -import type { PublicTreesDB } from '../../public_db_sources.js'; +import type { PublicTreesDB } from '../public_db_sources.js'; /** * A class to manage new nullifier staging and existence checks during a contract call's AVM simulation. diff --git a/yarn-project/simulator/src/public/avm/journal/public_storage.test.ts b/yarn-project/simulator/src/public/state_manager/public_storage.test.ts similarity index 98% rename from yarn-project/simulator/src/public/avm/journal/public_storage.test.ts rename to yarn-project/simulator/src/public/state_manager/public_storage.test.ts index f77c234e14a0..a79017dfd222 100644 --- a/yarn-project/simulator/src/public/avm/journal/public_storage.test.ts +++ b/yarn-project/simulator/src/public/state_manager/public_storage.test.ts @@ -3,7 +3,7 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address'; import { type MockProxy, mock } from 'jest-mock-extended'; -import type { PublicStateDBInterface } from '../../../common/db_interfaces.js'; +import type { PublicStateDBInterface } from '../../common/db_interfaces.js'; import { PublicStorage } from './public_storage.js'; describe('avm public storage', () => { diff --git a/yarn-project/simulator/src/public/avm/journal/public_storage.ts b/yarn-project/simulator/src/public/state_manager/public_storage.ts similarity index 98% rename from yarn-project/simulator/src/public/avm/journal/public_storage.ts rename to yarn-project/simulator/src/public/state_manager/public_storage.ts index 02f4a4addc9c..e02f5d3099d5 100644 --- a/yarn-project/simulator/src/public/avm/journal/public_storage.ts +++ b/yarn-project/simulator/src/public/state_manager/public_storage.ts @@ -1,7 +1,7 @@ import { Fr } from '@aztec/foundation/fields'; import type { AztecAddress } from '@aztec/stdlib/aztec-address'; -import type { PublicStateDBInterface } from '../../../common/db_interfaces.js'; +import type { PublicStateDBInterface } from '../../common/db_interfaces.js'; type PublicStorageReadResult = { value: Fr; diff --git a/yarn-project/simulator/src/public/avm/journal/journal.test.ts b/yarn-project/simulator/src/public/state_manager/state_manager.test.ts similarity index 97% rename from yarn-project/simulator/src/public/avm/journal/journal.test.ts rename to yarn-project/simulator/src/public/state_manager/state_manager.test.ts index 9c87a98b31b2..4be91091b729 100644 --- a/yarn-project/simulator/src/public/avm/journal/journal.test.ts +++ b/yarn-project/simulator/src/public/state_manager/state_manager.test.ts @@ -7,9 +7,7 @@ import { makeContractClassPublic } from '@aztec/stdlib/testing'; import { mock } from 'jest-mock-extended'; -import type { PublicSideEffectTraceInterface } from '../../../public/side_effect_trace_interface.js'; -import type { PublicContractsDB, PublicTreesDB } from '../../public_db_sources.js'; -import { initPersistableStateManager } from '../fixtures/index.js'; +import { initPersistableStateManager } from '../avm/fixtures/index.js'; import { mockGetBytecodeCommitment, mockGetContractClass, @@ -19,10 +17,12 @@ import { mockNoteHashCount, mockNoteHashExists, mockStorageRead, -} from '../test_utils.js'; -import type { AvmPersistableStateManager } from './journal.js'; +} from '../avm/test_utils.js'; +import type { PublicContractsDB, PublicTreesDB } from '../public_db_sources.js'; +import type { PublicSideEffectTraceInterface } from '../side_effect_trace_interface.js'; +import type { PublicPersistableStateManager } from './state_manager.js'; -describe('journal', () => { +describe('state_manager', () => { let address: AztecAddress; const utxo = Fr.random(); const leafIndex = Fr.random(); @@ -31,7 +31,7 @@ describe('journal', () => { let treesDB: PublicTreesDB; let contractsDB: PublicContractsDB; let trace: PublicSideEffectTraceInterface; - let persistableState: AvmPersistableStateManager; + let persistableState: PublicPersistableStateManager; beforeEach(async () => { address = await AztecAddress.random(); diff --git a/yarn-project/simulator/src/public/avm/journal/journal.ts b/yarn-project/simulator/src/public/state_manager/state_manager.ts similarity index 95% rename from yarn-project/simulator/src/public/avm/journal/journal.ts rename to yarn-project/simulator/src/public/state_manager/state_manager.ts index 127e1c19fbe5..e9f74a946eb8 100644 --- a/yarn-project/simulator/src/public/avm/journal/journal.ts +++ b/yarn-project/simulator/src/public/state_manager/state_manager.ts @@ -28,11 +28,11 @@ import { MerkleTreeId } from '@aztec/stdlib/trees'; import { strict as assert } from 'assert'; -import { getPublicFunctionDebugName } from '../../../common/debug_fn_name.js'; -import type { PublicTreesDB } from '../../../public/public_db_sources.js'; -import type { PublicContractsDBInterface } from '../../../server.js'; -import type { PublicSideEffectTraceInterface } from '../../side_effect_trace_interface.js'; -import type { AvmExecutionEnvironment } from '../avm_execution_environment.js'; +import { getPublicFunctionDebugName } from '../../common/debug_fn_name.js'; +import type { PublicContractsDBInterface } from '../../server.js'; +import type { AvmExecutionEnvironment } from '../avm/avm_execution_environment.js'; +import type { PublicTreesDB } from '../public_db_sources.js'; +import type { PublicSideEffectTraceInterface } from '../side_effect_trace_interface.js'; import { NullifierCollisionError, NullifierManager } from './nullifiers.js'; import { PublicStorage } from './public_storage.js'; @@ -45,8 +45,8 @@ import { PublicStorage } from './public_storage.js'; * * Manages merging of successful/reverted child state into current state. */ -export class AvmPersistableStateManager { - private readonly log = createLogger('simulator:avm:state_manager'); +export class PublicPersistableStateManager { + private readonly log = createLogger('simulator:state_manager'); /** Make sure a forked state is never merged twice. */ private alreadyMergedIntoParent = false; @@ -72,8 +72,15 @@ export class AvmPersistableStateManager { doMerkleOperations: boolean = false, firstNullifier: Fr, blockNumber: number, - ): AvmPersistableStateManager { - return new AvmPersistableStateManager(treesDB, contractsDB, trace, firstNullifier, blockNumber, doMerkleOperations); + ): PublicPersistableStateManager { + return new PublicPersistableStateManager( + treesDB, + contractsDB, + trace, + firstNullifier, + blockNumber, + doMerkleOperations, + ); } // DO NOT USE! @@ -87,7 +94,7 @@ export class AvmPersistableStateManager { */ public async fork() { await this.treesDB.createCheckpoint(); - return new AvmPersistableStateManager( + return new PublicPersistableStateManager( this.treesDB, this.contractsDB, this.trace.fork(), @@ -102,18 +109,18 @@ export class AvmPersistableStateManager { /** * Accept forked world state modifications & traced side effects / hints */ - public async merge(forkedState: AvmPersistableStateManager) { + public async merge(forkedState: PublicPersistableStateManager) { await this._merge(forkedState, /*reverted=*/ false); } /** * Reject forked world state modifications & traced side effects, keep traced hints */ - public async reject(forkedState: AvmPersistableStateManager) { + public async reject(forkedState: PublicPersistableStateManager) { await this._merge(forkedState, /*reverted=*/ true); } - private async _merge(forkedState: AvmPersistableStateManager, reverted: boolean) { + private async _merge(forkedState: PublicPersistableStateManager, reverted: boolean) { // sanity check to avoid merging the same forked trace twice assert( !forkedState.alreadyMergedIntoParent,