@aztec/simulator 0.75.0 → 0.76.1
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.
- package/dest/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/avm/avm_machine_state.js +18 -13
- package/dest/avm/avm_memory_types.d.ts +1 -47
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_memory_types.js +42 -144
- package/dest/avm/avm_simulator.d.ts +2 -1
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +23 -7
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.js +8 -15
- package/dest/avm/opcodes/addressing_mode.d.ts.map +1 -1
- package/dest/avm/opcodes/addressing_mode.js +8 -3
- package/dest/avm/opcodes/arithmetic.d.ts.map +1 -1
- package/dest/avm/opcodes/arithmetic.js +2 -3
- package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/avm/opcodes/bitwise.js +3 -5
- package/dest/avm/opcodes/comparators.d.ts.map +1 -1
- package/dest/avm/opcodes/comparators.js +2 -3
- package/dest/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/avm/opcodes/contract.js +2 -3
- package/dest/avm/opcodes/control_flow.d.ts.map +1 -1
- package/dest/avm/opcodes/control_flow.js +2 -6
- package/dest/avm/opcodes/conversion.d.ts.map +1 -1
- package/dest/avm/opcodes/conversion.js +2 -3
- package/dest/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/avm/opcodes/ec_add.js +2 -3
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +2 -3
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +4 -7
- package/dest/avm/opcodes/hashing.d.ts.map +1 -1
- package/dest/avm/opcodes/hashing.js +4 -7
- package/dest/avm/opcodes/memory.d.ts.map +1 -1
- package/dest/avm/opcodes/memory.js +7 -13
- package/dest/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/avm/opcodes/misc.js +2 -3
- package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +1 -1
- package/dest/avm/opcodes/multi_scalar_mul.js +2 -7
- package/dest/avm/opcodes/storage.d.ts.map +1 -1
- package/dest/avm/opcodes/storage.js +3 -5
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts +5 -0
- package/dest/public/fixtures/public_tx_simulation_tester.d.ts.map +1 -1
- package/dest/public/fixtures/public_tx_simulation_tester.js +10 -6
- package/package.json +9 -9
- package/src/avm/avm_machine_state.ts +18 -14
- package/src/avm/avm_memory_types.ts +43 -183
- package/src/avm/avm_simulator.ts +37 -11
- package/src/avm/opcodes/accrued_substate.ts +7 -21
- package/src/avm/opcodes/addressing_mode.ts +9 -2
- package/src/avm/opcodes/arithmetic.ts +1 -3
- package/src/avm/opcodes/bitwise.ts +2 -6
- package/src/avm/opcodes/comparators.ts +1 -3
- package/src/avm/opcodes/contract.ts +1 -3
- package/src/avm/opcodes/control_flow.ts +1 -9
- package/src/avm/opcodes/conversion.ts +1 -3
- package/src/avm/opcodes/ec_add.ts +1 -3
- package/src/avm/opcodes/environment_getters.ts +1 -3
- package/src/avm/opcodes/external_calls.ts +3 -6
- package/src/avm/opcodes/hashing.ts +3 -9
- package/src/avm/opcodes/memory.ts +6 -20
- package/src/avm/opcodes/misc.ts +1 -3
- package/src/avm/opcodes/multi_scalar_mul.ts +1 -7
- package/src/avm/opcodes/storage.ts +2 -6
- package/src/public/fixtures/public_tx_simulation_tester.ts +16 -4
|
@@ -32,7 +32,7 @@ export class SStore extends BaseStorageInstruction {
|
|
|
32
32
|
throw new StaticCallAlterationError();
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
const memory = context.machineState.memory
|
|
35
|
+
const memory = context.machineState.memory;
|
|
36
36
|
context.machineState.consumeGas(this.gasCost());
|
|
37
37
|
|
|
38
38
|
const operands = [this.aOffset, this.bOffset];
|
|
@@ -44,8 +44,6 @@ export class SStore extends BaseStorageInstruction {
|
|
|
44
44
|
const slot = memory.get(slotOffset).toFr();
|
|
45
45
|
const value = memory.get(srcOffset).toFr();
|
|
46
46
|
await context.persistableState.writeStorage(context.environment.address, slot, value);
|
|
47
|
-
|
|
48
|
-
memory.assert({ reads: 2, addressing });
|
|
49
47
|
}
|
|
50
48
|
}
|
|
51
49
|
|
|
@@ -58,7 +56,7 @@ export class SLoad extends BaseStorageInstruction {
|
|
|
58
56
|
}
|
|
59
57
|
|
|
60
58
|
public async execute(context: AvmContext): Promise<void> {
|
|
61
|
-
const memory = context.machineState.memory
|
|
59
|
+
const memory = context.machineState.memory;
|
|
62
60
|
context.machineState.consumeGas(this.gasCost());
|
|
63
61
|
|
|
64
62
|
const operands = [this.aOffset, this.bOffset];
|
|
@@ -69,7 +67,5 @@ export class SLoad extends BaseStorageInstruction {
|
|
|
69
67
|
const slot = memory.get(slotOffset).toFr();
|
|
70
68
|
const value = await context.persistableState.readStorage(context.environment.address, slot);
|
|
71
69
|
memory.set(dstOffset, new Field(value));
|
|
72
|
-
|
|
73
|
-
memory.assert({ writes: 1, reads: 1, addressing });
|
|
74
70
|
}
|
|
75
71
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MerkleTreeId, PublicExecutionRequest, type Tx } from '@aztec/circuit-types';
|
|
1
|
+
import { MerkleTreeId, type MerkleTreeWriteOperations, PublicExecutionRequest, type Tx } from '@aztec/circuit-types';
|
|
2
2
|
import {
|
|
3
3
|
type AvmCircuitPublicInputs,
|
|
4
4
|
CallContext,
|
|
@@ -43,10 +43,20 @@ export type TestEnqueuedCall = {
|
|
|
43
43
|
export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
44
44
|
private txCount = 0;
|
|
45
45
|
|
|
46
|
+
constructor(
|
|
47
|
+
private worldStateDB: WorldStateDB,
|
|
48
|
+
contractDataSource: SimpleContractDataSource,
|
|
49
|
+
merkleTrees: MerkleTreeWriteOperations,
|
|
50
|
+
skipContractDeployments: boolean,
|
|
51
|
+
) {
|
|
52
|
+
super(contractDataSource, merkleTrees, skipContractDeployments);
|
|
53
|
+
}
|
|
54
|
+
|
|
46
55
|
public static async create(skipContractDeployments = false): Promise<PublicTxSimulationTester> {
|
|
47
56
|
const contractDataSource = new SimpleContractDataSource();
|
|
48
57
|
const merkleTrees = await (await NativeWorldStateService.tmp()).fork();
|
|
49
|
-
|
|
58
|
+
const worldStateDB = new WorldStateDB(merkleTrees, contractDataSource);
|
|
59
|
+
return new PublicTxSimulationTester(worldStateDB, contractDataSource, merkleTrees, skipContractDeployments);
|
|
50
60
|
}
|
|
51
61
|
|
|
52
62
|
public async simulateTx(
|
|
@@ -60,8 +70,7 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
60
70
|
globals.timestamp = TIMESTAMP;
|
|
61
71
|
globals.gasFees = DEFAULT_GAS_FEES;
|
|
62
72
|
|
|
63
|
-
const
|
|
64
|
-
const simulator = new PublicTxSimulator(this.merkleTrees, worldStateDB, globals, /*doMerkleOperations=*/ true);
|
|
73
|
+
const simulator = new PublicTxSimulator(this.merkleTrees, this.worldStateDB, globals, /*doMerkleOperations=*/ true);
|
|
65
74
|
|
|
66
75
|
const setupExecutionRequests: PublicExecutionRequest[] = [];
|
|
67
76
|
for (let i = 0; i < setupCalls.length; i++) {
|
|
@@ -118,7 +127,10 @@ export class PublicTxSimulationTester extends BaseAvmSimulationTester {
|
|
|
118
127
|
feePayer,
|
|
119
128
|
);
|
|
120
129
|
|
|
130
|
+
const startTime = performance.now();
|
|
121
131
|
const avmResult = await simulator.simulate(tx);
|
|
132
|
+
const endTime = performance.now();
|
|
133
|
+
this.logger.debug(`Public transaction simulation took ${endTime - startTime}ms`);
|
|
122
134
|
|
|
123
135
|
if (avmResult.revertCode.isOK()) {
|
|
124
136
|
await this.commitTxStateUpdates(avmResult.avmProvingRequest.inputs.publicInputs);
|