@aztec/simulator 0.66.0 → 0.67.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/acvm/acvm.js +3 -3
- package/dest/acvm/oracle/oracle.d.ts +1 -1
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +3 -3
- package/dest/acvm/oracle/typed_oracle.d.ts +2 -2
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +3 -3
- package/dest/acvm/serialize.js +2 -2
- package/dest/avm/avm_context.d.ts +2 -2
- package/dest/avm/avm_context.d.ts.map +1 -1
- package/dest/avm/avm_context.js +3 -4
- package/dest/avm/avm_execution_environment.d.ts +4 -6
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +8 -13
- package/dest/avm/avm_memory_types.d.ts +2 -2
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_memory_types.js +3 -3
- package/dest/avm/avm_simulator.d.ts +3 -3
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +22 -13
- package/dest/avm/errors.d.ts +3 -3
- package/dest/avm/errors.d.ts.map +1 -1
- package/dest/avm/errors.js +8 -15
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +4 -4
- package/dest/avm/journal/journal.d.ts +15 -4
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +108 -29
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +4 -11
- package/dest/avm/opcodes/misc.d.ts.map +1 -1
- package/dest/avm/opcodes/misc.js +3 -3
- package/dest/client/client_execution_context.d.ts +3 -3
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +14 -8
- package/dest/client/db_oracle.d.ts +2 -2
- package/dest/client/db_oracle.d.ts.map +1 -1
- package/dest/client/execution_note_cache.d.ts +9 -1
- package/dest/client/execution_note_cache.d.ts.map +1 -1
- package/dest/client/execution_note_cache.js +10 -3
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +4 -4
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +4 -4
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +3 -3
- package/dest/client/view_data_oracle.d.ts +2 -2
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +5 -6
- package/dest/common/debug_fn_name.d.ts +2 -2
- package/dest/common/debug_fn_name.d.ts.map +1 -1
- package/dest/common/debug_fn_name.js +8 -14
- package/dest/providers/acvm_native.js +4 -4
- package/dest/providers/factory.d.ts +2 -2
- package/dest/providers/factory.d.ts.map +1 -1
- package/dest/providers/factory.js +4 -4
- package/dest/public/enqueued_call_side_effect_trace.d.ts +11 -23
- package/dest/public/enqueued_call_side_effect_trace.d.ts.map +1 -1
- package/dest/public/enqueued_call_side_effect_trace.js +37 -58
- package/dest/public/executor_metrics.d.ts.map +1 -1
- package/dest/public/executor_metrics.js +2 -5
- package/dest/public/fixtures/index.d.ts +24 -1
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +15 -9
- package/dest/public/index.d.ts +0 -1
- package/dest/public/index.d.ts.map +1 -1
- package/dest/public/index.js +1 -2
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +4 -4
- package/dest/public/public_processor.d.ts +7 -8
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +30 -22
- package/dest/public/public_tx_context.d.ts +13 -10
- package/dest/public/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_context.js +46 -31
- package/dest/public/public_tx_simulator.d.ts +2 -2
- package/dest/public/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator.js +43 -23
- package/dest/public/side_effect_trace_interface.d.ts +4 -17
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -1
- package/dest/public/transitional_adapters.d.ts +2 -2
- package/dest/public/transitional_adapters.d.ts.map +1 -1
- package/dest/public/transitional_adapters.js +28 -24
- package/package.json +16 -9
- package/src/acvm/acvm.ts +2 -2
- package/src/acvm/oracle/oracle.ts +2 -2
- package/src/acvm/oracle/typed_oracle.ts +3 -3
- package/src/acvm/serialize.ts +1 -1
- package/src/avm/avm_context.ts +2 -3
- package/src/avm/avm_execution_environment.ts +6 -31
- package/src/avm/avm_memory_types.ts +2 -2
- package/src/avm/avm_simulator.ts +24 -20
- package/src/avm/errors.ts +12 -14
- package/src/avm/fixtures/index.ts +2 -3
- package/src/avm/journal/journal.ts +189 -63
- package/src/avm/opcodes/external_calls.ts +3 -19
- package/src/avm/opcodes/misc.ts +2 -2
- package/src/client/client_execution_context.ts +17 -9
- package/src/client/db_oracle.ts +2 -2
- package/src/client/execution_note_cache.ts +13 -3
- package/src/client/private_execution.ts +3 -3
- package/src/client/simulator.ts +4 -4
- package/src/client/unconstrained_execution.ts +2 -2
- package/src/client/view_data_oracle.ts +5 -6
- package/src/common/debug_fn_name.ts +7 -13
- package/src/providers/acvm_native.ts +3 -3
- package/src/providers/factory.ts +3 -3
- package/src/public/enqueued_call_side_effect_trace.ts +54 -74
- package/src/public/executor_metrics.ts +0 -4
- package/src/public/fixtures/index.ts +23 -10
- package/src/public/index.ts +0 -1
- package/src/public/public_db_sources.ts +3 -3
- package/src/public/public_processor.ts +46 -47
- package/src/public/public_tx_context.ts +52 -32
- package/src/public/public_tx_simulator.ts +58 -38
- package/src/public/side_effect_trace_interface.ts +8 -15
- package/src/public/transitional_adapters.ts +39 -24
- package/dest/public/dual_side_effect_trace.d.ts +0 -77
- package/dest/public/dual_side_effect_trace.d.ts.map +0 -1
- package/dest/public/dual_side_effect_trace.js +0 -119
- package/dest/public/side_effect_trace.d.ts +0 -96
- package/dest/public/side_effect_trace.d.ts.map +0 -1
- package/dest/public/side_effect_trace.js +0 -309
- package/src/public/dual_side_effect_trace.ts +0 -242
- package/src/public/side_effect_trace.ts +0 -536
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
type AvmCircuitPublicInputs,
|
|
3
|
-
type
|
|
3
|
+
type AztecAddress,
|
|
4
|
+
Fr,
|
|
4
5
|
type Gas,
|
|
5
6
|
type GasSettings,
|
|
6
7
|
type GlobalVariables,
|
|
7
8
|
MAX_L2_TO_L1_MSGS_PER_TX,
|
|
8
9
|
MAX_NOTE_HASHES_PER_TX,
|
|
9
|
-
|
|
10
|
+
MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
10
11
|
PrivateToAvmAccumulatedData,
|
|
11
12
|
PrivateToAvmAccumulatedDataArrayLengths,
|
|
12
13
|
type PrivateToPublicAccumulatedData,
|
|
@@ -30,6 +31,7 @@ export function generateAvmCircuitPublicInputs(
|
|
|
30
31
|
startStateReference: StateReference,
|
|
31
32
|
startGasUsed: Gas,
|
|
32
33
|
gasSettings: GasSettings,
|
|
34
|
+
feePayer: AztecAddress,
|
|
33
35
|
setupCallRequests: PublicCallRequest[],
|
|
34
36
|
appLogicCallRequests: PublicCallRequest[],
|
|
35
37
|
teardownCallRequests: PublicCallRequest[],
|
|
@@ -52,6 +54,7 @@ export function generateAvmCircuitPublicInputs(
|
|
|
52
54
|
startTreeSnapshots,
|
|
53
55
|
startGasUsed,
|
|
54
56
|
gasSettings,
|
|
57
|
+
feePayer,
|
|
55
58
|
setupCallRequests,
|
|
56
59
|
appLogicCallRequests,
|
|
57
60
|
teardownCallRequests.length ? teardownCallRequests[0] : PublicCallRequest.empty(),
|
|
@@ -83,6 +86,28 @@ export function generateAvmCircuitPublicInputs(
|
|
|
83
86
|
revertibleAccumulatedDataFromPrivate,
|
|
84
87
|
);
|
|
85
88
|
|
|
89
|
+
const txHash = avmCircuitPublicInputs.previousNonRevertibleAccumulatedData.nullifiers[0];
|
|
90
|
+
|
|
91
|
+
// Add nonces to revertible note hashes from private. These don't have nonces since we don't know
|
|
92
|
+
// the final position in the tx until the AVM has executed.
|
|
93
|
+
// TODO: Use the final position in the tx
|
|
94
|
+
for (
|
|
95
|
+
let revertibleIndex = 0;
|
|
96
|
+
revertibleIndex < avmCircuitPublicInputs.previousRevertibleAccumulatedData.noteHashes.length;
|
|
97
|
+
revertibleIndex++
|
|
98
|
+
) {
|
|
99
|
+
const noteHash = avmCircuitPublicInputs.previousRevertibleAccumulatedData.noteHashes[revertibleIndex];
|
|
100
|
+
if (noteHash.isZero()) {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const indexInTx =
|
|
104
|
+
revertibleIndex + avmCircuitPublicInputs.previousNonRevertibleAccumulatedDataArrayLengths.noteHashes;
|
|
105
|
+
|
|
106
|
+
const nonce = computeNoteHashNonce(txHash, indexInTx);
|
|
107
|
+
const uniqueNoteHash = computeUniqueNoteHash(nonce, noteHash);
|
|
108
|
+
avmCircuitPublicInputs.previousRevertibleAccumulatedData.noteHashes[revertibleIndex] = uniqueNoteHash;
|
|
109
|
+
}
|
|
110
|
+
|
|
86
111
|
// merge all revertible & non-revertible side effects into output accumulated data
|
|
87
112
|
const noteHashesFromPrivate = revertCode.isOK()
|
|
88
113
|
? mergeAccumulatedData(
|
|
@@ -95,8 +120,7 @@ export function generateAvmCircuitPublicInputs(
|
|
|
95
120
|
MAX_NOTE_HASHES_PER_TX,
|
|
96
121
|
);
|
|
97
122
|
|
|
98
|
-
|
|
99
|
-
|
|
123
|
+
// Silo and add nonces for note hashes emitted by the AVM
|
|
100
124
|
const scopedNoteHashesFromPublic = trace.getSideEffects().noteHashes;
|
|
101
125
|
for (let i = 0; i < scopedNoteHashesFromPublic.length; i++) {
|
|
102
126
|
const scopedNoteHash = scopedNoteHashesFromPublic[i];
|
|
@@ -104,9 +128,10 @@ export function generateAvmCircuitPublicInputs(
|
|
|
104
128
|
if (!noteHash.isZero()) {
|
|
105
129
|
const noteHashIndexInTx = i + countAccumulatedItems(noteHashesFromPrivate);
|
|
106
130
|
const nonce = computeNoteHashNonce(txHash, noteHashIndexInTx);
|
|
107
|
-
const
|
|
108
|
-
const
|
|
109
|
-
|
|
131
|
+
const siloedNoteHash = siloNoteHash(scopedNoteHash.contractAddress, noteHash);
|
|
132
|
+
const uniqueNoteHash = computeUniqueNoteHash(nonce, siloedNoteHash);
|
|
133
|
+
|
|
134
|
+
avmCircuitPublicInputs.accumulatedData.noteHashes[noteHashIndexInTx] = uniqueNoteHash;
|
|
110
135
|
}
|
|
111
136
|
}
|
|
112
137
|
|
|
@@ -121,28 +146,18 @@ export function generateAvmCircuitPublicInputs(
|
|
|
121
146
|
MAX_L2_TO_L1_MSGS_PER_TX,
|
|
122
147
|
);
|
|
123
148
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
const prevOccurrences = leafSlotOccurences.get(slot) || 0;
|
|
129
|
-
leafSlotOccurences.set(slot, prevOccurrences + 1);
|
|
130
|
-
}
|
|
131
|
-
|
|
149
|
+
// Maps slot to value. Maps in TS are iterable in insertion order, which is exactly what we want for
|
|
150
|
+
// squashing "to the left", where the first occurrence of a slot uses the value of the last write to it,
|
|
151
|
+
// and the rest occurrences are omitted
|
|
152
|
+
const squashedPublicDataWrites: Map<bigint, Fr> = new Map();
|
|
132
153
|
for (const publicDataWrite of avmCircuitPublicInputs.accumulatedData.publicDataWrites) {
|
|
133
|
-
|
|
134
|
-
const prevOccurrences = leafSlotOccurences.get(slot) || 0;
|
|
135
|
-
if (prevOccurrences === 1) {
|
|
136
|
-
dedupedPublicDataWrites.push(publicDataWrite);
|
|
137
|
-
} else {
|
|
138
|
-
leafSlotOccurences.set(slot, prevOccurrences - 1);
|
|
139
|
-
}
|
|
154
|
+
squashedPublicDataWrites.set(publicDataWrite.leafSlot.toBigInt(), publicDataWrite.value);
|
|
140
155
|
}
|
|
141
156
|
|
|
142
157
|
avmCircuitPublicInputs.accumulatedData.publicDataWrites = padArrayEnd(
|
|
143
|
-
|
|
158
|
+
Array.from(squashedPublicDataWrites.entries()).map(([slot, value]) => new PublicDataWrite(new Fr(slot), value)),
|
|
144
159
|
PublicDataWrite.empty(),
|
|
145
|
-
|
|
160
|
+
MAX_TOTAL_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
146
161
|
);
|
|
147
162
|
//console.log(`AvmCircuitPublicInputs:\n${inspect(avmCircuitPublicInputs)}`);
|
|
148
163
|
return avmCircuitPublicInputs;
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
-
import { type UnencryptedL2Log } from '@aztec/circuit-types';
|
|
4
|
-
import { type ContractClassIdPreimage, type Gas, type NullifierLeafPreimage, type PublicCallRequest, type PublicDataTreeLeafPreimage, type SerializableContractInstance } from '@aztec/circuits.js';
|
|
5
|
-
import { type AztecAddress } from '@aztec/foundation/aztec-address';
|
|
6
|
-
import { type Fr } from '@aztec/foundation/fields';
|
|
7
|
-
import { type AvmContractCallResult, type AvmFinalizedCallResult } from '../avm/avm_contract_call_result.js';
|
|
8
|
-
import { type AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
|
|
9
|
-
import { type PublicEnqueuedCallSideEffectTrace } from './enqueued_call_side_effect_trace.js';
|
|
10
|
-
import { type EnqueuedPublicCallExecutionResultWithSideEffects, type PublicFunctionCallResult } from './execution.js';
|
|
11
|
-
import { type PublicSideEffectTrace } from './side_effect_trace.js';
|
|
12
|
-
import { type PublicSideEffectTraceInterface } from './side_effect_trace_interface.js';
|
|
13
|
-
export declare class DualSideEffectTrace implements PublicSideEffectTraceInterface {
|
|
14
|
-
readonly innerCallTrace: PublicSideEffectTrace;
|
|
15
|
-
readonly enqueuedCallTrace: PublicEnqueuedCallSideEffectTrace;
|
|
16
|
-
constructor(innerCallTrace: PublicSideEffectTrace, enqueuedCallTrace: PublicEnqueuedCallSideEffectTrace);
|
|
17
|
-
fork(): DualSideEffectTrace;
|
|
18
|
-
merge(nestedTrace: this, reverted?: boolean): void;
|
|
19
|
-
getCounter(): number;
|
|
20
|
-
tracePublicStorageRead(contractAddress: AztecAddress, slot: Fr, value: Fr, leafPreimage: PublicDataTreeLeafPreimage, leafIndex: Fr, path: Fr[]): void;
|
|
21
|
-
tracePublicStorageWrite(contractAddress: AztecAddress, slot: Fr, value: Fr, lowLeafPreimage: PublicDataTreeLeafPreimage, lowLeafIndex: Fr, lowLeafPath: Fr[], newLeafPreimage: PublicDataTreeLeafPreimage, insertionPath: Fr[]): void;
|
|
22
|
-
traceNoteHashCheck(contractAddress: AztecAddress, noteHash: Fr, leafIndex: Fr, exists: boolean, path: Fr[]): void;
|
|
23
|
-
traceNewNoteHash(contractAddress: AztecAddress, noteHash: Fr, leafIndex: Fr, path: Fr[]): void;
|
|
24
|
-
traceNullifierCheck(siloedNullifier: Fr, exists: boolean, lowLeafPreimage: NullifierLeafPreimage, lowLeafIndex: Fr, lowLeafPath: Fr[]): void;
|
|
25
|
-
traceNewNullifier(siloedNullifier: Fr, lowLeafPreimage: NullifierLeafPreimage, lowLeafIndex: Fr, lowLeafPath: Fr[], insertionPath: Fr[]): void;
|
|
26
|
-
traceL1ToL2MessageCheck(contractAddress: AztecAddress, msgHash: Fr, msgLeafIndex: Fr, exists: boolean, path: Fr[]): void;
|
|
27
|
-
traceNewL2ToL1Message(contractAddress: AztecAddress, recipient: Fr, content: Fr): void;
|
|
28
|
-
traceUnencryptedLog(contractAddress: AztecAddress, log: Fr[]): void;
|
|
29
|
-
traceGetContractInstance(contractAddress: AztecAddress, exists: boolean, instance: SerializableContractInstance | undefined): void;
|
|
30
|
-
traceGetBytecode(contractAddress: AztecAddress, exists: boolean, bytecode: Buffer, contractInstance: SerializableContractInstance | undefined, contractClass: ContractClassIdPreimage | undefined): void;
|
|
31
|
-
/**
|
|
32
|
-
* Trace a nested call.
|
|
33
|
-
* Accept some results from a finished nested call's trace into this one.
|
|
34
|
-
*/
|
|
35
|
-
traceNestedCall(
|
|
36
|
-
/** The trace of the nested call. */
|
|
37
|
-
nestedCallTrace: this,
|
|
38
|
-
/** The execution environment of the nested call. */
|
|
39
|
-
nestedEnvironment: AvmExecutionEnvironment,
|
|
40
|
-
/** How much gas was available for this public execution. */
|
|
41
|
-
startGasLeft: Gas,
|
|
42
|
-
/** Bytecode used for this execution. */
|
|
43
|
-
bytecode: Buffer,
|
|
44
|
-
/** The call's results */
|
|
45
|
-
avmCallResults: AvmContractCallResult,
|
|
46
|
-
/** Function name for logging */
|
|
47
|
-
functionName?: string): void;
|
|
48
|
-
traceEnqueuedCall(
|
|
49
|
-
/** The call request from private that enqueued this call. */
|
|
50
|
-
publicCallRequest: PublicCallRequest,
|
|
51
|
-
/** The call's calldata */
|
|
52
|
-
calldata: Fr[],
|
|
53
|
-
/** Did the call revert? */
|
|
54
|
-
reverted: boolean): void;
|
|
55
|
-
/**
|
|
56
|
-
* Convert this trace to a PublicExecutionResult for use externally to the simulator.
|
|
57
|
-
*/
|
|
58
|
-
toPublicEnqueuedCallExecutionResult(
|
|
59
|
-
/** The call's results */
|
|
60
|
-
avmCallResults: AvmFinalizedCallResult): EnqueuedPublicCallExecutionResultWithSideEffects;
|
|
61
|
-
/**
|
|
62
|
-
* Convert this trace to a PublicExecutionResult for use externally to the simulator.
|
|
63
|
-
*/
|
|
64
|
-
toPublicFunctionCallResult(
|
|
65
|
-
/** The execution environment of the nested call. */
|
|
66
|
-
avmEnvironment: AvmExecutionEnvironment,
|
|
67
|
-
/** How much gas was available for this public execution. */
|
|
68
|
-
startGasLeft: Gas,
|
|
69
|
-
/** Bytecode used for this execution. */
|
|
70
|
-
bytecode: Buffer,
|
|
71
|
-
/** The call's results */
|
|
72
|
-
avmCallResults: AvmFinalizedCallResult,
|
|
73
|
-
/** Function name for logging */
|
|
74
|
-
functionName?: string): PublicFunctionCallResult;
|
|
75
|
-
getUnencryptedLogs(): UnencryptedL2Log[];
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=dual_side_effect_trace.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dual_side_effect_trace.d.ts","sourceRoot":"","sources":["../../src/public/dual_side_effect_trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { assert } from 'console';
|
|
2
|
-
export class DualSideEffectTrace {
|
|
3
|
-
constructor(innerCallTrace, enqueuedCallTrace) {
|
|
4
|
-
this.innerCallTrace = innerCallTrace;
|
|
5
|
-
this.enqueuedCallTrace = enqueuedCallTrace;
|
|
6
|
-
}
|
|
7
|
-
fork() {
|
|
8
|
-
return new DualSideEffectTrace(this.innerCallTrace.fork(), this.enqueuedCallTrace.fork());
|
|
9
|
-
}
|
|
10
|
-
merge(nestedTrace, reverted = false) {
|
|
11
|
-
this.enqueuedCallTrace.merge(nestedTrace.enqueuedCallTrace, reverted);
|
|
12
|
-
}
|
|
13
|
-
getCounter() {
|
|
14
|
-
assert(this.innerCallTrace.getCounter() == this.enqueuedCallTrace.getCounter());
|
|
15
|
-
return this.innerCallTrace.getCounter();
|
|
16
|
-
}
|
|
17
|
-
tracePublicStorageRead(contractAddress, slot, value, leafPreimage, leafIndex, path) {
|
|
18
|
-
this.innerCallTrace.tracePublicStorageRead(contractAddress, slot, value, leafPreimage, leafIndex, path);
|
|
19
|
-
this.enqueuedCallTrace.tracePublicStorageRead(contractAddress, slot, value, leafPreimage, leafIndex, path);
|
|
20
|
-
}
|
|
21
|
-
tracePublicStorageWrite(contractAddress, slot, value, lowLeafPreimage, lowLeafIndex, lowLeafPath, newLeafPreimage, insertionPath) {
|
|
22
|
-
this.innerCallTrace.tracePublicStorageWrite(contractAddress, slot, value, lowLeafPreimage, lowLeafIndex, lowLeafPath, newLeafPreimage, insertionPath);
|
|
23
|
-
this.enqueuedCallTrace.tracePublicStorageWrite(contractAddress, slot, value, lowLeafPreimage, lowLeafIndex, lowLeafPath, newLeafPreimage, insertionPath);
|
|
24
|
-
}
|
|
25
|
-
// TODO(8287): _exists can be removed once we have the vm properly handling the equality check
|
|
26
|
-
traceNoteHashCheck(contractAddress, noteHash, leafIndex, exists, path) {
|
|
27
|
-
this.innerCallTrace.traceNoteHashCheck(contractAddress, noteHash, leafIndex, exists, path);
|
|
28
|
-
this.enqueuedCallTrace.traceNoteHashCheck(contractAddress, noteHash, leafIndex, exists, path);
|
|
29
|
-
}
|
|
30
|
-
traceNewNoteHash(contractAddress, noteHash, leafIndex, path) {
|
|
31
|
-
this.innerCallTrace.traceNewNoteHash(contractAddress, noteHash, leafIndex, path);
|
|
32
|
-
this.enqueuedCallTrace.traceNewNoteHash(contractAddress, noteHash, leafIndex, path);
|
|
33
|
-
}
|
|
34
|
-
traceNullifierCheck(siloedNullifier, exists, lowLeafPreimage, lowLeafIndex, lowLeafPath) {
|
|
35
|
-
this.innerCallTrace.traceNullifierCheck(siloedNullifier, exists, lowLeafPreimage, lowLeafIndex, lowLeafPath);
|
|
36
|
-
this.enqueuedCallTrace.traceNullifierCheck(siloedNullifier, exists, lowLeafPreimage, lowLeafIndex, lowLeafPath);
|
|
37
|
-
}
|
|
38
|
-
traceNewNullifier(siloedNullifier, lowLeafPreimage, lowLeafIndex, lowLeafPath, insertionPath) {
|
|
39
|
-
this.innerCallTrace.traceNewNullifier(siloedNullifier, lowLeafPreimage, lowLeafIndex, lowLeafPath, insertionPath);
|
|
40
|
-
this.enqueuedCallTrace.traceNewNullifier(siloedNullifier, lowLeafPreimage, lowLeafIndex, lowLeafPath, insertionPath);
|
|
41
|
-
}
|
|
42
|
-
traceL1ToL2MessageCheck(contractAddress, msgHash, msgLeafIndex, exists, path) {
|
|
43
|
-
this.innerCallTrace.traceL1ToL2MessageCheck(contractAddress, msgHash, msgLeafIndex, exists, path);
|
|
44
|
-
this.enqueuedCallTrace.traceL1ToL2MessageCheck(contractAddress, msgHash, msgLeafIndex, exists, path);
|
|
45
|
-
}
|
|
46
|
-
traceNewL2ToL1Message(contractAddress, recipient, content) {
|
|
47
|
-
this.innerCallTrace.traceNewL2ToL1Message(contractAddress, recipient, content);
|
|
48
|
-
this.enqueuedCallTrace.traceNewL2ToL1Message(contractAddress, recipient, content);
|
|
49
|
-
}
|
|
50
|
-
traceUnencryptedLog(contractAddress, log) {
|
|
51
|
-
this.innerCallTrace.traceUnencryptedLog(contractAddress, log);
|
|
52
|
-
this.enqueuedCallTrace.traceUnencryptedLog(contractAddress, log);
|
|
53
|
-
}
|
|
54
|
-
traceGetContractInstance(contractAddress, exists, instance) {
|
|
55
|
-
this.innerCallTrace.traceGetContractInstance(contractAddress, exists, instance);
|
|
56
|
-
this.enqueuedCallTrace.traceGetContractInstance(contractAddress, exists, instance);
|
|
57
|
-
}
|
|
58
|
-
traceGetBytecode(contractAddress, exists, bytecode, contractInstance, contractClass) {
|
|
59
|
-
this.innerCallTrace.traceGetBytecode(contractAddress, exists, bytecode, contractInstance, contractClass);
|
|
60
|
-
this.enqueuedCallTrace.traceGetBytecode(contractAddress, exists, bytecode, contractInstance, contractClass);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Trace a nested call.
|
|
64
|
-
* Accept some results from a finished nested call's trace into this one.
|
|
65
|
-
*/
|
|
66
|
-
traceNestedCall(
|
|
67
|
-
/** The trace of the nested call. */
|
|
68
|
-
nestedCallTrace,
|
|
69
|
-
/** The execution environment of the nested call. */
|
|
70
|
-
nestedEnvironment,
|
|
71
|
-
/** How much gas was available for this public execution. */
|
|
72
|
-
startGasLeft,
|
|
73
|
-
/** Bytecode used for this execution. */
|
|
74
|
-
bytecode,
|
|
75
|
-
/** The call's results */
|
|
76
|
-
avmCallResults,
|
|
77
|
-
/** Function name for logging */
|
|
78
|
-
functionName = 'unknown') {
|
|
79
|
-
this.innerCallTrace.traceNestedCall(nestedCallTrace.innerCallTrace, nestedEnvironment, startGasLeft, bytecode, avmCallResults, functionName);
|
|
80
|
-
this.enqueuedCallTrace.traceNestedCall(nestedCallTrace.enqueuedCallTrace, nestedEnvironment, startGasLeft, bytecode, avmCallResults, functionName);
|
|
81
|
-
}
|
|
82
|
-
traceEnqueuedCall(
|
|
83
|
-
/** The call request from private that enqueued this call. */
|
|
84
|
-
publicCallRequest,
|
|
85
|
-
/** The call's calldata */
|
|
86
|
-
calldata,
|
|
87
|
-
/** Did the call revert? */
|
|
88
|
-
reverted) {
|
|
89
|
-
this.enqueuedCallTrace.traceEnqueuedCall(publicCallRequest, calldata, reverted);
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Convert this trace to a PublicExecutionResult for use externally to the simulator.
|
|
93
|
-
*/
|
|
94
|
-
toPublicEnqueuedCallExecutionResult(
|
|
95
|
-
/** The call's results */
|
|
96
|
-
avmCallResults) {
|
|
97
|
-
return this.enqueuedCallTrace.toPublicEnqueuedCallExecutionResult(avmCallResults);
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Convert this trace to a PublicExecutionResult for use externally to the simulator.
|
|
101
|
-
*/
|
|
102
|
-
toPublicFunctionCallResult(
|
|
103
|
-
/** The execution environment of the nested call. */
|
|
104
|
-
avmEnvironment,
|
|
105
|
-
/** How much gas was available for this public execution. */
|
|
106
|
-
startGasLeft,
|
|
107
|
-
/** Bytecode used for this execution. */
|
|
108
|
-
bytecode,
|
|
109
|
-
/** The call's results */
|
|
110
|
-
avmCallResults,
|
|
111
|
-
/** Function name for logging */
|
|
112
|
-
functionName = 'unknown') {
|
|
113
|
-
return this.innerCallTrace.toPublicFunctionCallResult(avmEnvironment, startGasLeft, bytecode, avmCallResults, functionName);
|
|
114
|
-
}
|
|
115
|
-
getUnencryptedLogs() {
|
|
116
|
-
return this.enqueuedCallTrace.getUnencryptedLogs();
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVhbF9zaWRlX2VmZmVjdF90cmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvZHVhbF9zaWRlX2VmZmVjdF90cmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBU2pDLE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFDa0IsY0FBcUMsRUFDckMsaUJBQW9EO1FBRHBELG1CQUFjLEdBQWQsY0FBYyxDQUF1QjtRQUNyQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1DO0lBQ25FLENBQUM7SUFFRyxJQUFJO1FBQ1QsT0FBTyxJQUFJLG1CQUFtQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFpQixFQUFFLFdBQW9CLEtBQUs7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLFVBQVU7UUFDZixNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNoRixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVNLHNCQUFzQixDQUMzQixlQUE2QixFQUM3QixJQUFRLEVBQ1IsS0FBUyxFQUNULFlBQXdDLEVBQ3hDLFNBQWEsRUFDYixJQUFVO1FBRVYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hH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
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
-
import { UnencryptedL2Log } from '@aztec/circuit-types';
|
|
4
|
-
import { type AztecAddress, type ContractClassIdPreimage, type ContractInstanceWithAddress, Gas, NullifierLeafPreimage, type PublicCallRequest, PublicDataTreeLeafPreimage, SerializableContractInstance } from '@aztec/circuits.js';
|
|
5
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
6
|
-
import { type AvmContractCallResult, type AvmFinalizedCallResult } from '../avm/avm_contract_call_result.js';
|
|
7
|
-
import { type AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
|
|
8
|
-
import { type EnqueuedPublicCallExecutionResultWithSideEffects, type PublicFunctionCallResult } from './execution.js';
|
|
9
|
-
import { type PublicSideEffectTraceInterface } from './side_effect_trace_interface.js';
|
|
10
|
-
export type TracedContractInstance = {
|
|
11
|
-
exists: boolean;
|
|
12
|
-
} & ContractInstanceWithAddress;
|
|
13
|
-
export declare class PublicSideEffectTrace implements PublicSideEffectTraceInterface {
|
|
14
|
-
/** The counter of this trace's first side effect. */
|
|
15
|
-
readonly startSideEffectCounter: number;
|
|
16
|
-
log: import("@aztec/foundation/log").Logger;
|
|
17
|
-
/** The side effect counter increments with every call to the trace. */
|
|
18
|
-
private sideEffectCounter;
|
|
19
|
-
private contractStorageReads;
|
|
20
|
-
private contractStorageUpdateRequests;
|
|
21
|
-
private noteHashReadRequests;
|
|
22
|
-
private noteHashes;
|
|
23
|
-
private nullifierReadRequests;
|
|
24
|
-
private nullifierNonExistentReadRequests;
|
|
25
|
-
private nullifiers;
|
|
26
|
-
private l1ToL2MsgReadRequests;
|
|
27
|
-
private newL2ToL1Messages;
|
|
28
|
-
private unencryptedLogs;
|
|
29
|
-
private allUnencryptedLogs;
|
|
30
|
-
private unencryptedLogsHashes;
|
|
31
|
-
private publicCallRequests;
|
|
32
|
-
private nestedExecutions;
|
|
33
|
-
private avmCircuitHints;
|
|
34
|
-
constructor(
|
|
35
|
-
/** The counter of this trace's first side effect. */
|
|
36
|
-
startSideEffectCounter?: number);
|
|
37
|
-
fork(): PublicSideEffectTrace;
|
|
38
|
-
getCounter(): number;
|
|
39
|
-
private incrementSideEffectCounter;
|
|
40
|
-
tracePublicStorageRead(contractAddress: AztecAddress, slot: Fr, value: Fr, leafPreimage?: PublicDataTreeLeafPreimage, leafIndex?: Fr, path?: Fr[]): void;
|
|
41
|
-
tracePublicStorageWrite(contractAddress: AztecAddress, slot: Fr, value: Fr, lowLeafPreimage?: PublicDataTreeLeafPreimage, lowLeafIndex?: Fr, lowLeafPath?: Fr[], newLeafPreimage?: PublicDataTreeLeafPreimage, insertionPath?: Fr[]): void;
|
|
42
|
-
traceNoteHashCheck(_contractAddress: AztecAddress, noteHash: Fr, leafIndex: Fr, exists: boolean, path?: Fr[]): void;
|
|
43
|
-
traceNewNoteHash(_contractAddress: AztecAddress, noteHash: Fr, leafIndex?: Fr, path?: Fr[]): void;
|
|
44
|
-
traceNullifierCheck(siloedNullifier: Fr, exists: boolean, lowLeafPreimage?: NullifierLeafPreimage, lowLeafIndex?: Fr, lowLeafPath?: Fr[]): void;
|
|
45
|
-
traceNewNullifier(siloedNullifier: Fr, lowLeafPreimage?: NullifierLeafPreimage, lowLeafIndex?: Fr, lowLeafPath?: Fr[], insertionPath?: Fr[]): void;
|
|
46
|
-
traceL1ToL2MessageCheck(_contractAddress: AztecAddress, msgHash: Fr, msgLeafIndex: Fr, exists: boolean, path?: Fr[]): void;
|
|
47
|
-
traceNewL2ToL1Message(_contractAddress: AztecAddress, recipient: Fr, content: Fr): void;
|
|
48
|
-
traceUnencryptedLog(contractAddress: AztecAddress, log: Fr[]): void;
|
|
49
|
-
traceGetContractInstance(contractAddress: AztecAddress, exists: boolean, instance?: SerializableContractInstance): void;
|
|
50
|
-
traceGetBytecode(contractAddress: AztecAddress, exists: boolean, bytecode?: Buffer, contractInstance?: SerializableContractInstance, contractClass?: ContractClassIdPreimage): void;
|
|
51
|
-
/**
|
|
52
|
-
* Trace a nested call.
|
|
53
|
-
* Accept some results from a finished nested call's trace into this one.
|
|
54
|
-
*/
|
|
55
|
-
traceNestedCall(
|
|
56
|
-
/** The trace of the nested call. */
|
|
57
|
-
nestedCallTrace: PublicSideEffectTrace,
|
|
58
|
-
/** The execution environment of the nested call. */
|
|
59
|
-
nestedEnvironment: AvmExecutionEnvironment,
|
|
60
|
-
/** How much gas was available for this public execution. */
|
|
61
|
-
startGasLeft: Gas,
|
|
62
|
-
/** Bytecode used for this execution. */
|
|
63
|
-
bytecode: Buffer,
|
|
64
|
-
/** The call's results */
|
|
65
|
-
avmCallResults: AvmContractCallResult,
|
|
66
|
-
/** Function name for logging */
|
|
67
|
-
functionName?: string): void;
|
|
68
|
-
traceEnqueuedCall(
|
|
69
|
-
/** The call request from private that enqueued this call. */
|
|
70
|
-
_publicCallRequest: PublicCallRequest,
|
|
71
|
-
/** The call's calldata */
|
|
72
|
-
_calldata: Fr[],
|
|
73
|
-
/** Did the call revert? */
|
|
74
|
-
_reverted: boolean): void;
|
|
75
|
-
merge(_nestedTrace: this, _reverted?: boolean): void;
|
|
76
|
-
/**
|
|
77
|
-
* Convert this trace to a PublicExecutionResult for use externally to the simulator.
|
|
78
|
-
*/
|
|
79
|
-
toPublicFunctionCallResult(
|
|
80
|
-
/** The execution environment of the nested call. */
|
|
81
|
-
avmEnvironment: AvmExecutionEnvironment,
|
|
82
|
-
/** How much gas was available for this public execution. */
|
|
83
|
-
startGasLeft: Gas,
|
|
84
|
-
/** Bytecode used for this execution. */
|
|
85
|
-
bytecode: Buffer,
|
|
86
|
-
/** The call's results */
|
|
87
|
-
avmCallResults: AvmFinalizedCallResult,
|
|
88
|
-
/** Function name for logging */
|
|
89
|
-
functionName?: string): PublicFunctionCallResult;
|
|
90
|
-
toPublicEnqueuedCallExecutionResult(
|
|
91
|
-
/** The call's results */
|
|
92
|
-
_avmCallResults: AvmFinalizedCallResult): EnqueuedPublicCallExecutionResultWithSideEffects;
|
|
93
|
-
private enforceLimitOnNullifierChecks;
|
|
94
|
-
getUnencryptedLogs(): UnencryptedL2Log[];
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=side_effect_trace.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"side_effect_trace.d.ts","sourceRoot":"","sources":["../../src/public/side_effect_trace.ts"],"names":[],"mappings":"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"}
|