@aztec/simulator 0.37.0 → 0.39.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/acvm.d.ts +1 -1
- package/dest/acvm/acvm.d.ts.map +1 -1
- package/dest/acvm/acvm.js +2 -2
- package/dest/acvm/oracle/oracle.d.ts +6 -5
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +26 -30
- package/dest/acvm/oracle/typed_oracle.d.ts +5 -5
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +9 -9
- package/dest/avm/avm_execution_environment.d.ts +4 -3
- package/dest/avm/avm_execution_environment.d.ts.map +1 -1
- package/dest/avm/avm_execution_environment.js +17 -11
- package/dest/avm/avm_gas.d.ts.map +1 -1
- package/dest/avm/avm_gas.js +4 -1
- package/dest/avm/avm_machine_state.d.ts +5 -8
- package/dest/avm/avm_machine_state.d.ts.map +1 -1
- package/dest/avm/avm_machine_state.js +10 -22
- package/dest/avm/avm_memory_types.d.ts +1 -1
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_message_call_result.d.ts +5 -8
- package/dest/avm/avm_message_call_result.d.ts.map +1 -1
- package/dest/avm/avm_message_call_result.js +1 -4
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +19 -13
- package/dest/avm/errors.d.ts +43 -2
- package/dest/avm/errors.d.ts.map +1 -1
- package/dest/avm/errors.js +86 -4
- package/dest/avm/journal/journal.d.ts +20 -1
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +70 -9
- package/dest/avm/journal/nullifiers.d.ts +3 -1
- package/dest/avm/journal/nullifiers.d.ts.map +1 -1
- package/dest/avm/journal/nullifiers.js +14 -6
- package/dest/avm/journal/public_storage.d.ts +10 -1
- package/dest/avm/journal/public_storage.d.ts.map +1 -1
- package/dest/avm/journal/public_storage.js +17 -2
- package/dest/avm/journal/trace.d.ts +1 -4
- package/dest/avm/journal/trace.d.ts.map +1 -1
- package/dest/avm/journal/trace.js +4 -5
- package/dest/avm/journal/trace_types.d.ts +1 -0
- package/dest/avm/journal/trace_types.d.ts.map +1 -1
- package/dest/avm/journal/trace_types.js +1 -1
- package/dest/avm/opcodes/bitwise.d.ts +4 -1
- package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/avm/opcodes/bitwise.js +14 -2
- package/dest/avm/opcodes/conversion.d.ts +16 -0
- package/dest/avm/opcodes/conversion.d.ts.map +1 -0
- package/dest/avm/opcodes/conversion.js +48 -0
- package/dest/avm/opcodes/environment_getters.d.ts +16 -12
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +19 -48
- package/dest/avm/opcodes/external_calls.d.ts.map +1 -1
- package/dest/avm/opcodes/external_calls.js +24 -13
- package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/bytecode_serialization.js +6 -2
- package/dest/avm/serialization/instruction_serialization.d.ts +40 -38
- package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
- package/dest/avm/serialization/instruction_serialization.js +42 -39
- package/dest/client/client_execution_context.d.ts +59 -19
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +97 -45
- package/dest/client/db_oracle.d.ts +4 -11
- package/dest/client/db_oracle.d.ts.map +1 -1
- package/dest/client/execution_result.d.ts +22 -15
- package/dest/client/execution_result.d.ts.map +1 -1
- package/dest/client/execution_result.js +59 -13
- package/dest/client/logs_cache.d.ts +33 -0
- package/dest/client/logs_cache.d.ts.map +1 -0
- package/dest/client/logs_cache.js +59 -0
- package/dest/client/private_execution.d.ts +2 -2
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +5 -7
- package/dest/client/simulator.d.ts +4 -34
- package/dest/client/simulator.d.ts.map +1 -1
- package/dest/client/simulator.js +5 -43
- package/dest/client/unconstrained_execution.d.ts +2 -2
- package/dest/client/unconstrained_execution.d.ts.map +1 -1
- package/dest/client/unconstrained_execution.js +1 -1
- package/dest/client/view_data_oracle.d.ts +0 -7
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +1 -10
- package/dest/common/errors.d.ts +5 -0
- package/dest/common/errors.d.ts.map +1 -1
- package/dest/common/errors.js +6 -1
- package/dest/index.d.ts +1 -0
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +2 -1
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +3 -1
- package/dest/public/abstract_phase_manager.d.ts +10 -4
- package/dest/public/abstract_phase_manager.d.ts.map +1 -1
- package/dest/public/abstract_phase_manager.js +50 -19
- package/dest/public/app_logic_phase_manager.d.ts +1 -0
- package/dest/public/app_logic_phase_manager.d.ts.map +1 -1
- package/dest/public/app_logic_phase_manager.js +3 -3
- package/dest/public/execution.d.ts +9 -0
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +1 -1
- package/dest/public/executor.d.ts +2 -2
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +34 -17
- package/dest/public/hints_builder.d.ts +3 -3
- package/dest/public/hints_builder.d.ts.map +1 -1
- package/dest/public/hints_builder.js +3 -3
- package/dest/public/public_execution_context.d.ts +10 -4
- package/dest/public/public_execution_context.d.ts.map +1 -1
- package/dest/public/public_execution_context.js +19 -6
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +5 -3
- package/dest/public/setup_phase_manager.d.ts +1 -0
- package/dest/public/setup_phase_manager.d.ts.map +1 -1
- package/dest/public/setup_phase_manager.js +3 -2
- package/dest/public/tail_phase_manager.d.ts +1 -1
- package/dest/public/tail_phase_manager.d.ts.map +1 -1
- package/dest/public/tail_phase_manager.js +4 -26
- package/dest/public/teardown_phase_manager.d.ts +1 -0
- package/dest/public/teardown_phase_manager.d.ts.map +1 -1
- package/dest/public/teardown_phase_manager.js +3 -2
- package/dest/public/transitional_adaptors.d.ts +4 -17
- package/dest/public/transitional_adaptors.d.ts.map +1 -1
- package/dest/public/transitional_adaptors.js +27 -119
- package/dest/rollup/index.d.ts +2 -0
- package/dest/rollup/index.d.ts.map +1 -0
- package/dest/rollup/index.js +2 -0
- package/dest/rollup/rollup.d.ts +77 -0
- package/dest/rollup/rollup.d.ts.map +1 -0
- package/dest/rollup/rollup.js +78 -0
- package/dest/stats/index.d.ts +2 -0
- package/dest/stats/index.d.ts.map +1 -0
- package/dest/stats/index.js +2 -0
- package/dest/stats/stats.d.ts +4 -0
- package/dest/stats/stats.d.ts.map +1 -0
- package/dest/stats/stats.js +11 -0
- package/package.json +8 -8
- package/src/acvm/acvm.ts +2 -2
- package/src/acvm/oracle/oracle.ts +62 -36
- package/src/acvm/oracle/typed_oracle.ts +19 -11
- package/src/avm/avm_execution_environment.ts +34 -42
- package/src/avm/avm_gas.ts +3 -0
- package/src/avm/avm_machine_state.ts +14 -25
- package/src/avm/avm_memory_types.ts +1 -1
- package/src/avm/avm_message_call_result.ts +3 -14
- package/src/avm/avm_simulator.ts +24 -12
- package/src/avm/errors.ts +94 -4
- package/src/avm/journal/journal.ts +134 -9
- package/src/avm/journal/nullifiers.ts +19 -8
- package/src/avm/journal/public_storage.ts +23 -2
- package/src/avm/journal/trace.ts +3 -4
- package/src/avm/journal/trace_types.ts +1 -0
- package/src/avm/opcodes/bitwise.ts +18 -7
- package/src/avm/opcodes/conversion.ts +59 -0
- package/src/avm/opcodes/environment_getters.ts +21 -65
- package/src/avm/opcodes/external_calls.ts +32 -16
- package/src/avm/serialization/bytecode_serialization.ts +5 -0
- package/src/avm/serialization/instruction_serialization.ts +3 -0
- package/src/client/client_execution_context.ts +142 -46
- package/src/client/db_oracle.ts +4 -18
- package/src/client/execution_result.ts +75 -25
- package/src/client/logs_cache.ts +65 -0
- package/src/client/private_execution.ts +6 -10
- package/src/client/simulator.ts +8 -84
- package/src/client/unconstrained_execution.ts +2 -2
- package/src/client/view_data_oracle.ts +0 -10
- package/src/common/errors.ts +5 -0
- package/src/index.ts +1 -0
- package/src/mocks/fixtures.ts +2 -0
- package/src/public/abstract_phase_manager.ts +59 -23
- package/src/public/app_logic_phase_manager.ts +2 -1
- package/src/public/execution.ts +9 -0
- package/src/public/executor.ts +47 -14
- package/src/public/hints_builder.ts +5 -5
- package/src/public/public_execution_context.ts +18 -4
- package/src/public/public_processor.ts +8 -2
- package/src/public/setup_phase_manager.ts +16 -8
- package/src/public/tail_phase_manager.ts +8 -35
- package/src/public/teardown_phase_manager.ts +16 -8
- package/src/public/transitional_adaptors.ts +39 -177
- package/src/rollup/index.ts +1 -0
- package/src/rollup/rollup.ts +160 -0
- package/src/stats/index.ts +1 -0
- package/src/stats/stats.ts +20 -0
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
var _ClientExecutionContext_instances, _ClientExecutionContext_checkValidStaticCall;
|
|
2
2
|
import { __classPrivateFieldGet } from "tslib";
|
|
3
3
|
import { EncryptedFunctionL2Logs, EncryptedL2Log, L1NotePayload, Note, TaggedNote, UnencryptedFunctionL2Logs, } from '@aztec/circuit-types';
|
|
4
|
-
import { CallContext, FunctionData, FunctionSelector,
|
|
4
|
+
import { CallContext, FunctionData, FunctionSelector, PrivateContextInputs, PublicCallRequest, } from '@aztec/circuits.js';
|
|
5
5
|
import { Aes128 } from '@aztec/circuits.js/barretenberg';
|
|
6
6
|
import { computePublicDataTreeLeafSlot, computeUniqueNoteHash, siloNoteHash } from '@aztec/circuits.js/hash';
|
|
7
7
|
import { countArgumentsSize } from '@aztec/foundation/abi';
|
|
8
8
|
import { Fr } from '@aztec/foundation/fields';
|
|
9
9
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
10
10
|
import { toACVMWitness } from '../acvm/index.js';
|
|
11
|
+
import { CountedLog } from './execution_result.js';
|
|
11
12
|
import { pickNotes } from './pick_notes.js';
|
|
12
13
|
import { executePrivateFunction } from './private_execution.js';
|
|
13
14
|
import { ViewDataOracle } from './view_data_oracle.js';
|
|
@@ -19,7 +20,7 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
19
20
|
/** Header of a block whose state is used during private execution (not the block the transaction is included in). */
|
|
20
21
|
historicalHeader,
|
|
21
22
|
/** List of transient auth witnesses to be used during this simulation */
|
|
22
|
-
authWitnesses, packedValuesCache, noteCache, db, node, sideEffectCounter = 0, log = createDebugLogger('aztec:simulator:client_execution_context')) {
|
|
23
|
+
authWitnesses, packedValuesCache, noteCache, logsCache, db, node, sideEffectCounter = 0, log = createDebugLogger('aztec:simulator:client_execution_context')) {
|
|
23
24
|
super(contractAddress, authWitnesses, db, node, log);
|
|
24
25
|
_ClientExecutionContext_instances.add(this);
|
|
25
26
|
this.argsHash = argsHash;
|
|
@@ -28,6 +29,7 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
28
29
|
this.historicalHeader = historicalHeader;
|
|
29
30
|
this.packedValuesCache = packedValuesCache;
|
|
30
31
|
this.noteCache = noteCache;
|
|
32
|
+
this.logsCache = logsCache;
|
|
31
33
|
this.node = node;
|
|
32
34
|
this.sideEffectCounter = sideEffectCounter;
|
|
33
35
|
/**
|
|
@@ -47,12 +49,13 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
47
49
|
* because these notes are meant to be maintained on a per-call basis
|
|
48
50
|
* They should act as references for the read requests output by an app circuit via public inputs.
|
|
49
51
|
*/
|
|
50
|
-
this.
|
|
51
|
-
this.nullifiedNoteHashCounters =
|
|
52
|
+
this.noteHashLeafIndexMap = new Map();
|
|
53
|
+
this.nullifiedNoteHashCounters = new Map();
|
|
52
54
|
this.encryptedLogs = [];
|
|
53
55
|
this.unencryptedLogs = [];
|
|
54
56
|
this.nestedExecutions = [];
|
|
55
57
|
this.enqueuedPublicFunctionCalls = [];
|
|
58
|
+
this.publicTeardownFunctionCall = PublicCallRequest.empty();
|
|
56
59
|
}
|
|
57
60
|
// We still need this function until we can get user-defined ordering of structs for fn arguments
|
|
58
61
|
// TODO When that is sorted out on noir side, we can use instead the utilities in serialize.ts
|
|
@@ -72,23 +75,11 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
72
75
|
return toACVMWitness(0, fields);
|
|
73
76
|
}
|
|
74
77
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* or to flag non-transient reads with their leafIndex.
|
|
78
|
-
* The KernelProver will use this to fully populate witnesses and provide hints to
|
|
79
|
-
* the kernel regarding which commitments each transient read request corresponds to.
|
|
80
|
-
* @param noteHashReadRequests - SideEffect containing Note hashed of the notes being read and counter.
|
|
81
|
-
* @returns An array of partially filled in read request membership witnesses.
|
|
78
|
+
* The KernelProver will use this to fully populate witnesses and provide hints to the kernel circuit
|
|
79
|
+
* regarding which note hash each settled read request corresponds to.
|
|
82
80
|
*/
|
|
83
|
-
|
|
84
|
-
return
|
|
85
|
-
.filter(r => !r.isEmpty())
|
|
86
|
-
.map(r => {
|
|
87
|
-
const index = this.gotNotes.get(r.value.toBigInt());
|
|
88
|
-
return index !== undefined
|
|
89
|
-
? NoteHashReadRequestMembershipWitness.empty(index)
|
|
90
|
-
: NoteHashReadRequestMembershipWitness.emptyTransient();
|
|
91
|
-
});
|
|
81
|
+
getNoteHashLeafIndexMap() {
|
|
82
|
+
return this.noteHashLeafIndexMap;
|
|
92
83
|
}
|
|
93
84
|
/**
|
|
94
85
|
* Get the data for the newly created notes.
|
|
@@ -104,13 +95,25 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
104
95
|
* Return the encrypted logs emitted during this execution.
|
|
105
96
|
*/
|
|
106
97
|
getEncryptedLogs() {
|
|
107
|
-
return
|
|
98
|
+
return this.encryptedLogs;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Return the encrypted logs emitted during this execution and nested executions.
|
|
102
|
+
*/
|
|
103
|
+
getAllEncryptedLogs() {
|
|
104
|
+
return new EncryptedFunctionL2Logs(this.logsCache.getEncryptedLogs());
|
|
108
105
|
}
|
|
109
106
|
/**
|
|
110
107
|
* Return the encrypted logs emitted during this execution.
|
|
111
108
|
*/
|
|
112
109
|
getUnencryptedLogs() {
|
|
113
|
-
return
|
|
110
|
+
return this.unencryptedLogs;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Return the unencrypted logs emitted during this execution and nested executions.
|
|
114
|
+
*/
|
|
115
|
+
getAllUnencryptedLogs() {
|
|
116
|
+
return new UnencryptedFunctionL2Logs(this.logsCache.getUnencryptedLogs());
|
|
114
117
|
}
|
|
115
118
|
/**
|
|
116
119
|
* Return the nested execution results during this execution.
|
|
@@ -124,6 +127,12 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
124
127
|
getEnqueuedPublicFunctionCalls() {
|
|
125
128
|
return this.enqueuedPublicFunctionCalls;
|
|
126
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Return the public teardown function call set during this execution.
|
|
132
|
+
*/
|
|
133
|
+
getPublicTeardownFunctionCall() {
|
|
134
|
+
return this.publicTeardownFunctionCall;
|
|
135
|
+
}
|
|
127
136
|
/**
|
|
128
137
|
* Pack the given array of arguments.
|
|
129
138
|
* @param args - Arguments to pack
|
|
@@ -189,12 +198,12 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
189
198
|
.join(', ')}`);
|
|
190
199
|
notes.forEach(n => {
|
|
191
200
|
if (n.index !== undefined) {
|
|
192
|
-
const siloedNoteHash = siloNoteHash(n.contractAddress, n.innerNoteHash);
|
|
193
|
-
const uniqueSiloedNoteHash = computeUniqueNoteHash(n.nonce, siloedNoteHash);
|
|
194
201
|
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/1386)
|
|
195
|
-
// Should always
|
|
196
|
-
const
|
|
197
|
-
|
|
202
|
+
// Should always call computeUniqueNoteHash when publicly created notes include nonces.
|
|
203
|
+
const uniqueNoteHash = n.nonce.isZero() ? n.innerNoteHash : computeUniqueNoteHash(n.nonce, n.innerNoteHash);
|
|
204
|
+
const siloedNoteHash = siloNoteHash(n.contractAddress, uniqueNoteHash);
|
|
205
|
+
const noteHashForReadRequest = siloedNoteHash;
|
|
206
|
+
this.noteHashLeafIndexMap.set(noteHashForReadRequest.toBigInt(), n.index);
|
|
198
207
|
}
|
|
199
208
|
});
|
|
200
209
|
return notes;
|
|
@@ -234,7 +243,7 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
234
243
|
notifyNullifiedNote(innerNullifier, innerNoteHash, counter) {
|
|
235
244
|
const nullifiedNoteHashCounter = this.noteCache.nullifyNote(this.callContext.storageContractAddress, innerNullifier, innerNoteHash);
|
|
236
245
|
if (nullifiedNoteHashCounter !== undefined) {
|
|
237
|
-
this.nullifiedNoteHashCounters.
|
|
246
|
+
this.nullifiedNoteHashCounters.set(nullifiedNoteHashCounter, counter);
|
|
238
247
|
}
|
|
239
248
|
return Promise.resolve();
|
|
240
249
|
}
|
|
@@ -246,23 +255,38 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
246
255
|
* @param publicKey - The public key of the account that can decrypt the log.
|
|
247
256
|
* @param log - The log contents.
|
|
248
257
|
*/
|
|
249
|
-
emitEncryptedLog(contractAddress, storageSlot, noteTypeId, publicKey, log) {
|
|
258
|
+
emitEncryptedLog(contractAddress, storageSlot, noteTypeId, publicKey, log, counter) {
|
|
250
259
|
const note = new Note(log);
|
|
251
260
|
const l1NotePayload = new L1NotePayload(note, contractAddress, storageSlot, noteTypeId);
|
|
252
261
|
const taggedNote = new TaggedNote(l1NotePayload);
|
|
253
262
|
const encryptedNote = taggedNote.toEncryptedBuffer(publicKey);
|
|
254
263
|
const encryptedLog = new EncryptedL2Log(encryptedNote);
|
|
255
|
-
this.encryptedLogs.push(encryptedLog);
|
|
256
|
-
|
|
264
|
+
this.encryptedLogs.push(new CountedLog(encryptedLog, counter));
|
|
265
|
+
this.logsCache.addEncryptedLog(encryptedLog);
|
|
266
|
+
return encryptedNote;
|
|
257
267
|
}
|
|
258
268
|
/**
|
|
259
269
|
* Emit an unencrypted log.
|
|
260
270
|
* @param log - The unencrypted log to be emitted.
|
|
261
271
|
*/
|
|
262
|
-
emitUnencryptedLog(log) {
|
|
263
|
-
this.unencryptedLogs.push(log);
|
|
272
|
+
emitUnencryptedLog(log, counter) {
|
|
273
|
+
this.unencryptedLogs.push(new CountedLog(log, counter));
|
|
274
|
+
this.logsCache.addUnencryptedLog(log);
|
|
264
275
|
const text = log.toHumanReadable();
|
|
265
276
|
this.log.verbose(`Emitted unencrypted log: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`);
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Emit a contract class unencrypted log.
|
|
280
|
+
* This fn exists separately from emitUnencryptedLog because sha hashing the preimage
|
|
281
|
+
* is too large to compile (16,200 fields, 518,400 bytes) => the oracle hashes it.
|
|
282
|
+
* See private_context.nr
|
|
283
|
+
* @param log - The unencrypted log to be emitted.
|
|
284
|
+
*/
|
|
285
|
+
emitContractClassUnencryptedLog(log, counter) {
|
|
286
|
+
this.unencryptedLogs.push(new CountedLog(log, counter));
|
|
287
|
+
this.logsCache.addUnencryptedLog(log);
|
|
288
|
+
const text = log.toHumanReadable();
|
|
289
|
+
this.log.verbose(`Emitted unencrypted log from ContractClassRegisterer: "${text.length > 100 ? text.slice(0, 100) + '...' : text}"`);
|
|
266
290
|
return Fr.fromBuffer(log.hash());
|
|
267
291
|
}
|
|
268
292
|
/**
|
|
@@ -282,7 +306,7 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
282
306
|
const targetFunctionData = FunctionData.fromAbi(targetArtifact);
|
|
283
307
|
const derivedTxContext = this.txContext.clone();
|
|
284
308
|
const derivedCallContext = this.deriveCallContext(targetContractAddress, targetArtifact, sideEffectCounter, isDelegateCall, isStaticCall);
|
|
285
|
-
const context = new ClientExecutionContext(targetContractAddress, argsHash, derivedTxContext, derivedCallContext, this.historicalHeader, this.authWitnesses, this.packedValuesCache, this.noteCache, this.db, this.node, sideEffectCounter);
|
|
309
|
+
const context = new ClientExecutionContext(targetContractAddress, argsHash, derivedTxContext, derivedCallContext, this.historicalHeader, this.authWitnesses, this.packedValuesCache, this.noteCache, this.logsCache, this.db, this.node, sideEffectCounter);
|
|
286
310
|
const childExecutionResult = await executePrivateFunction(context, targetArtifact, targetContractAddress, targetFunctionData);
|
|
287
311
|
if (isStaticCall) {
|
|
288
312
|
__classPrivateFieldGet(this, _ClientExecutionContext_instances, "m", _ClientExecutionContext_checkValidStaticCall).call(this, childExecutionResult);
|
|
@@ -291,9 +315,7 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
291
315
|
return childExecutionResult.callStackItem;
|
|
292
316
|
}
|
|
293
317
|
/**
|
|
294
|
-
* Creates a PublicCallStackItem object representing the request to call a public function.
|
|
295
|
-
* is actually called, since that must happen on the sequencer side. All the fields related to the result
|
|
296
|
-
* of the execution are empty.
|
|
318
|
+
* Creates a PublicCallStackItem object representing the request to call a public function.
|
|
297
319
|
* @param targetContractAddress - The address of the contract to call.
|
|
298
320
|
* @param functionSelector - The function selector of the function to call.
|
|
299
321
|
* @param argsHash - The packed arguments to pass to the function.
|
|
@@ -301,26 +323,56 @@ export class ClientExecutionContext extends ViewDataOracle {
|
|
|
301
323
|
* @param isStaticCall - Whether the call is a static call.
|
|
302
324
|
* @returns The public call stack item with the request information.
|
|
303
325
|
*/
|
|
304
|
-
async
|
|
326
|
+
async createPublicCallRequest(callType, targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, isDelegateCall) {
|
|
305
327
|
isStaticCall = isStaticCall || this.callContext.isStaticCall;
|
|
306
328
|
const targetArtifact = await this.db.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
307
329
|
const derivedCallContext = this.deriveCallContext(targetContractAddress, targetArtifact, sideEffectCounter, isDelegateCall, isStaticCall);
|
|
308
330
|
const args = this.packedValuesCache.unpack(argsHash);
|
|
309
|
-
|
|
331
|
+
// TODO($846): if enqueued public calls are associated with global
|
|
332
|
+
// side-effect counter, that will leak info about how many other private
|
|
333
|
+
// side-effects occurred in the TX. Ultimately the private kernel should
|
|
334
|
+
// just output everything in the proper order without any counters.
|
|
335
|
+
this.log.verbose(`Created PublicCallRequest of type [${callType}], side-effect counter [${sideEffectCounter}] to ${targetContractAddress}:${functionSelector}(${targetArtifact.name})`);
|
|
336
|
+
return PublicCallRequest.from({
|
|
310
337
|
args,
|
|
311
338
|
callContext: derivedCallContext,
|
|
312
339
|
parentCallContext: this.callContext,
|
|
313
340
|
functionData: FunctionData.fromAbi(targetArtifact),
|
|
314
341
|
contractAddress: targetContractAddress,
|
|
315
342
|
});
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Creates and enqueues a PublicCallStackItem object representing the request to call a public function. No function
|
|
346
|
+
* is actually called, since that must happen on the sequencer side. All the fields related to the result
|
|
347
|
+
* of the execution are empty.
|
|
348
|
+
* @param targetContractAddress - The address of the contract to call.
|
|
349
|
+
* @param functionSelector - The function selector of the function to call.
|
|
350
|
+
* @param argsHash - The packed arguments to pass to the function.
|
|
351
|
+
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
352
|
+
* @param isStaticCall - Whether the call is a static call.
|
|
353
|
+
* @returns The public call stack item with the request information.
|
|
354
|
+
*/
|
|
355
|
+
async enqueuePublicFunctionCall(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, isDelegateCall) {
|
|
356
|
+
const enqueuedRequest = await this.createPublicCallRequest('enqueued', targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, isDelegateCall);
|
|
321
357
|
this.enqueuedPublicFunctionCalls.push(enqueuedRequest);
|
|
322
358
|
return enqueuedRequest;
|
|
323
359
|
}
|
|
360
|
+
/**
|
|
361
|
+
* Creates a PublicCallStackItem and sets it as the public teardown function. No function
|
|
362
|
+
* is actually called, since that must happen on the sequencer side. All the fields related to the result
|
|
363
|
+
* of the execution are empty.
|
|
364
|
+
* @param targetContractAddress - The address of the contract to call.
|
|
365
|
+
* @param functionSelector - The function selector of the function to call.
|
|
366
|
+
* @param argsHash - The packed arguments to pass to the function.
|
|
367
|
+
* @param sideEffectCounter - The side effect counter at the start of the call.
|
|
368
|
+
* @param isStaticCall - Whether the call is a static call.
|
|
369
|
+
* @returns The public call stack item with the request information.
|
|
370
|
+
*/
|
|
371
|
+
async setPublicTeardownFunctionCall(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, isDelegateCall) {
|
|
372
|
+
const publicTeardownFunctionCall = await this.createPublicCallRequest('teardown', targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, isDelegateCall);
|
|
373
|
+
this.publicTeardownFunctionCall = publicTeardownFunctionCall;
|
|
374
|
+
return publicTeardownFunctionCall;
|
|
375
|
+
}
|
|
324
376
|
/**
|
|
325
377
|
* Derives the call context for a nested execution.
|
|
326
378
|
* @param targetContractAddress - The address of the contract being called.
|
|
@@ -370,4 +422,4 @@ _ClientExecutionContext_instances = new WeakSet(), _ClientExecutionContext_check
|
|
|
370
422
|
throw new Error(`Static call cannot create new notes, emit L2->L1 messages or generate logs`);
|
|
371
423
|
}
|
|
372
424
|
};
|
|
373
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X2V4ZWN1dGlvbl9jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jbGllbnRfZXhlY3V0aW9uX2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBR0wsdUJBQXVCLEVBQ3ZCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsSUFBSSxFQUVKLFVBQVUsRUFDVix5QkFBeUIsR0FFMUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFFaEIsb0NBQW9DLEVBQ3BDLG9CQUFvQixFQUNwQixpQkFBaUIsR0FHbEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdHLE9BQU8sRUFBMkMsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRyxPQUFPLEVBQUUsRUFBRSxFQUFjLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFpQixhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUtoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXZEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUF1QixTQUFRLGNBQWM7SUF5QnhELFlBQ0UsZUFBNkIsRUFDWixRQUFZLEVBQ1osU0FBb0IsRUFDcEIsV0FBd0I7SUFDekMscUhBQXFIO0lBQ2xHLGdCQUF3QjtJQUMzQyx5RUFBeUU7SUFDekUsYUFBNEIsRUFDWCxpQkFBb0MsRUFDcEMsU0FBNkIsRUFDOUMsRUFBWSxFQUNKLElBQWUsRUFDYixvQkFBNEIsQ0FBQyxFQUN2QyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsMENBQTBDLENBQUM7UUFFbkUsS0FBSyxDQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQzs7UUFkcEMsYUFBUSxHQUFSLFFBQVEsQ0FBSTtRQUNaLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFFdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO1FBRzFCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBb0I7UUFFdEMsU0FBSSxHQUFKLElBQUksQ0FBVztRQUNiLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBWTtRQXJDekM7Ozs7OztXQU1HO1FBQ0ssYUFBUSxHQUFrQixFQUFFLENBQUM7UUFDckM7Ozs7Ozs7O1dBUUc7UUFDSyxhQUFRLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDMUMsOEJBQXlCLEdBQStCLEVBQUUsQ0FBQztRQUMzRCxrQkFBYSxHQUFxQixFQUFFLENBQUM7UUFDckMsb0JBQWUsR0FBdUIsRUFBRSxDQUFDO1FBQ3pDLHFCQUFnQixHQUFzQixFQUFFLENBQUM7UUFDekMsZ0NBQTJCLEdBQXdCLEVBQUUsQ0FBQztJQW1COUQsQ0FBQztJQUVELGlHQUFpRztJQUNqRyw4RkFBOEY7SUFDOUY7Ozs7T0FJRztJQUNJLGlCQUFpQixDQUFDLEdBQWdCO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTlDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTFELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxhQUFhLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDNUMsQ0FBQztRQUVELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxvQkFBb0IsQ0FDbkQsSUFBSSxDQUFDLFdBQVcsRUFDaEIsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxpQkFBaUIsQ0FDdkIsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzdELE9BQU8sYUFBYSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxzQ0FBc0MsQ0FBQyxvQkFBa0M7UUFDOUUsT0FBTyxvQkFBb0I7YUFDeEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDekIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1AsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ3BELE9BQU8sS0FBSyxLQUFLLFNBQVM7Z0JBQ3hCLENBQUMsQ0FBQyxvQ0FBb0MsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUNuRCxDQUFDLENBQUMsb0NBQW9DLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVNLDRCQUE0QjtRQUNqQyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLHVCQUF1QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLHlCQUF5QixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVEOztPQUVHO0lBQ0ksOEJBQThCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDO0lBQzFDLENBQUM7SUFFRDs7O09BR0c7SUFDYSxrQkFBa0IsQ0FBQyxJQUFVO1FBQzNDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7T0FHRztJQUNhLFdBQVcsQ0FBQyxPQUFhO1FBQ3ZDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7T0FHRztJQUNhLGFBQWEsQ0FBQyxXQUFlO1FBQzNDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BbUJHO0lBQ2EsS0FBSyxDQUFDLFFBQVEsQ0FDNUIsV0FBZSxFQUNmLFVBQWtCLEVBQ2xCLGVBQXlCLEVBQ3pCLGVBQXlCLEVBQ3pCLGVBQXlCLEVBQ3pCLFlBQWtCLEVBQ2xCLGlCQUEyQixFQUMzQixhQUF1QixFQUN2QixhQUF1QixFQUN2QixhQUF1QixFQUN2QixTQUFtQixFQUNuQixLQUFhLEVBQ2IsTUFBYyxFQUNkLE1BQWtCO1FBRWxCLDZEQUE2RDtRQUM3RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRW5HLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2hHLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckcsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFFLENBQUMsQ0FBQyxlQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFckcsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFXLENBQUMsR0FBRyxlQUFlLEVBQUUsR0FBRyxZQUFZLENBQUMsRUFBRTtZQUN2RSxPQUFPLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDL0QsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDM0UsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7YUFDakMsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxFQUFFLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN0QyxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN2RSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQzthQUNwQixDQUFDLENBQUM7WUFDSCxLQUFLO1lBQ0wsTUFBTTtTQUNQLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUNaLGFBQWEsS0FBSyxDQUFDLE1BQU0sY0FBYyxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixPQUFPLFdBQVcsS0FBSyxLQUFLO2FBQ3ZHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQzthQUNwRixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDaEIsQ0FBQztRQUVGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEIsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMxQixNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ3hFLE1BQU0sb0JBQW9CLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDNUUsb0VBQW9FO2dCQUNwRSxvRkFBb0Y7Z0JBQ3BGLE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDeEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDYSxpQkFBaUIsQ0FDL0IsV0FBZSxFQUNmLFVBQWMsRUFDZCxTQUFlLEVBQ2YsYUFBaUIsRUFDakIsT0FBZTtRQUVmLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUN2QjtZQUNFLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQjtZQUN4RCxXQUFXO1lBQ1gsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsa0RBQWtEO1lBQ2xFLElBQUk7WUFDSixlQUFlLEVBQUUsU0FBUyxFQUFFLDJEQUEyRDtZQUN2RixhQUFhO1NBQ2QsRUFDRCxPQUFPLENBQ1IsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ2pCLFdBQVc7WUFDWCxVQUFVO1lBQ1YsSUFBSTtTQUNMLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNhLG1CQUFtQixDQUFDLGNBQWtCLEVBQUUsYUFBaUIsRUFBRSxPQUFlO1FBQ3hGLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQ3pELElBQUksQ0FBQyxXQUFXLENBQUMsc0JBQXNCLEVBQ3ZDLGNBQWMsRUFDZCxhQUFhLENBQ2QsQ0FBQztRQUNGLElBQUksd0JBQXdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2hILENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNhLGdCQUFnQixDQUM5QixlQUE2QixFQUM3QixXQUFlLEVBQ2YsVUFBYyxFQUNkLFNBQWdCLEVBQ2hCLEdBQVM7UUFFVCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN4RixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqRCxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdEMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7O09BR0c7SUFDYSxrQkFBa0IsQ0FBQyxHQUFxQjtRQUN0RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDeEcsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFjRDs7Ozs7Ozs7O09BU0c7SUFDTSxLQUFLLENBQUMsbUJBQW1CLENBQ2hDLHFCQUFtQyxFQUNuQyxnQkFBa0MsRUFDbEMsUUFBWSxFQUNaLGlCQUF5QixFQUN6QixZQUFxQixFQUNyQixjQUF1QjtRQUV2QixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FDWiw0QkFBNEIsSUFBSSxDQUFDLGVBQWUsSUFBSSxnQkFBZ0IsU0FBUyxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLENBQ3ZILENBQUM7UUFFRixZQUFZLEdBQUcsWUFBWSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDO1FBRTdELE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xHLE1BQU0sa0JBQWtCLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVoRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFaEQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQy9DLHFCQUFxQixFQUNyQixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxZQUFZLENBQ2IsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLElBQUksc0JBQXNCLENBQ3hDLHFCQUFxQixFQUNyQixRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLGtCQUFrQixFQUNsQixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksQ0FBQyxhQUFhLEVBQ2xCLElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsRUFBRSxFQUNQLElBQUksQ0FBQyxJQUFJLEVBQ1QsaUJBQWlCLENBQ2xCLENBQUM7UUFFRixNQUFNLG9CQUFvQixHQUFHLE1BQU0sc0JBQXNCLENBQ3ZELE9BQU8sRUFDUCxjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLGtCQUFrQixDQUNuQixDQUFDO1FBRUYsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQix1QkFBQSxJQUFJLHVGQUFzQixNQUExQixJQUFJLEVBQXVCLG9CQUFvQixDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUVqRCxPQUFPLG9CQUFvQixDQUFDLGFBQWEsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNhLEtBQUssQ0FBQyx5QkFBeUIsQ0FDN0MscUJBQW1DLEVBQ25DLGdCQUFrQyxFQUNsQyxRQUFZLEVBQ1osaUJBQXlCLEVBQ3pCLFlBQXFCLEVBQ3JCLGNBQXVCO1FBRXZCLFlBQVksR0FBRyxZQUFZLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7UUFFN0QsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLHFCQUFxQixFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDbEcsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQy9DLHFCQUFxQixFQUNyQixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxZQUFZLENBQ2IsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsTUFBTSxlQUFlLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1lBQzdDLElBQUk7WUFDSixXQUFXLEVBQUUsa0JBQWtCO1lBQy9CLGlCQUFpQixFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ25DLFlBQVksRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztZQUNsRCxlQUFlLEVBQUUscUJBQXFCO1NBQ3ZDLENBQUMsQ0FBQztRQUVILGtFQUFrRTtRQUNsRSx3RUFBd0U7UUFDeEUsd0VBQXdFO1FBQ3hFLG1FQUFtRTtRQUNuRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FDZCwrREFBK0QsaUJBQWlCLEtBQUsscUJBQXFCLElBQUksZ0JBQWdCLElBQUksY0FBYyxDQUFDLElBQUksR0FBRyxDQUN6SixDQUFDO1FBRUYsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV2RCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSyxpQkFBaUIsQ0FDdkIscUJBQW1DLEVBQ25DLGNBQWdDLEVBQ2hDLHNCQUE4QixFQUM5QixjQUFjLEdBQUcsS0FBSyxFQUN0QixZQUFZLEdBQUcsS0FBSztRQUVwQixPQUFPLElBQUksV0FBVyxDQUNwQixjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUNsRSxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUM3RCxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFDdEYsY0FBYyxFQUNkLFlBQVksRUFDWixzQkFBc0IsQ0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ2EsS0FBSyxDQUFDLFdBQVcsQ0FBQyxnQkFBb0IsRUFBRSxnQkFBd0I7UUFDOUUsb0dBQW9HO1FBQ3BHLHVDQUF1QztRQUN2QyxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7UUFFMUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLEtBQUssSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzNDLE1BQU0sV0FBVyxHQUFHLElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2RCxNQUFNLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ3JHLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkUsQ0FBQztZQUNELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLDZCQUE2QixXQUFXLENBQUMsUUFBUSxFQUFFLFVBQVUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNyRixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRWUsYUFBYSxDQUFDLEtBQWEsRUFBRSxvQkFBNEIsRUFBRSxHQUFXO1FBQ3BGLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7UUFDNUIsT0FBTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRjt3SkF6THVCLG9CQUFxQztJQUN6RCxJQUNFLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNGLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNGLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNGLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUYsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLDZCQUE2QixDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNoRyxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7QUFDSCxDQUFDIn0=
|
|
425
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50X2V4ZWN1dGlvbl9jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC9jbGllbnRfZXhlY3V0aW9uX2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBR0wsdUJBQXVCLEVBQ3ZCLGNBQWMsRUFDZCxhQUFhLEVBQ2IsSUFBSSxFQUVKLFVBQVUsRUFDVix5QkFBeUIsR0FFMUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFFaEIsb0JBQW9CLEVBQ3BCLGlCQUFpQixHQUVsQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0csT0FBTyxFQUEyQyxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBHLE9BQU8sRUFBRSxFQUFFLEVBQWMsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUxRCxPQUFPLEVBQWlCLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSWhFLE9BQU8sRUFBRSxVQUFVLEVBQTBDLE1BQU0sdUJBQXVCLENBQUM7QUFFM0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RDs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxjQUFjO0lBMEJ4RCxZQUNFLGVBQTZCLEVBQ1osUUFBWSxFQUNaLFNBQW9CLEVBQ3BCLFdBQXdCO0lB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
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type L2Block, type MerkleTreeId, type NoteStatus, type NullifierMembershipWitness, type PublicDataWitness } from '@aztec/circuit-types';
|
|
2
2
|
import { type CompleteAddress, type Header } from '@aztec/circuits.js';
|
|
3
|
-
import { type
|
|
3
|
+
import { type FunctionArtifact, type FunctionSelector } from '@aztec/foundation/abi';
|
|
4
4
|
import { type AztecAddress } from '@aztec/foundation/aztec-address';
|
|
5
|
-
import { type Fr
|
|
5
|
+
import { type Fr } from '@aztec/foundation/fields';
|
|
6
6
|
import { type ContractInstance } from '@aztec/types/contracts';
|
|
7
7
|
import { type NoteData, type NullifierKeys } from '../acvm/index.js';
|
|
8
8
|
import { type CommitmentsDB } from '../public/db.js';
|
|
@@ -46,13 +46,6 @@ export interface DBOracle extends CommitmentsDB {
|
|
|
46
46
|
* @remarks A capsule is a "blob" of data that is passed to the contract through an oracle.
|
|
47
47
|
*/
|
|
48
48
|
popCapsule(): Promise<Fr[]>;
|
|
49
|
-
/**
|
|
50
|
-
* Gets public keys for an address.
|
|
51
|
-
* @param The address to look up
|
|
52
|
-
* @returns The public keys for a specific address
|
|
53
|
-
* TODO(#5834): Replace with `getCompleteAddress`.
|
|
54
|
-
*/
|
|
55
|
-
getPublicKeysForAddress(address: AztecAddress): Promise<Point[]>;
|
|
56
49
|
/**
|
|
57
50
|
* Retrieve nullifier keys associated with a specific account and app/contract address.
|
|
58
51
|
*
|
|
@@ -81,7 +74,7 @@ export interface DBOracle extends CommitmentsDB {
|
|
|
81
74
|
* @param selector - The corresponding function selector.
|
|
82
75
|
* @returns A Promise that resolves to a FunctionArtifact object.
|
|
83
76
|
*/
|
|
84
|
-
getFunctionArtifact(contractAddress: AztecAddress, selector: FunctionSelector): Promise<
|
|
77
|
+
getFunctionArtifact(contractAddress: AztecAddress, selector: FunctionSelector): Promise<FunctionArtifact>;
|
|
85
78
|
/**
|
|
86
79
|
* Retrieves the artifact of a specified function within a given contract.
|
|
87
80
|
* The function is identified by its name, which is unique within a contract.
|
|
@@ -90,7 +83,7 @@ export interface DBOracle extends CommitmentsDB {
|
|
|
90
83
|
* @param functionName - The name of the function.
|
|
91
84
|
* @returns The corresponding function's artifact as an object.
|
|
92
85
|
*/
|
|
93
|
-
getFunctionArtifactByName(contractAddress: AztecAddress, functionName: string): Promise<
|
|
86
|
+
getFunctionArtifactByName(contractAddress: AztecAddress, functionName: string): Promise<FunctionArtifact | undefined>;
|
|
94
87
|
/**
|
|
95
88
|
* Gets the index of a nullifier in the nullifier tree.
|
|
96
89
|
* @param nullifier - The nullifier.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db_oracle.d.ts","sourceRoot":"","sources":["../../src/client/db_oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"db_oracle.d.ts","sourceRoot":"","sources":["../../src/client/db_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { type
|
|
3
|
-
import { type
|
|
2
|
+
import { EncryptedFunctionL2Logs, type EncryptedL2Log, type Note, UnencryptedFunctionL2Logs, type UnencryptedL2Log } from '@aztec/circuit-types';
|
|
3
|
+
import { type IsEmpty, type PrivateCallStackItem, PublicCallRequest } from '@aztec/circuits.js';
|
|
4
4
|
import { type Fr } from '@aztec/foundation/fields';
|
|
5
5
|
import { type ACVMField } from '../acvm/index.js';
|
|
6
6
|
/**
|
|
@@ -14,9 +14,11 @@ export interface NoteAndSlot {
|
|
|
14
14
|
/** The note type identifier. */
|
|
15
15
|
noteTypeId: Fr;
|
|
16
16
|
}
|
|
17
|
-
export
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
export declare class CountedLog<TLog extends UnencryptedL2Log | EncryptedL2Log> implements IsEmpty {
|
|
18
|
+
log: TLog;
|
|
19
|
+
counter: number;
|
|
20
|
+
constructor(log: TLog, counter: number);
|
|
21
|
+
isEmpty(): boolean;
|
|
20
22
|
}
|
|
21
23
|
/**
|
|
22
24
|
* The result of executing a private function.
|
|
@@ -30,45 +32,50 @@ export interface ExecutionResult {
|
|
|
30
32
|
partialWitness: Map<number, ACVMField>;
|
|
31
33
|
/** The call stack item. */
|
|
32
34
|
callStackItem: PrivateCallStackItem;
|
|
33
|
-
/**
|
|
34
|
-
|
|
35
|
+
/** Mapping of note hash to its index in the note hash tree. Used for building hints for note hash read requests. */
|
|
36
|
+
noteHashLeafIndexMap: Map<bigint, bigint>;
|
|
35
37
|
/** The notes created in the executed function. */
|
|
36
38
|
newNotes: NoteAndSlot[];
|
|
37
|
-
|
|
39
|
+
/** Mapping of note hash counter to the counter of its nullifier. */
|
|
40
|
+
nullifiedNoteHashCounters: Map<number, number>;
|
|
38
41
|
/** The raw return values of the executed function. */
|
|
39
42
|
returnValues: Fr[];
|
|
40
43
|
/** The nested executions. */
|
|
41
44
|
nestedExecutions: this[];
|
|
42
45
|
/** Enqueued public function execution requests to be picked up by the sequencer. */
|
|
43
46
|
enqueuedPublicFunctionCalls: PublicCallRequest[];
|
|
47
|
+
/** Public function execution requested for teardown */
|
|
48
|
+
publicTeardownFunctionCall: PublicCallRequest;
|
|
44
49
|
/**
|
|
45
50
|
* Encrypted logs emitted during execution of this function call.
|
|
46
51
|
* Note: These are preimages to `encryptedLogsHashes`.
|
|
47
52
|
*/
|
|
48
|
-
encryptedLogs:
|
|
53
|
+
encryptedLogs: CountedLog<EncryptedL2Log>[];
|
|
49
54
|
/**
|
|
50
55
|
* Unencrypted logs emitted during execution of this function call.
|
|
51
56
|
* Note: These are preimages to `unencryptedLogsHashes`.
|
|
52
57
|
*/
|
|
53
|
-
unencryptedLogs:
|
|
58
|
+
unencryptedLogs: CountedLog<UnencryptedL2Log>[];
|
|
54
59
|
}
|
|
55
|
-
export declare function
|
|
60
|
+
export declare function collectNoteHashLeafIndexMap(execResult: ExecutionResult, accum?: Map<bigint, bigint>): Map<bigint, bigint>;
|
|
61
|
+
export declare function collectNullifiedNoteHashCounters(execResult: ExecutionResult, accum?: Map<number, number>): Map<number, number>;
|
|
56
62
|
/**
|
|
57
|
-
* Collect all encrypted logs across all nested executions.
|
|
63
|
+
* Collect all encrypted logs across all nested executions and sorts by counter.
|
|
58
64
|
* @param execResult - The topmost execution result.
|
|
59
65
|
* @returns All encrypted logs.
|
|
60
66
|
*/
|
|
61
|
-
export declare function
|
|
67
|
+
export declare function collectSortedEncryptedLogs(execResult: ExecutionResult): EncryptedFunctionL2Logs;
|
|
62
68
|
/**
|
|
63
|
-
* Collect all unencrypted logs across all nested executions.
|
|
69
|
+
* Collect all unencrypted logs across all nested executions and sorts by counter.
|
|
64
70
|
* @param execResult - The topmost execution result.
|
|
65
71
|
* @returns All unencrypted logs.
|
|
66
72
|
*/
|
|
67
|
-
export declare function
|
|
73
|
+
export declare function collectSortedUnencryptedLogs(execResult: ExecutionResult): UnencryptedFunctionL2Logs;
|
|
68
74
|
/**
|
|
69
75
|
* Collect all enqueued public function calls across all nested executions.
|
|
70
76
|
* @param execResult - The topmost execution result.
|
|
71
77
|
* @returns All enqueued public function calls.
|
|
72
78
|
*/
|
|
73
79
|
export declare function collectEnqueuedPublicFunctionCalls(execResult: ExecutionResult): PublicCallRequest[];
|
|
80
|
+
export declare function collectPublicTeardownFunctionCall(execResult: ExecutionResult): PublicCallRequest;
|
|
74
81
|
//# sourceMappingURL=execution_result.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution_result.d.ts","sourceRoot":"","sources":["../../src/client/execution_result.ts"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"execution_result.d.ts","sourceRoot":"","sources":["../../src/client/execution_result.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,IAAI,EACT,yBAAyB,EACzB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,oBAAoB,EAAE,iBAAiB,EAAiB,MAAM,oBAAoB,CAAC;AAC/G,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gBAAgB;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,oCAAoC;IACpC,WAAW,EAAE,EAAE,CAAC;IAChB,gCAAgC;IAChC,UAAU,EAAE,EAAE,CAAC;CAChB;AAED,qBAAa,UAAU,CAAC,IAAI,SAAS,gBAAgB,GAAG,cAAc,CAAE,YAAW,OAAO;IACrE,GAAG,EAAE,IAAI;IAAS,OAAO,EAAE,MAAM;gBAAjC,GAAG,EAAE,IAAI,EAAS,OAAO,EAAE,MAAM;IAEpD,OAAO,IAAI,OAAO;CAGnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAE9B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEvC,2BAA2B;IAC3B,aAAa,EAAE,oBAAoB,CAAC;IACpC,oHAAoH;IACpH,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,kDAAkD;IAClD,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,oEAAoE;IACpE,yBAAyB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,sDAAsD;IACtD,YAAY,EAAE,EAAE,EAAE,CAAC;IACnB,6BAA6B;IAC7B,gBAAgB,EAAE,IAAI,EAAE,CAAC;IACzB,oFAAoF;IACpF,2BAA2B,EAAE,iBAAiB,EAAE,CAAC;IACjD,uDAAuD;IACvD,0BAA0B,EAAE,iBAAiB,CAAC;IAC9C;;;OAGG;IACH,aAAa,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;IAC5C;;;OAGG;IACH,eAAe,EAAE,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;CACjD;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,eAAe,EAAE,KAAK,GAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAa,uBAI9G;AAED,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,eAAe,EAAE,KAAK,GAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAa,uBAInH;AAWD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,eAAe,GAAG,uBAAuB,CAI/F;AAWD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,eAAe,GAAG,yBAAyB,CAInG;AAED;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,UAAU,EAAE,eAAe,GAAG,iBAAiB,EAAE,CAOnG;AAED,wBAAgB,iCAAiC,CAAC,UAAU,EAAE,eAAe,GAAG,iBAAiB,CAehG"}
|
|
@@ -1,26 +1,59 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { EncryptedFunctionL2Logs, UnencryptedFunctionL2Logs, } from '@aztec/circuit-types';
|
|
2
|
+
import { PublicCallRequest, sortByCounter } from '@aztec/circuits.js';
|
|
3
|
+
export class CountedLog {
|
|
4
|
+
constructor(log, counter) {
|
|
5
|
+
this.log = log;
|
|
6
|
+
this.counter = counter;
|
|
7
|
+
}
|
|
8
|
+
isEmpty() {
|
|
9
|
+
return !this.log.data.length && !this.counter;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export function collectNoteHashLeafIndexMap(execResult, accum = new Map()) {
|
|
13
|
+
execResult.noteHashLeafIndexMap.forEach((value, key) => accum.set(key, value));
|
|
14
|
+
execResult.nestedExecutions.forEach(nested => collectNoteHashLeafIndexMap(nested, accum));
|
|
15
|
+
return accum;
|
|
16
|
+
}
|
|
17
|
+
export function collectNullifiedNoteHashCounters(execResult, accum = new Map()) {
|
|
18
|
+
execResult.nullifiedNoteHashCounters.forEach((value, key) => accum.set(key, value));
|
|
19
|
+
execResult.nestedExecutions.forEach(nested => collectNullifiedNoteHashCounters(nested, accum));
|
|
20
|
+
return accum;
|
|
6
21
|
}
|
|
7
22
|
/**
|
|
8
23
|
* Collect all encrypted logs across all nested executions.
|
|
9
24
|
* @param execResult - The topmost execution result.
|
|
10
25
|
* @returns All encrypted logs.
|
|
11
26
|
*/
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
27
|
+
function collectEncryptedLogs(execResult) {
|
|
28
|
+
return [execResult.encryptedLogs, ...[...execResult.nestedExecutions].flatMap(collectEncryptedLogs)].flat();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Collect all encrypted logs across all nested executions and sorts by counter.
|
|
32
|
+
* @param execResult - The topmost execution result.
|
|
33
|
+
* @returns All encrypted logs.
|
|
34
|
+
*/
|
|
35
|
+
export function collectSortedEncryptedLogs(execResult) {
|
|
36
|
+
const allLogs = collectEncryptedLogs(execResult);
|
|
37
|
+
const sortedLogs = sortByCounter(allLogs);
|
|
38
|
+
return new EncryptedFunctionL2Logs(sortedLogs.map(l => l.log));
|
|
15
39
|
}
|
|
16
40
|
/**
|
|
17
41
|
* Collect all unencrypted logs across all nested executions.
|
|
18
42
|
* @param execResult - The topmost execution result.
|
|
19
43
|
* @returns All unencrypted logs.
|
|
20
44
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
45
|
+
function collectUnencryptedLogs(execResult) {
|
|
46
|
+
return [execResult.unencryptedLogs, ...[...execResult.nestedExecutions].flatMap(collectUnencryptedLogs)].flat();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Collect all unencrypted logs across all nested executions and sorts by counter.
|
|
50
|
+
* @param execResult - The topmost execution result.
|
|
51
|
+
* @returns All unencrypted logs.
|
|
52
|
+
*/
|
|
53
|
+
export function collectSortedUnencryptedLogs(execResult) {
|
|
54
|
+
const allLogs = collectUnencryptedLogs(execResult);
|
|
55
|
+
const sortedLogs = sortByCounter(allLogs);
|
|
56
|
+
return new UnencryptedFunctionL2Logs(sortedLogs.map(l => l.log));
|
|
24
57
|
}
|
|
25
58
|
/**
|
|
26
59
|
* Collect all enqueued public function calls across all nested executions.
|
|
@@ -32,7 +65,20 @@ export function collectEnqueuedPublicFunctionCalls(execResult) {
|
|
|
32
65
|
// as the kernel processes it like a stack, popping items off and pushing them to output
|
|
33
66
|
return [
|
|
34
67
|
...execResult.enqueuedPublicFunctionCalls,
|
|
35
|
-
...
|
|
68
|
+
...execResult.nestedExecutions.flatMap(collectEnqueuedPublicFunctionCalls),
|
|
36
69
|
].sort((a, b) => b.callContext.sideEffectCounter - a.callContext.sideEffectCounter);
|
|
37
70
|
}
|
|
38
|
-
|
|
71
|
+
export function collectPublicTeardownFunctionCall(execResult) {
|
|
72
|
+
const teardownCalls = [
|
|
73
|
+
execResult.publicTeardownFunctionCall,
|
|
74
|
+
...execResult.nestedExecutions.flatMap(collectPublicTeardownFunctionCall),
|
|
75
|
+
].filter(call => !call.isEmpty());
|
|
76
|
+
if (teardownCalls.length === 1) {
|
|
77
|
+
return teardownCalls[0];
|
|
78
|
+
}
|
|
79
|
+
if (teardownCalls.length > 1) {
|
|
80
|
+
throw new Error('Multiple public teardown calls detected');
|
|
81
|
+
}
|
|
82
|
+
return PublicCallRequest.empty();
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uX3Jlc3VsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvZXhlY3V0aW9uX3Jlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBR3ZCLHlCQUF5QixHQUUxQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBMkMsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFpQi9HLE1BQU0sT0FBTyxVQUFVO0lBQ3JCLFlBQW1CLEdBQVMsRUFBUyxPQUFlO1FBQWpDLFFBQUcsR0FBSCxHQUFHLENBQU07UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFRO0lBQUcsQ0FBQztJQUV4RCxPQUFPO1FBQ0wsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDaEQsQ0FBQztDQUNGO0FBMENELE1BQU0sVUFBVSwyQkFBMkIsQ0FBQyxVQUEyQixFQUFFLFFBQTZCLElBQUksR0FBRyxFQUFFO0lBQzdHLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9FLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxRixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0NBQWdDLENBQUMsVUFBMkIsRUFBRSxRQUE2QixJQUFJLEdBQUcsRUFBRTtJQUNsSCxVQUFVLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxF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
|