@aztec/simulator 0.43.0 → 0.44.0
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/oracle/oracle.d.ts +2 -0
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +10 -4
- package/dest/acvm/oracle/typed_oracle.d.ts +5 -3
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +7 -1
- package/dest/avm/avm_execution_environment.d.ts +2 -0
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +9 -4
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +2 -3
- package/dest/avm/fixtures/index.d.ts +10 -6
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +8 -15
- package/dest/avm/journal/journal.d.ts +56 -65
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +76 -115
- package/dest/avm/journal/nullifiers.d.ts +21 -8
- package/dest/avm/journal/nullifiers.d.ts.map +1 -1
- package/dest/avm/journal/nullifiers.js +26 -8
- package/dest/avm/journal/public_storage.d.ts +4 -0
- package/dest/avm/journal/public_storage.d.ts.map +1 -1
- package/dest/avm/journal/public_storage.js +10 -1
- package/dest/avm/opcodes/accrued_substate.d.ts.map +1 -1
- package/dest/avm/opcodes/accrued_substate.js +4 -4
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +12 -27
- package/dest/avm/test_utils.d.ts +14 -0
- package/dest/avm/test_utils.d.ts.map +1 -0
- package/dest/avm/test_utils.js +36 -0
- 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 +3 -3
- package/dest/client/execution_note_cache.d.ts.map +1 -1
- package/dest/client/execution_note_cache.js +1 -1
- package/dest/client/execution_result.d.ts +2 -1
- package/dest/client/execution_result.d.ts.map +1 -1
- package/dest/client/execution_result.js +1 -1
- package/dest/client/index.d.ts +2 -0
- package/dest/client/index.d.ts.map +1 -1
- package/dest/client/index.js +3 -1
- package/dest/client/simulator.d.ts +3 -3
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +1 -1
- package/dest/client/view_data_oracle.d.ts +2 -0
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +7 -1
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +3 -2
- package/dest/public/abstract_phase_manager.d.ts +1 -0
- package/dest/public/abstract_phase_manager.d.ts.map +1 -1
- package/dest/public/abstract_phase_manager.js +11 -8
- package/dest/public/app_logic_phase_manager.d.ts.map +1 -1
- package/dest/public/app_logic_phase_manager.js +2 -1
- package/dest/public/execution.d.ts +27 -25
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +1 -1
- package/dest/public/executor.d.ts +9 -4
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +29 -25
- package/dest/public/public_processor.d.ts +5 -2
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +142 -123
- package/dest/public/side_effect_trace.d.ts +86 -0
- package/dest/public/side_effect_trace.d.ts.map +1 -0
- package/dest/public/side_effect_trace.js +222 -0
- package/dest/public/side_effect_trace_interface.d.ts +36 -0
- package/dest/public/side_effect_trace_interface.d.ts.map +1 -0
- package/dest/public/side_effect_trace_interface.js +2 -0
- package/dest/public/teardown_phase_manager.d.ts.map +1 -1
- package/dest/public/teardown_phase_manager.js +2 -1
- package/dest/public/transitional_adaptors.d.ts +2 -6
- package/dest/public/transitional_adaptors.d.ts.map +1 -1
- package/dest/public/transitional_adaptors.js +1 -49
- package/package.json +18 -9
- package/src/acvm/oracle/oracle.ts +11 -3
- package/src/acvm/oracle/typed_oracle.ts +17 -3
- package/src/avm/avm_execution_environment.ts +10 -3
- package/src/avm/avm_simulator.ts +2 -3
- package/src/avm/fixtures/index.ts +18 -17
- package/src/avm/journal/journal.ts +114 -223
- package/src/avm/journal/nullifiers.ts +30 -13
- package/src/avm/journal/public_storage.ts +10 -0
- package/src/avm/opcodes/accrued_substate.ts +7 -3
- package/src/avm/opcodes/external_calls.ts +12 -34
- package/src/avm/test_utils.ts +53 -0
- package/src/client/client_execution_context.ts +10 -4
- package/src/client/execution_note_cache.ts +0 -1
- package/src/client/execution_result.ts +2 -1
- package/src/client/index.ts +2 -0
- package/src/client/simulator.ts +8 -2
- package/src/client/view_data_oracle.ts +8 -0
- package/src/mocks/fixtures.ts +2 -1
- package/src/public/abstract_phase_manager.ts +22 -11
- package/src/public/app_logic_phase_manager.ts +1 -0
- package/src/public/execution.ts +35 -25
- package/src/public/executor.ts +44 -37
- package/src/public/public_processor.ts +11 -2
- package/src/public/side_effect_trace.ts +323 -0
- package/src/public/side_effect_trace_interface.ts +41 -0
- package/src/public/teardown_phase_manager.ts +1 -0
- package/src/public/transitional_adaptors.ts +2 -100
- package/dest/avm/journal/trace.d.ts +0 -33
- package/dest/avm/journal/trace.d.ts.map +0 -1
- package/dest/avm/journal/trace.js +0 -152
- package/dest/avm/journal/trace_types.d.ts +0 -55
- package/dest/avm/journal/trace_types.d.ts.map +0 -1
- package/dest/avm/journal/trace_types.js +0 -2
- package/src/avm/journal/trace.ts +0 -181
- package/src/avm/journal/trace_types.ts +0 -91
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
export class WorldStateAccessTrace {
|
|
3
|
-
//public contractCalls: TracedContractCall[] = [];
|
|
4
|
-
//public archiveChecks: TracedArchiveLeafCheck[] = [];
|
|
5
|
-
constructor(parentTrace) {
|
|
6
|
-
this.publicStorageReads = [];
|
|
7
|
-
this.publicStorageWrites = [];
|
|
8
|
-
this.noteHashChecks = [];
|
|
9
|
-
this.newNoteHashes = [];
|
|
10
|
-
this.nullifierChecks = [];
|
|
11
|
-
this.newNullifiers = [];
|
|
12
|
-
this.l1ToL2MessageChecks = [];
|
|
13
|
-
this.newLogsHashes = [];
|
|
14
|
-
this.gotContractInstances = [];
|
|
15
|
-
this.accessCounter = parentTrace ? parentTrace.accessCounter : 0;
|
|
16
|
-
// TODO(4805): consider tracking the parent's trace vector lengths so we can enforce limits
|
|
17
|
-
}
|
|
18
|
-
getAccessCounter() {
|
|
19
|
-
return this.accessCounter;
|
|
20
|
-
}
|
|
21
|
-
tracePublicStorageRead(storageAddress, slot, value, exists, cached) {
|
|
22
|
-
// TODO(4805): check if some threshold is reached for max storage reads
|
|
23
|
-
// (need access to parent length, or trace needs to be initialized with parent's contents)
|
|
24
|
-
const traced = {
|
|
25
|
-
// callPointer: Fr.ZERO,
|
|
26
|
-
storageAddress,
|
|
27
|
-
slot,
|
|
28
|
-
value,
|
|
29
|
-
exists,
|
|
30
|
-
cached,
|
|
31
|
-
counter: new Fr(this.accessCounter),
|
|
32
|
-
// endLifetime: Fr.ZERO,
|
|
33
|
-
};
|
|
34
|
-
this.publicStorageReads.push(traced);
|
|
35
|
-
this.incrementAccessCounter();
|
|
36
|
-
}
|
|
37
|
-
tracePublicStorageWrite(storageAddress, slot, value) {
|
|
38
|
-
// TODO(4805): check if some threshold is reached for max storage writes
|
|
39
|
-
// (need access to parent length, or trace needs to be initialized with parent's contents)
|
|
40
|
-
const traced = {
|
|
41
|
-
// callPointer: Fr.ZERO,
|
|
42
|
-
storageAddress,
|
|
43
|
-
slot,
|
|
44
|
-
value,
|
|
45
|
-
counter: new Fr(this.accessCounter),
|
|
46
|
-
// endLifetime: Fr.ZERO,
|
|
47
|
-
};
|
|
48
|
-
this.publicStorageWrites.push(traced);
|
|
49
|
-
this.incrementAccessCounter();
|
|
50
|
-
}
|
|
51
|
-
traceNoteHashCheck(storageAddress, noteHash, exists, leafIndex) {
|
|
52
|
-
const traced = {
|
|
53
|
-
// callPointer: Fr.ZERO,
|
|
54
|
-
storageAddress,
|
|
55
|
-
noteHash,
|
|
56
|
-
exists,
|
|
57
|
-
counter: new Fr(this.accessCounter),
|
|
58
|
-
// endLifetime: Fr.ZERO,
|
|
59
|
-
leafIndex,
|
|
60
|
-
};
|
|
61
|
-
this.noteHashChecks.push(traced);
|
|
62
|
-
this.incrementAccessCounter();
|
|
63
|
-
}
|
|
64
|
-
traceNewNoteHash(storageAddress, noteHash) {
|
|
65
|
-
// TODO(4805): check if some threshold is reached for max new note hash
|
|
66
|
-
const traced = {
|
|
67
|
-
// callPointer: Fr.ZERO,
|
|
68
|
-
storageAddress,
|
|
69
|
-
noteHash,
|
|
70
|
-
counter: new Fr(this.accessCounter),
|
|
71
|
-
// endLifetime: Fr.ZERO,
|
|
72
|
-
};
|
|
73
|
-
this.newNoteHashes.push(traced);
|
|
74
|
-
this.incrementAccessCounter();
|
|
75
|
-
}
|
|
76
|
-
traceNullifierCheck(storageAddress, nullifier, exists, isPending, leafIndex) {
|
|
77
|
-
// TODO(4805): check if some threshold is reached for max new nullifier
|
|
78
|
-
const traced = {
|
|
79
|
-
// callPointer: Fr.ZERO,
|
|
80
|
-
storageAddress,
|
|
81
|
-
nullifier,
|
|
82
|
-
exists,
|
|
83
|
-
counter: new Fr(this.accessCounter),
|
|
84
|
-
// endLifetime: Fr.ZERO,
|
|
85
|
-
isPending,
|
|
86
|
-
leafIndex,
|
|
87
|
-
};
|
|
88
|
-
this.nullifierChecks.push(traced);
|
|
89
|
-
this.incrementAccessCounter();
|
|
90
|
-
}
|
|
91
|
-
traceNewNullifier(storageAddress, nullifier) {
|
|
92
|
-
// TODO(4805): check if some threshold is reached for max new nullifier
|
|
93
|
-
const tracedNullifier = {
|
|
94
|
-
// callPointer: Fr.ZERO,
|
|
95
|
-
storageAddress,
|
|
96
|
-
nullifier,
|
|
97
|
-
counter: new Fr(this.accessCounter),
|
|
98
|
-
// endLifetime: Fr.ZERO,
|
|
99
|
-
};
|
|
100
|
-
this.newNullifiers.push(tracedNullifier);
|
|
101
|
-
this.incrementAccessCounter();
|
|
102
|
-
}
|
|
103
|
-
traceL1ToL2MessageCheck(msgHash, msgLeafIndex, exists) {
|
|
104
|
-
// TODO(4805): check if some threshold is reached for max message reads
|
|
105
|
-
const traced = {
|
|
106
|
-
//callPointer: Fr.ZERO, // FIXME
|
|
107
|
-
leafIndex: msgLeafIndex,
|
|
108
|
-
msgHash: msgHash,
|
|
109
|
-
exists: exists,
|
|
110
|
-
counter: new Fr(this.accessCounter),
|
|
111
|
-
//endLifetime: Fr.ZERO, // FIXME
|
|
112
|
-
};
|
|
113
|
-
this.l1ToL2MessageChecks.push(traced);
|
|
114
|
-
this.incrementAccessCounter();
|
|
115
|
-
}
|
|
116
|
-
traceNewLog(logHash) {
|
|
117
|
-
const traced = {
|
|
118
|
-
logHash,
|
|
119
|
-
counter: new Fr(this.accessCounter),
|
|
120
|
-
};
|
|
121
|
-
this.newLogsHashes.push(traced);
|
|
122
|
-
this.incrementAccessCounter();
|
|
123
|
-
}
|
|
124
|
-
traceGetContractInstance(instance) {
|
|
125
|
-
this.gotContractInstances.push(instance);
|
|
126
|
-
this.incrementAccessCounter();
|
|
127
|
-
}
|
|
128
|
-
incrementAccessCounter() {
|
|
129
|
-
this.accessCounter++;
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Merges another trace into this one
|
|
133
|
-
*
|
|
134
|
-
* @param incomingTrace - the incoming trace to merge into this instance
|
|
135
|
-
*/
|
|
136
|
-
acceptAndMerge(incomingTrace) {
|
|
137
|
-
// Merge storage read and write journals
|
|
138
|
-
this.publicStorageReads.push(...incomingTrace.publicStorageReads);
|
|
139
|
-
this.publicStorageWrites.push(...incomingTrace.publicStorageWrites);
|
|
140
|
-
// Merge new note hashes and nullifiers
|
|
141
|
-
this.noteHashChecks.push(...incomingTrace.noteHashChecks);
|
|
142
|
-
this.newNoteHashes.push(...incomingTrace.newNoteHashes);
|
|
143
|
-
this.nullifierChecks.push(...incomingTrace.nullifierChecks);
|
|
144
|
-
this.newNullifiers.push(...incomingTrace.newNullifiers);
|
|
145
|
-
this.l1ToL2MessageChecks.push(...incomingTrace.l1ToL2MessageChecks);
|
|
146
|
-
this.newLogsHashes.push(...incomingTrace.newLogsHashes);
|
|
147
|
-
this.gotContractInstances.push(...incomingTrace.gotContractInstances);
|
|
148
|
-
// it is assumed that the incoming trace was initialized with this as parent, so accept counter
|
|
149
|
-
this.accessCounter = incomingTrace.accessCounter;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXZtL2pvdXJuYWwvdHJhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBYzlDLE1BQU0sT0FBTyxxQkFBcUI7SUFjaEMsa0RBQWtEO0lBQ2xELHNEQUFzRDtJQUV0RCxZQUFZLFdBQW1DO1FBZHhDLHVCQUFrQixHQUE4QixFQUFFLENBQUM7UUFDbkQsd0JBQW1CLEdBQStCLEVBQUUsQ0FBQztRQUVyRCxtQkFBYyxHQUEwQixFQUFFLENBQUM7UUFDM0Msa0JBQWEsR0FBcUIsRUFBRSxDQUFDO1FBQ3JDLG9CQUFlLEdBQTJCLEVBQUUsQ0FBQztRQUM3QyxrQkFBYSxHQUFzQixFQUFFLENBQUM7UUFDdEMsd0JBQW1CLEdBQStCLEVBQUUsQ0FBQztRQUNyRCxrQkFBYSxHQUE2QixFQUFFLENBQUM7UUFDN0MseUJBQW9CLEdBQTZCLEVBQUUsQ0FBQztRQU16RCxJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLDJGQUEyRjtJQUM3RixDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRU0sc0JBQXNCLENBQUMsY0FBa0IsRUFBRSxJQUFRLEVBQUUsS0FBUyxFQUFFLE1BQWUsRUFBRSxNQUFlO1FBQ3JHLHVFQUF1RTtRQUN2RSwwRkFBMEY7UUFDMUYsTUFBTSxNQUFNLEdBQTRCO1lBQ3RDLHlCQUF5QjtZQUN6QixjQUFjO1lBQ2QsSUFBSTtZQUNKLEtBQUs7WUFDTCxNQUFNO1lBQ04sTUFBTTtZQUNOLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ25DLHlCQUF5QjtTQUMxQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sdUJBQXVCLENBQUMsY0FBa0IsRUFBRSxJQUFRLEVBQUUsS0FBUztRQUNwRSx3RUFBd0U7UUFDeEUsMEZBQTBGO1FBQzFGLE1BQU0sTUFBTSxHQUE2QjtZQUN2Qyx5QkFBeUI7WUFDekIsY0FBYztZQUNkLElBQUk7WUFDSixLQUFLO1lBQ0wsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDbkMseUJBQXlCO1NBQzFCLENBQUM7UUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxjQUFrQixFQUFFLFFBQVksRUFBRSxNQUFlLEVBQUUsU0FBYTtRQUN4RixNQUFNLE1BQU0sR0FBd0I7WUFDbEMsd0JBQXdCO1lBQ3hCLGNBQWM7WUFDZCxRQUFRO1lBQ1IsTUFBTTtZQUNOLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ25DLHdCQUF3QjtZQUN4QixTQUFTO1NBQ1YsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxjQUFrQixFQUFFLFFBQVk7UUFDdEQsdUVBQXVFO1FBQ3ZFLE1BQU0sTUFBTSxHQUFtQjtZQUM3Qix5QkFBeUI7WUFDekIsY0FBYztZQUNkLFFBQVE7WUFDUixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNuQyx5QkFBeUI7U0FDMUIsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxjQUFrQixFQUFFLFNBQWEsRUFBRSxNQUFlLEVBQUUsU0FBa0IsRUFBRSxTQUFhO1FBQzlHLHVFQUF1RTtRQUN2RSxNQUFNLE1BQU0sR0FBeUI7WUFDbkMsd0JBQXdCO1lBQ3hCLGNBQWM7WUFDZCxTQUFTO1lBQ1QsTUFBTTtZQUNOLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ25DLHdCQUF3QjtZQUN4QixTQUFTO1lBQ1QsU0FBUztTQUNWLENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0saUJBQWlCLENBQUMsY0FBa0IsRUFBRSxTQUFhO1FBQ3hELHVFQUF1RTtRQUN2RSxNQUFNLGVBQWUsR0FBb0I7WUFDdkMsd0JBQXdCO1lBQ3hCLGNBQWM7WUFDZCxTQUFTO1lBQ1QsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDbkMsd0JBQXdCO1NBQ3pCLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sdUJBQXVCLENBQUMsT0FBVyxFQUFFLFlBQWdCLEVBQUUsTUFBZTtRQUMzRSx1RUFBdUU7UUFDdkUsTUFBTSxNQUFNLEdBQTZCO1lBQ3ZDLGdDQUFnQztZQUNoQyxTQUFTLEVBQUUsWUFBWTtZQUN2QixPQUFPLEVBQUUsT0FBTztZQUNoQixNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ25DLGdDQUFnQztTQUNqQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQVc7UUFDNUIsTUFBTSxNQUFNLEdBQTJCO1lBQ3JDLE9BQU87WUFDUCxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUNwQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLHdCQUF3QixDQUFDLFFBQWdDO1FBQzlELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxjQUFjLENBQUMsYUFBb0M7UUFDeEQsd0NBQXdDO1FBQ3hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDcEUsdUNBQXVDO1FBQ3ZDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdEUsK0ZBQStGO1FBQy9GLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQztJQUNuRCxDQUFDO0NBQ0YifQ==
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { type Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import { type ContractInstanceWithAddress } from '@aztec/types/contracts';
|
|
3
|
-
export type TracedPublicStorageRead = {
|
|
4
|
-
storageAddress: Fr;
|
|
5
|
-
exists: boolean;
|
|
6
|
-
cached: boolean;
|
|
7
|
-
slot: Fr;
|
|
8
|
-
value: Fr;
|
|
9
|
-
counter: Fr;
|
|
10
|
-
};
|
|
11
|
-
export type TracedPublicStorageWrite = {
|
|
12
|
-
storageAddress: Fr;
|
|
13
|
-
slot: Fr;
|
|
14
|
-
value: Fr;
|
|
15
|
-
counter: Fr;
|
|
16
|
-
};
|
|
17
|
-
export type TracedNoteHashCheck = {
|
|
18
|
-
storageAddress: Fr;
|
|
19
|
-
leafIndex: Fr;
|
|
20
|
-
noteHash: Fr;
|
|
21
|
-
exists: boolean;
|
|
22
|
-
counter: Fr;
|
|
23
|
-
};
|
|
24
|
-
export type TracedNoteHash = {
|
|
25
|
-
storageAddress: Fr;
|
|
26
|
-
noteHash: Fr;
|
|
27
|
-
counter: Fr;
|
|
28
|
-
};
|
|
29
|
-
export type TracedNullifierCheck = {
|
|
30
|
-
storageAddress: Fr;
|
|
31
|
-
nullifier: Fr;
|
|
32
|
-
exists: boolean;
|
|
33
|
-
counter: Fr;
|
|
34
|
-
isPending: boolean;
|
|
35
|
-
leafIndex: Fr;
|
|
36
|
-
};
|
|
37
|
-
export type TracedNullifier = {
|
|
38
|
-
storageAddress: Fr;
|
|
39
|
-
nullifier: Fr;
|
|
40
|
-
counter: Fr;
|
|
41
|
-
};
|
|
42
|
-
export type TracedL1toL2MessageCheck = {
|
|
43
|
-
leafIndex: Fr;
|
|
44
|
-
msgHash: Fr;
|
|
45
|
-
exists: boolean;
|
|
46
|
-
counter: Fr;
|
|
47
|
-
};
|
|
48
|
-
export type TracedUnencryptedL2Log = {
|
|
49
|
-
logHash: Fr;
|
|
50
|
-
counter: Fr;
|
|
51
|
-
};
|
|
52
|
-
export type TracedContractInstance = {
|
|
53
|
-
exists: boolean;
|
|
54
|
-
} & ContractInstanceWithAddress;
|
|
55
|
-
//# sourceMappingURL=trace_types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trace_types.d.ts","sourceRoot":"","sources":["../../../src/avm/journal/trace_types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAS1E,MAAM,MAAM,uBAAuB,GAAG;IAEpC,cAAc,EAAE,EAAE,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,EAAE,CAAC;IACT,KAAK,EAAE,EAAE,CAAC;IACV,OAAO,EAAE,EAAE,CAAC;CAEb,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IAErC,cAAc,EAAE,EAAE,CAAC;IACnB,IAAI,EAAE,EAAE,CAAC;IACT,KAAK,EAAE,EAAE,CAAC;IACV,OAAO,EAAE,EAAE,CAAC;CAEb,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAEhC,cAAc,EAAE,EAAE,CAAC;IACnB,SAAS,EAAE,EAAE,CAAC;IACd,QAAQ,EAAE,EAAE,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,EAAE,CAAC;CAEb,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAE3B,cAAc,EAAE,EAAE,CAAC;IACnB,QAAQ,EAAE,EAAE,CAAC;IACb,OAAO,EAAE,EAAE,CAAC;CAEb,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAEjC,cAAc,EAAE,EAAE,CAAC;IACnB,SAAS,EAAE,EAAE,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,EAAE,CAAC;IAIZ,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,EAAE,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAE5B,cAAc,EAAE,EAAE,CAAC;IACnB,SAAS,EAAE,EAAE,CAAC;IACd,OAAO,EAAE,EAAE,CAAC;CAEb,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IAErC,SAAS,EAAE,EAAE,CAAC;IACd,OAAO,EAAE,EAAE,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,EAAE,CAAC;CAEb,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IAEnC,OAAO,EAAE,EAAE,CAAC;IACZ,OAAO,EAAE,EAAE,CAAC;CAEb,CAAC;AAOF,MAAM,MAAM,sBAAsB,GAAG;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,2BAA2B,CAAC"}
|
package/src/avm/journal/trace.ts
DELETED
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
type TracedContractInstance,
|
|
5
|
-
type TracedL1toL2MessageCheck,
|
|
6
|
-
type TracedNoteHash,
|
|
7
|
-
type TracedNoteHashCheck,
|
|
8
|
-
type TracedNullifier,
|
|
9
|
-
type TracedNullifierCheck,
|
|
10
|
-
type TracedPublicStorageRead,
|
|
11
|
-
type TracedPublicStorageWrite,
|
|
12
|
-
type TracedUnencryptedL2Log,
|
|
13
|
-
} from './trace_types.js';
|
|
14
|
-
|
|
15
|
-
export class WorldStateAccessTrace {
|
|
16
|
-
public accessCounter: number;
|
|
17
|
-
|
|
18
|
-
public publicStorageReads: TracedPublicStorageRead[] = [];
|
|
19
|
-
public publicStorageWrites: TracedPublicStorageWrite[] = [];
|
|
20
|
-
|
|
21
|
-
public noteHashChecks: TracedNoteHashCheck[] = [];
|
|
22
|
-
public newNoteHashes: TracedNoteHash[] = [];
|
|
23
|
-
public nullifierChecks: TracedNullifierCheck[] = [];
|
|
24
|
-
public newNullifiers: TracedNullifier[] = [];
|
|
25
|
-
public l1ToL2MessageChecks: TracedL1toL2MessageCheck[] = [];
|
|
26
|
-
public newLogsHashes: TracedUnencryptedL2Log[] = [];
|
|
27
|
-
public gotContractInstances: TracedContractInstance[] = [];
|
|
28
|
-
|
|
29
|
-
//public contractCalls: TracedContractCall[] = [];
|
|
30
|
-
//public archiveChecks: TracedArchiveLeafCheck[] = [];
|
|
31
|
-
|
|
32
|
-
constructor(parentTrace?: WorldStateAccessTrace) {
|
|
33
|
-
this.accessCounter = parentTrace ? parentTrace.accessCounter : 0;
|
|
34
|
-
// TODO(4805): consider tracking the parent's trace vector lengths so we can enforce limits
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
public getAccessCounter() {
|
|
38
|
-
return this.accessCounter;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
public tracePublicStorageRead(storageAddress: Fr, slot: Fr, value: Fr, exists: boolean, cached: boolean) {
|
|
42
|
-
// TODO(4805): check if some threshold is reached for max storage reads
|
|
43
|
-
// (need access to parent length, or trace needs to be initialized with parent's contents)
|
|
44
|
-
const traced: TracedPublicStorageRead = {
|
|
45
|
-
// callPointer: Fr.ZERO,
|
|
46
|
-
storageAddress,
|
|
47
|
-
slot,
|
|
48
|
-
value,
|
|
49
|
-
exists,
|
|
50
|
-
cached,
|
|
51
|
-
counter: new Fr(this.accessCounter),
|
|
52
|
-
// endLifetime: Fr.ZERO,
|
|
53
|
-
};
|
|
54
|
-
this.publicStorageReads.push(traced);
|
|
55
|
-
this.incrementAccessCounter();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
public tracePublicStorageWrite(storageAddress: Fr, slot: Fr, value: Fr) {
|
|
59
|
-
// TODO(4805): check if some threshold is reached for max storage writes
|
|
60
|
-
// (need access to parent length, or trace needs to be initialized with parent's contents)
|
|
61
|
-
const traced: TracedPublicStorageWrite = {
|
|
62
|
-
// callPointer: Fr.ZERO,
|
|
63
|
-
storageAddress,
|
|
64
|
-
slot,
|
|
65
|
-
value,
|
|
66
|
-
counter: new Fr(this.accessCounter),
|
|
67
|
-
// endLifetime: Fr.ZERO,
|
|
68
|
-
};
|
|
69
|
-
this.publicStorageWrites.push(traced);
|
|
70
|
-
this.incrementAccessCounter();
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
public traceNoteHashCheck(storageAddress: Fr, noteHash: Fr, exists: boolean, leafIndex: Fr) {
|
|
74
|
-
const traced: TracedNoteHashCheck = {
|
|
75
|
-
// callPointer: Fr.ZERO,
|
|
76
|
-
storageAddress,
|
|
77
|
-
noteHash,
|
|
78
|
-
exists,
|
|
79
|
-
counter: new Fr(this.accessCounter),
|
|
80
|
-
// endLifetime: Fr.ZERO,
|
|
81
|
-
leafIndex,
|
|
82
|
-
};
|
|
83
|
-
this.noteHashChecks.push(traced);
|
|
84
|
-
this.incrementAccessCounter();
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
public traceNewNoteHash(storageAddress: Fr, noteHash: Fr) {
|
|
88
|
-
// TODO(4805): check if some threshold is reached for max new note hash
|
|
89
|
-
const traced: TracedNoteHash = {
|
|
90
|
-
// callPointer: Fr.ZERO,
|
|
91
|
-
storageAddress,
|
|
92
|
-
noteHash,
|
|
93
|
-
counter: new Fr(this.accessCounter),
|
|
94
|
-
// endLifetime: Fr.ZERO,
|
|
95
|
-
};
|
|
96
|
-
this.newNoteHashes.push(traced);
|
|
97
|
-
this.incrementAccessCounter();
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
public traceNullifierCheck(storageAddress: Fr, nullifier: Fr, exists: boolean, isPending: boolean, leafIndex: Fr) {
|
|
101
|
-
// TODO(4805): check if some threshold is reached for max new nullifier
|
|
102
|
-
const traced: TracedNullifierCheck = {
|
|
103
|
-
// callPointer: Fr.ZERO,
|
|
104
|
-
storageAddress,
|
|
105
|
-
nullifier,
|
|
106
|
-
exists,
|
|
107
|
-
counter: new Fr(this.accessCounter),
|
|
108
|
-
// endLifetime: Fr.ZERO,
|
|
109
|
-
isPending,
|
|
110
|
-
leafIndex,
|
|
111
|
-
};
|
|
112
|
-
this.nullifierChecks.push(traced);
|
|
113
|
-
this.incrementAccessCounter();
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
public traceNewNullifier(storageAddress: Fr, nullifier: Fr) {
|
|
117
|
-
// TODO(4805): check if some threshold is reached for max new nullifier
|
|
118
|
-
const tracedNullifier: TracedNullifier = {
|
|
119
|
-
// callPointer: Fr.ZERO,
|
|
120
|
-
storageAddress,
|
|
121
|
-
nullifier,
|
|
122
|
-
counter: new Fr(this.accessCounter),
|
|
123
|
-
// endLifetime: Fr.ZERO,
|
|
124
|
-
};
|
|
125
|
-
this.newNullifiers.push(tracedNullifier);
|
|
126
|
-
this.incrementAccessCounter();
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
public traceL1ToL2MessageCheck(msgHash: Fr, msgLeafIndex: Fr, exists: boolean) {
|
|
130
|
-
// TODO(4805): check if some threshold is reached for max message reads
|
|
131
|
-
const traced: TracedL1toL2MessageCheck = {
|
|
132
|
-
//callPointer: Fr.ZERO, // FIXME
|
|
133
|
-
leafIndex: msgLeafIndex,
|
|
134
|
-
msgHash: msgHash,
|
|
135
|
-
exists: exists,
|
|
136
|
-
counter: new Fr(this.accessCounter),
|
|
137
|
-
//endLifetime: Fr.ZERO, // FIXME
|
|
138
|
-
};
|
|
139
|
-
this.l1ToL2MessageChecks.push(traced);
|
|
140
|
-
this.incrementAccessCounter();
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
public traceNewLog(logHash: Fr) {
|
|
144
|
-
const traced: TracedUnencryptedL2Log = {
|
|
145
|
-
logHash,
|
|
146
|
-
counter: new Fr(this.accessCounter),
|
|
147
|
-
};
|
|
148
|
-
this.newLogsHashes.push(traced);
|
|
149
|
-
this.incrementAccessCounter();
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
public traceGetContractInstance(instance: TracedContractInstance) {
|
|
153
|
-
this.gotContractInstances.push(instance);
|
|
154
|
-
this.incrementAccessCounter();
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
private incrementAccessCounter() {
|
|
158
|
-
this.accessCounter++;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Merges another trace into this one
|
|
163
|
-
*
|
|
164
|
-
* @param incomingTrace - the incoming trace to merge into this instance
|
|
165
|
-
*/
|
|
166
|
-
public acceptAndMerge(incomingTrace: WorldStateAccessTrace) {
|
|
167
|
-
// Merge storage read and write journals
|
|
168
|
-
this.publicStorageReads.push(...incomingTrace.publicStorageReads);
|
|
169
|
-
this.publicStorageWrites.push(...incomingTrace.publicStorageWrites);
|
|
170
|
-
// Merge new note hashes and nullifiers
|
|
171
|
-
this.noteHashChecks.push(...incomingTrace.noteHashChecks);
|
|
172
|
-
this.newNoteHashes.push(...incomingTrace.newNoteHashes);
|
|
173
|
-
this.nullifierChecks.push(...incomingTrace.nullifierChecks);
|
|
174
|
-
this.newNullifiers.push(...incomingTrace.newNullifiers);
|
|
175
|
-
this.l1ToL2MessageChecks.push(...incomingTrace.l1ToL2MessageChecks);
|
|
176
|
-
this.newLogsHashes.push(...incomingTrace.newLogsHashes);
|
|
177
|
-
this.gotContractInstances.push(...incomingTrace.gotContractInstances);
|
|
178
|
-
// it is assumed that the incoming trace was initialized with this as parent, so accept counter
|
|
179
|
-
this.accessCounter = incomingTrace.accessCounter;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { type Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import { type ContractInstanceWithAddress } from '@aztec/types/contracts';
|
|
3
|
-
|
|
4
|
-
//export type TracedContractCall = {
|
|
5
|
-
// callPointer: Fr;
|
|
6
|
-
// address: Fr;
|
|
7
|
-
// storageAddress: Fr;
|
|
8
|
-
// endLifetime: Fr;
|
|
9
|
-
//};
|
|
10
|
-
|
|
11
|
-
export type TracedPublicStorageRead = {
|
|
12
|
-
// callPointer: Fr;
|
|
13
|
-
storageAddress: Fr;
|
|
14
|
-
exists: boolean;
|
|
15
|
-
cached: boolean;
|
|
16
|
-
slot: Fr;
|
|
17
|
-
value: Fr;
|
|
18
|
-
counter: Fr;
|
|
19
|
-
// endLifetime: Fr;
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export type TracedPublicStorageWrite = {
|
|
23
|
-
// callPointer: Fr;
|
|
24
|
-
storageAddress: Fr;
|
|
25
|
-
slot: Fr;
|
|
26
|
-
value: Fr;
|
|
27
|
-
counter: Fr;
|
|
28
|
-
// endLifetime: Fr;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
export type TracedNoteHashCheck = {
|
|
32
|
-
// callPointer: Fr;
|
|
33
|
-
storageAddress: Fr;
|
|
34
|
-
leafIndex: Fr;
|
|
35
|
-
noteHash: Fr;
|
|
36
|
-
exists: boolean;
|
|
37
|
-
counter: Fr;
|
|
38
|
-
// endLifetime: Fr;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
export type TracedNoteHash = {
|
|
42
|
-
// callPointer: Fr;
|
|
43
|
-
storageAddress: Fr;
|
|
44
|
-
noteHash: Fr;
|
|
45
|
-
counter: Fr;
|
|
46
|
-
// endLifetime: Fr;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
export type TracedNullifierCheck = {
|
|
50
|
-
// callPointer: Fr;
|
|
51
|
-
storageAddress: Fr;
|
|
52
|
-
nullifier: Fr;
|
|
53
|
-
exists: boolean;
|
|
54
|
-
counter: Fr;
|
|
55
|
-
// endLifetime: Fr;
|
|
56
|
-
// the fields below are relevant only to the public kernel
|
|
57
|
-
// and are therefore omitted from VM inputs
|
|
58
|
-
isPending: boolean;
|
|
59
|
-
leafIndex: Fr;
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
export type TracedNullifier = {
|
|
63
|
-
// callPointer: Fr;
|
|
64
|
-
storageAddress: Fr;
|
|
65
|
-
nullifier: Fr;
|
|
66
|
-
counter: Fr;
|
|
67
|
-
// endLifetime: Fr;
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
export type TracedL1toL2MessageCheck = {
|
|
71
|
-
//callPointer: Fr;
|
|
72
|
-
leafIndex: Fr;
|
|
73
|
-
msgHash: Fr;
|
|
74
|
-
exists: boolean;
|
|
75
|
-
counter: Fr;
|
|
76
|
-
//endLifetime: Fr;
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
export type TracedUnencryptedL2Log = {
|
|
80
|
-
//callPointer: Fr;
|
|
81
|
-
logHash: Fr;
|
|
82
|
-
counter: Fr;
|
|
83
|
-
//endLifetime: Fr;
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
//export type TracedArchiveLeafCheck = {
|
|
87
|
-
// leafIndex: Fr;
|
|
88
|
-
// leaf: Fr;
|
|
89
|
-
//};
|
|
90
|
-
|
|
91
|
-
export type TracedContractInstance = { exists: boolean } & ContractInstanceWithAddress;
|