Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions yarn-project/circuits.js/src/structs/l2_to_l1_message.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,6 @@ export class L2ToL1Message {
isEmpty(): boolean {
return this.recipient.isZero() && this.content.isZero() && !this.counter;
}

scope(contractAddress: AztecAddress) {
return new ScopedL2ToL1Message(this, contractAddress);
}
}

export class ScopedL2ToL1Message {
Expand Down
4 changes: 0 additions & 4 deletions yarn-project/circuits.js/src/structs/log_hash.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,6 @@ export class LogHash implements Ordered {
return `value=${this.value} counter=${this.counter} length=${this.length}`;
}

scope(contractAddress: AztecAddress) {
return new ScopedLogHash(this, contractAddress);
}

[inspect.custom](): string {
return `LogHash { ${this.toString()} }`;
}
Expand Down
13 changes: 3 additions & 10 deletions yarn-project/prover-client/src/mocks/test_context.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,7 @@ import {
type Tx,
type TxValidator,
} from '@aztec/circuit-types';
import {
type CombinedConstantData,
type Gas,
type GlobalVariables,
Header,
type Nullifier,
type TxContext,
} from '@aztec/circuits.js';
import { type Gas, type GlobalVariables, Header, type Nullifier, type TxContext } from '@aztec/circuits.js';
import { type Fr } from '@aztec/foundation/fields';
import { type DebugLogger } from '@aztec/foundation/log';
import { openTmpStore } from '@aztec/kv-store/utils';
Expand Down Expand Up @@ -162,7 +155,7 @@ export class TestContext {
) {
const defaultExecutorImplementation = (
execution: PublicExecutionRequest,
_constants: CombinedConstantData,
_globalVariables: GlobalVariables,
availableGas: Gas,
_txContext: TxContext,
_pendingNullifiers: Nullifier[],
Expand Down Expand Up @@ -202,7 +195,7 @@ export class TestContext {
txValidator?: TxValidator<ProcessedTx>,
executorMock?: (
execution: PublicExecutionRequest,
constants: CombinedConstantData,
globalVariables: GlobalVariables,
availableGas: Gas,
txContext: TxContext,
pendingNullifiers: Nullifier[],
Expand Down
75 changes: 1 addition & 74 deletions yarn-project/simulator/src/avm/avm_simulator.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import { type Fieldable } from '@aztec/foundation/serialize';
import { randomInt } from 'crypto';
import { mock } from 'jest-mock-extended';

import { PublicEnqueuedCallSideEffectTrace } from '../public/enqueued_call_side_effect_trace.js';
import { type WorldStateDB } from '../public/public_db_sources.js';
import { type PublicSideEffectTraceInterface } from '../public/side_effect_trace_interface.js';
import { type AvmContext } from './avm_context.js';
Expand All @@ -31,23 +30,7 @@ import {
resolveAvmTestContractAssertionMessage,
} from './fixtures/index.js';
import { type AvmPersistableStateManager } from './journal/journal.js';
import {
Add,
CalldataCopy,
EmitNoteHash,
EmitNullifier,
EmitUnencryptedLog,
type Instruction,
Jump,
L1ToL2MessageExists,
NoteHashExists,
NullifierExists,
Return,
SLoad,
SStore,
SendL2ToL1Message,
Set,
} from './opcodes/index.js';
import { Add, CalldataCopy, Return, Set } from './opcodes/index.js';
import { encodeToBytecode } from './serialization/bytecode_serialization.js';
import { Opcode } from './serialization/instruction_serialization.js';
import {
Expand Down Expand Up @@ -953,62 +936,6 @@ describe('AVM simulator: transpiled Noir contracts', () => {
);
});
});

describe('Side effect trace errors on overflow', () => {
const trace = new PublicEnqueuedCallSideEffectTrace();
const persistableState = initPersistableStateManager({ worldStateDB, trace });

it.each([
['Public storage writes', () => new SStore(/*indirect=*/ 0, /*srcOffset=*/ 0, /*slotOffset=*/ 0)],
['Public storage reads', () => new SLoad(/*indirect=*/ 0, /*slotOffset=*/ 0, /*dstOffset=*/ 0)],
[
'Note hash checks',
() => new NoteHashExists(/*indirect=*/ 0, /*noteHashOffset=*/ 0, /*leafIndexOffest=*/ 0, /*existsOffset=*/ 1),
],
['New note hashes', () => new EmitNoteHash(/*indirect=*/ 0, /*noteHashOffset=*/ 0)],
[
'Nullifier checks',
() => new NullifierExists(/*indirect=*/ 0, /*nullifierOffset=*/ 0, /*addressOffest=*/ 0, /*existsOffset=*/ 1),
],
['New nullifiers', () => new EmitNullifier(/*indirect=*/ 0, /*noteHashOffset=*/ 0)],
[
'L1 to L2 message checks',
() =>
new L1ToL2MessageExists(
/*indirect=*/ 0,
/*msgHashOffset=*/ 0,
/*msgLeafIndexOffest=*/ 0,
/*existsOffset=*/ 1,
),
],
['New unencrypted logs', () => new EmitUnencryptedLog(/*indirect=*/ 0, /*logOffset=*/ 0, /*logSizeOffest=*/ 1)],
[
'New L1 to L2 messages',
() => new SendL2ToL1Message(/*indirect=*/ 0, /*recipientOffset=*/ 0, /*contentOffest=*/ 0),
],
])(`Overrun of %s`, async (_sideEffectType: string, createInstr: () => Instruction) => {
const bytecode = encodeToBytecode([
new Set(/*indirect*/ 0, TypeTag.FIELD, /*value*/ 0, /*dstOffset*/ 0).as(Opcode.SET_8, Set.wireFormat8),
new Set(/*indirect*/ 0, TypeTag.FIELD, /*value*/ 100, /*dstOffset*/ 100).as(Opcode.SET_8, Set.wireFormat8),
new Set(/*indirect*/ 0, TypeTag.UINT32, /*value*/ 1, /*dstOffset*/ 1).as(Opcode.SET_8, Set.wireFormat8),
createInstr(),
// change value at memory offset 0 so each instr operates on a different value (important for nullifier emission)
new Add(/*indirect=*/ 0, TypeTag.FIELD, /*aOffset=*/ 0, /*bOffset=*/ 100, /*dstOffset=*/ 0).as(
Opcode.ADD_8,
Add.wireFormat8,
),
// infinitely loop back to the tested instruction
// infinite loop should break on side effect overrun error,
// but otherwise will run out of gas
new Jump(/*jumpOffset*/ 2),
]);
const context = initContext({ persistableState });
const results = await new AvmSimulator(context).executeBytecode(markBytecodeAsAvm(bytecode));
expect(results.reverted).toBe(true);
expect(results.output).toEqual([]);
expect(results.revertReason?.message).toMatch('Reached the limit');
});
});
});
});

Expand Down
3 changes: 1 addition & 2 deletions yarn-project/simulator/src/avm/avm_simulator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log';

import { strict as assert } from 'assert';

import { SideEffectLimitReachedError } from '../public/side_effect_errors.js';
import type { AvmContext } from './avm_context.js';
import { AvmContractCallResult } from './avm_contract_call_result.js';
import { isAvmBytecode } from './bytecode_utils.js';
Expand Down Expand Up @@ -99,7 +98,7 @@ export class AvmSimulator {
return results;
} catch (err: any) {
this.log.verbose('Exceptional halt (revert by something other than REVERT opcode)');
if (!(err instanceof AvmExecutionError || err instanceof SideEffectLimitReachedError)) {
if (!(err instanceof AvmExecutionError)) {
this.log.verbose(`Unknown error thrown by AVM: ${err}`);
throw err;
}
Expand Down
4 changes: 2 additions & 2 deletions yarn-project/simulator/src/avm/journal/journal.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { AztecAddress, type FunctionSelector, type Gas } from '@aztec/circuits.js';
import { Fr } from '@aztec/foundation/fields';
import { createDebugLogger } from '@aztec/foundation/log';
import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log';
import { SerializableContractInstance } from '@aztec/types/contracts';

import { getPublicFunctionDebugName } from '../../common/debug_fn_name.js';
Expand All @@ -22,7 +22,7 @@ import { PublicStorage } from './public_storage.js';
* Manages merging of successful/reverted child state into current state.
*/
export class AvmPersistableStateManager {
private readonly log = createDebugLogger('aztec:avm_simulator:state_manager');
private readonly log: DebugLogger = createDebugLogger('aztec:avm_simulator:state_manager');

constructor(
/** Reference to node storage */
Expand Down
169 changes: 0 additions & 169 deletions yarn-project/simulator/src/public/dual_side_effect_trace.ts

This file was deleted.

Loading