@aztec/simulator 0.65.1 → 0.66.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 +0 -3
- package/dest/acvm/oracle/oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/oracle.js +1 -17
- package/dest/acvm/oracle/typed_oracle.d.ts +0 -5
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +1 -10
- package/dest/avm/avm_memory_types.js +4 -4
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +5 -4
- package/dest/avm/avm_tree.d.ts +31 -14
- package/dest/avm/avm_tree.d.ts.map +1 -1
- package/dest/avm/avm_tree.js +34 -40
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +16 -10
- package/dest/avm/opcodes/environment_getters.d.ts +10 -11
- package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
- package/dest/avm/opcodes/environment_getters.js +12 -15
- package/dest/client/client_execution_context.d.ts +3 -30
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +5 -47
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +2 -4
- package/dest/public/enqueued_call_side_effect_trace.d.ts.map +1 -1
- package/dest/public/enqueued_call_side_effect_trace.js +15 -15
- package/dest/public/fixtures/index.d.ts +1 -6
- package/dest/public/fixtures/index.d.ts.map +1 -1
- package/dest/public/fixtures/index.js +24 -11
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +27 -13
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +8 -5
- package/dest/public/public_processor_metrics.d.ts +1 -1
- package/dest/public/public_processor_metrics.d.ts.map +1 -1
- package/dest/public/public_tx_context.d.ts +2 -6
- package/dest/public/public_tx_context.d.ts.map +1 -1
- package/dest/public/public_tx_context.js +23 -29
- package/dest/public/public_tx_simulator.d.ts.map +1 -1
- package/dest/public/public_tx_simulator.js +18 -5
- package/dest/public/side_effect_trace.js +8 -8
- package/dest/public/transitional_adapters.d.ts +2 -6
- package/dest/public/transitional_adapters.d.ts.map +1 -1
- package/dest/public/transitional_adapters.js +4 -67
- package/package.json +9 -9
- package/src/acvm/oracle/oracle.ts +0 -30
- package/src/acvm/oracle/typed_oracle.ts +0 -17
- package/src/avm/avm_memory_types.ts +4 -4
- package/src/avm/avm_simulator.ts +4 -3
- package/src/avm/avm_tree.ts +67 -53
- package/src/avm/journal/journal.ts +21 -9
- package/src/avm/opcodes/environment_getters.ts +1 -4
- package/src/client/client_execution_context.ts +5 -59
- package/src/client/private_execution.ts +0 -4
- package/src/public/enqueued_call_side_effect_trace.ts +14 -16
- package/src/public/fixtures/index.ts +30 -10
- package/src/public/public_db_sources.ts +29 -16
- package/src/public/public_processor.ts +6 -8
- package/src/public/public_processor_metrics.ts +1 -1
- package/src/public/public_tx_context.ts +37 -44
- package/src/public/public_tx_simulator.ts +19 -13
- package/src/public/side_effect_trace.ts +7 -7
- package/src/public/transitional_adapters.ts +6 -193
|
@@ -1,57 +1,28 @@
|
|
|
1
|
-
import { type AvmProvingRequest, ProvingRequestType, type PublicExecutionRequest } from '@aztec/circuit-types';
|
|
2
1
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
ContractStorageRead,
|
|
7
|
-
ContractStorageUpdateRequest,
|
|
8
|
-
Fr,
|
|
9
|
-
Gas,
|
|
2
|
+
type AvmCircuitPublicInputs,
|
|
3
|
+
type Fr,
|
|
4
|
+
type Gas,
|
|
10
5
|
type GasSettings,
|
|
11
6
|
type GlobalVariables,
|
|
12
|
-
type Header,
|
|
13
|
-
L2ToL1Message,
|
|
14
|
-
LogHash,
|
|
15
|
-
MAX_ENQUEUED_CALLS_PER_CALL,
|
|
16
|
-
MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL,
|
|
17
|
-
MAX_L2_TO_L1_MSGS_PER_CALL,
|
|
18
7
|
MAX_L2_TO_L1_MSGS_PER_TX,
|
|
19
|
-
MAX_NOTE_HASHES_PER_CALL,
|
|
20
8
|
MAX_NOTE_HASHES_PER_TX,
|
|
21
|
-
MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,
|
|
22
|
-
MAX_NULLIFIERS_PER_CALL,
|
|
23
|
-
MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,
|
|
24
|
-
MAX_NULLIFIER_READ_REQUESTS_PER_CALL,
|
|
25
|
-
MAX_PUBLIC_DATA_READS_PER_CALL,
|
|
26
|
-
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,
|
|
27
9
|
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX,
|
|
28
|
-
MAX_UNENCRYPTED_LOGS_PER_CALL,
|
|
29
|
-
NoteHash,
|
|
30
|
-
Nullifier,
|
|
31
10
|
PrivateToAvmAccumulatedData,
|
|
32
11
|
PrivateToAvmAccumulatedDataArrayLengths,
|
|
33
12
|
type PrivateToPublicAccumulatedData,
|
|
34
13
|
PublicCallRequest,
|
|
35
|
-
PublicCircuitPublicInputs,
|
|
36
14
|
PublicDataWrite,
|
|
37
|
-
|
|
38
|
-
ReadRequest,
|
|
39
|
-
RevertCode,
|
|
15
|
+
type RevertCode,
|
|
40
16
|
type StateReference,
|
|
41
|
-
TreeLeafReadRequest,
|
|
42
17
|
TreeSnapshots,
|
|
43
18
|
countAccumulatedItems,
|
|
44
19
|
mergeAccumulatedData,
|
|
45
20
|
} from '@aztec/circuits.js';
|
|
46
|
-
import { computeNoteHashNonce, computeUniqueNoteHash,
|
|
21
|
+
import { computeNoteHashNonce, computeUniqueNoteHash, siloNoteHash } from '@aztec/circuits.js/hash';
|
|
47
22
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
48
23
|
import { assertLength } from '@aztec/foundation/serialize';
|
|
49
24
|
|
|
50
|
-
import { AvmFinalizedCallResult } from '../avm/avm_contract_call_result.js';
|
|
51
|
-
import { AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
|
|
52
|
-
import { type AvmPersistableStateManager } from '../avm/journal/journal.js';
|
|
53
25
|
import { type PublicEnqueuedCallSideEffectTrace } from './enqueued_call_side_effect_trace.js';
|
|
54
|
-
import { type EnqueuedPublicCallExecutionResult, type PublicFunctionCallResult } from './execution.js';
|
|
55
26
|
|
|
56
27
|
export function generateAvmCircuitPublicInputs(
|
|
57
28
|
trace: PublicEnqueuedCallSideEffectTrace,
|
|
@@ -64,7 +35,7 @@ export function generateAvmCircuitPublicInputs(
|
|
|
64
35
|
teardownCallRequests: PublicCallRequest[],
|
|
65
36
|
nonRevertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData,
|
|
66
37
|
revertibleAccumulatedDataFromPrivate: PrivateToPublicAccumulatedData,
|
|
67
|
-
|
|
38
|
+
endTreeSnapshots: TreeSnapshots,
|
|
68
39
|
endGasUsed: Gas,
|
|
69
40
|
transactionFee: Fr,
|
|
70
41
|
revertCode: RevertCode,
|
|
@@ -75,12 +46,6 @@ export function generateAvmCircuitPublicInputs(
|
|
|
75
46
|
startStateReference.partial.nullifierTree,
|
|
76
47
|
startStateReference.partial.publicDataTree,
|
|
77
48
|
);
|
|
78
|
-
const endTreeSnapshots = new TreeSnapshots(
|
|
79
|
-
endStateReference.l1ToL2MessageTree,
|
|
80
|
-
endStateReference.partial.noteHashTree,
|
|
81
|
-
endStateReference.partial.nullifierTree,
|
|
82
|
-
endStateReference.partial.publicDataTree,
|
|
83
|
-
);
|
|
84
49
|
|
|
85
50
|
const avmCircuitPublicInputs = trace.toAvmCircuitPublicInputs(
|
|
86
51
|
globalVariables,
|
|
@@ -182,155 +147,3 @@ export function generateAvmCircuitPublicInputs(
|
|
|
182
147
|
//console.log(`AvmCircuitPublicInputs:\n${inspect(avmCircuitPublicInputs)}`);
|
|
183
148
|
return avmCircuitPublicInputs;
|
|
184
149
|
}
|
|
185
|
-
|
|
186
|
-
export function generateAvmProvingRequest(
|
|
187
|
-
real: boolean,
|
|
188
|
-
fnName: string,
|
|
189
|
-
stateManager: AvmPersistableStateManager,
|
|
190
|
-
historicalHeader: Header,
|
|
191
|
-
globalVariables: GlobalVariables,
|
|
192
|
-
executionRequest: PublicExecutionRequest,
|
|
193
|
-
result: EnqueuedPublicCallExecutionResult,
|
|
194
|
-
allocatedGas: Gas,
|
|
195
|
-
transactionFee: Fr,
|
|
196
|
-
): AvmProvingRequest {
|
|
197
|
-
const avmExecutionEnv = new AvmExecutionEnvironment(
|
|
198
|
-
executionRequest.callContext.contractAddress,
|
|
199
|
-
executionRequest.callContext.msgSender,
|
|
200
|
-
executionRequest.callContext.functionSelector,
|
|
201
|
-
/*contractCallDepth=*/ Fr.zero(),
|
|
202
|
-
transactionFee,
|
|
203
|
-
globalVariables,
|
|
204
|
-
executionRequest.callContext.isStaticCall,
|
|
205
|
-
executionRequest.args,
|
|
206
|
-
);
|
|
207
|
-
|
|
208
|
-
const avmCallResult = new AvmFinalizedCallResult(result.reverted, result.returnValues, result.endGasLeft);
|
|
209
|
-
|
|
210
|
-
// Generate an AVM proving request
|
|
211
|
-
let avmProvingRequest: AvmProvingRequest;
|
|
212
|
-
if (real) {
|
|
213
|
-
const deprecatedFunctionCallResult = stateManager.trace.toPublicFunctionCallResult(
|
|
214
|
-
avmExecutionEnv,
|
|
215
|
-
/*startGasLeft=*/ allocatedGas,
|
|
216
|
-
Buffer.alloc(0),
|
|
217
|
-
avmCallResult,
|
|
218
|
-
fnName,
|
|
219
|
-
);
|
|
220
|
-
const publicInputs = getPublicCircuitPublicInputs(historicalHeader, globalVariables, deprecatedFunctionCallResult);
|
|
221
|
-
avmProvingRequest = makeAvmProvingRequest(publicInputs, deprecatedFunctionCallResult);
|
|
222
|
-
} else {
|
|
223
|
-
avmProvingRequest = emptyAvmProvingRequest();
|
|
224
|
-
}
|
|
225
|
-
return avmProvingRequest;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
function emptyAvmProvingRequest(): AvmProvingRequest {
|
|
229
|
-
return {
|
|
230
|
-
type: ProvingRequestType.PUBLIC_VM,
|
|
231
|
-
inputs: AvmCircuitInputs.empty(),
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
function makeAvmProvingRequest(inputs: PublicCircuitPublicInputs, result: PublicFunctionCallResult): AvmProvingRequest {
|
|
235
|
-
return {
|
|
236
|
-
type: ProvingRequestType.PUBLIC_VM,
|
|
237
|
-
inputs: new AvmCircuitInputs(
|
|
238
|
-
result.functionName,
|
|
239
|
-
result.calldata,
|
|
240
|
-
inputs,
|
|
241
|
-
result.avmCircuitHints,
|
|
242
|
-
AvmCircuitPublicInputs.empty(),
|
|
243
|
-
),
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
function getPublicCircuitPublicInputs(
|
|
248
|
-
historicalHeader: Header,
|
|
249
|
-
globalVariables: GlobalVariables,
|
|
250
|
-
result: PublicFunctionCallResult,
|
|
251
|
-
) {
|
|
252
|
-
const header = historicalHeader.clone(); // don't modify the original
|
|
253
|
-
header.state.partial.publicDataTree.root = Fr.zero(); // AVM doesn't check this yet
|
|
254
|
-
|
|
255
|
-
return PublicCircuitPublicInputs.from({
|
|
256
|
-
callContext: result.executionRequest.callContext,
|
|
257
|
-
proverAddress: AztecAddress.ZERO,
|
|
258
|
-
argsHash: computeVarArgsHash(result.executionRequest.args),
|
|
259
|
-
noteHashes: padArrayEnd(
|
|
260
|
-
result.noteHashes,
|
|
261
|
-
NoteHash.empty(),
|
|
262
|
-
MAX_NOTE_HASHES_PER_CALL,
|
|
263
|
-
`Too many note hashes. Got ${result.noteHashes.length} with max being ${MAX_NOTE_HASHES_PER_CALL}`,
|
|
264
|
-
),
|
|
265
|
-
nullifiers: padArrayEnd(
|
|
266
|
-
result.nullifiers,
|
|
267
|
-
Nullifier.empty(),
|
|
268
|
-
MAX_NULLIFIERS_PER_CALL,
|
|
269
|
-
`Too many nullifiers. Got ${result.nullifiers.length} with max being ${MAX_NULLIFIERS_PER_CALL}`,
|
|
270
|
-
),
|
|
271
|
-
l2ToL1Msgs: padArrayEnd(
|
|
272
|
-
result.l2ToL1Messages,
|
|
273
|
-
L2ToL1Message.empty(),
|
|
274
|
-
MAX_L2_TO_L1_MSGS_PER_CALL,
|
|
275
|
-
`Too many L2 to L1 messages. Got ${result.l2ToL1Messages.length} with max being ${MAX_L2_TO_L1_MSGS_PER_CALL}`,
|
|
276
|
-
),
|
|
277
|
-
startSideEffectCounter: result.startSideEffectCounter,
|
|
278
|
-
endSideEffectCounter: result.endSideEffectCounter,
|
|
279
|
-
returnsHash: computeVarArgsHash(result.returnValues),
|
|
280
|
-
noteHashReadRequests: padArrayEnd(
|
|
281
|
-
result.noteHashReadRequests,
|
|
282
|
-
TreeLeafReadRequest.empty(),
|
|
283
|
-
MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,
|
|
284
|
-
`Too many note hash read requests. Got ${result.noteHashReadRequests.length} with max being ${MAX_NOTE_HASH_READ_REQUESTS_PER_CALL}`,
|
|
285
|
-
),
|
|
286
|
-
nullifierReadRequests: padArrayEnd(
|
|
287
|
-
result.nullifierReadRequests,
|
|
288
|
-
ReadRequest.empty(),
|
|
289
|
-
MAX_NULLIFIER_READ_REQUESTS_PER_CALL,
|
|
290
|
-
`Too many nullifier read requests. Got ${result.nullifierReadRequests.length} with max being ${MAX_NULLIFIER_READ_REQUESTS_PER_CALL}`,
|
|
291
|
-
),
|
|
292
|
-
nullifierNonExistentReadRequests: padArrayEnd(
|
|
293
|
-
result.nullifierNonExistentReadRequests,
|
|
294
|
-
ReadRequest.empty(),
|
|
295
|
-
MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL,
|
|
296
|
-
`Too many nullifier non-existent read requests. Got ${result.nullifierNonExistentReadRequests.length} with max being ${MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL}`,
|
|
297
|
-
),
|
|
298
|
-
l1ToL2MsgReadRequests: padArrayEnd(
|
|
299
|
-
result.l1ToL2MsgReadRequests,
|
|
300
|
-
TreeLeafReadRequest.empty(),
|
|
301
|
-
MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL,
|
|
302
|
-
`Too many L1 to L2 message read requests. Got ${result.l1ToL2MsgReadRequests.length} with max being ${MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL}`,
|
|
303
|
-
),
|
|
304
|
-
contractStorageReads: padArrayEnd(
|
|
305
|
-
result.contractStorageReads,
|
|
306
|
-
ContractStorageRead.empty(),
|
|
307
|
-
MAX_PUBLIC_DATA_READS_PER_CALL,
|
|
308
|
-
`Too many public data reads. Got ${result.contractStorageReads.length} with max being ${MAX_PUBLIC_DATA_READS_PER_CALL}`,
|
|
309
|
-
),
|
|
310
|
-
contractStorageUpdateRequests: padArrayEnd(
|
|
311
|
-
result.contractStorageUpdateRequests,
|
|
312
|
-
ContractStorageUpdateRequest.empty(),
|
|
313
|
-
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,
|
|
314
|
-
`Too many public data update requests. Got ${result.contractStorageUpdateRequests.length} with max being ${MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL}`,
|
|
315
|
-
),
|
|
316
|
-
publicCallRequests: padArrayEnd(
|
|
317
|
-
result.publicCallRequests,
|
|
318
|
-
PublicInnerCallRequest.empty(),
|
|
319
|
-
MAX_ENQUEUED_CALLS_PER_CALL,
|
|
320
|
-
`Too many public call requests. Got ${result.publicCallRequests.length} with max being ${MAX_ENQUEUED_CALLS_PER_CALL}`,
|
|
321
|
-
),
|
|
322
|
-
unencryptedLogsHashes: padArrayEnd(
|
|
323
|
-
result.unencryptedLogsHashes,
|
|
324
|
-
LogHash.empty(),
|
|
325
|
-
MAX_UNENCRYPTED_LOGS_PER_CALL,
|
|
326
|
-
`Too many unencrypted logs. Got ${result.unencryptedLogsHashes.length} with max being ${MAX_UNENCRYPTED_LOGS_PER_CALL}`,
|
|
327
|
-
),
|
|
328
|
-
historicalHeader: header,
|
|
329
|
-
globalVariables: globalVariables,
|
|
330
|
-
startGasLeft: Gas.from(result.startGasLeft),
|
|
331
|
-
endGasLeft: Gas.from(result.endGasLeft),
|
|
332
|
-
transactionFee: result.transactionFee,
|
|
333
|
-
// TODO(@just-mitch): need better mapping from simulator to revert code.
|
|
334
|
-
revertCode: result.reverted ? RevertCode.APP_LOGIC_REVERTED : RevertCode.OK,
|
|
335
|
-
});
|
|
336
|
-
}
|