@aztec/simulator 0.57.0 → 0.59.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.js +2 -2
- package/dest/acvm/oracle/typed_oracle.d.ts +1 -2
- package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
- package/dest/acvm/oracle/typed_oracle.js +1 -1
- package/dest/avm/avm_gas.js +2 -2
- package/dest/avm/avm_memory_types.d.ts +7 -3
- package/dest/avm/avm_memory_types.d.ts.map +1 -1
- package/dest/avm/avm_memory_types.js +29 -14
- package/dest/avm/avm_simulator.d.ts.map +1 -1
- package/dest/avm/avm_simulator.js +5 -2
- package/dest/avm/fixtures/index.d.ts.map +1 -1
- package/dest/avm/fixtures/index.js +3 -3
- package/dest/avm/journal/journal.d.ts.map +1 -1
- package/dest/avm/journal/journal.js +2 -3
- package/dest/avm/opcodes/accrued_substate.js +17 -17
- package/dest/avm/opcodes/arithmetic.js +2 -2
- package/dest/avm/opcodes/bitwise.d.ts +3 -3
- package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
- package/dest/avm/opcodes/bitwise.js +9 -8
- package/dest/avm/opcodes/comparators.js +2 -2
- package/dest/avm/opcodes/contract.d.ts.map +1 -1
- package/dest/avm/opcodes/contract.js +4 -3
- package/dest/avm/opcodes/control_flow.js +1 -1
- package/dest/avm/opcodes/conversion.js +4 -4
- package/dest/avm/opcodes/ec_add.d.ts.map +1 -1
- package/dest/avm/opcodes/ec_add.js +18 -9
- package/dest/avm/opcodes/external_calls.js +10 -10
- package/dest/avm/opcodes/hashing.js +8 -8
- package/dest/avm/opcodes/instruction_impl.d.ts +1 -2
- package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -1
- package/dest/avm/opcodes/instruction_impl.js +2 -5
- package/dest/avm/opcodes/memory.js +3 -3
- package/dest/avm/opcodes/misc.js +4 -4
- package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +1 -1
- package/dest/avm/opcodes/multi_scalar_mul.js +24 -9
- package/dest/avm/opcodes/storage.js +2 -2
- package/dest/avm/serialization/instruction_serialization.js +2 -2
- package/dest/avm/test_utils.d.ts +1 -2
- package/dest/avm/test_utils.d.ts.map +1 -1
- package/dest/avm/test_utils.js +1 -1
- package/dest/client/client_execution_context.d.ts.map +1 -1
- package/dest/client/client_execution_context.js +7 -3
- package/dest/client/db_oracle.d.ts +1 -2
- package/dest/client/db_oracle.d.ts.map +1 -1
- package/dest/client/db_oracle.js +1 -1
- package/dest/client/index.d.ts +1 -0
- package/dest/client/index.d.ts.map +1 -1
- package/dest/client/index.js +2 -1
- package/dest/client/private_execution.d.ts +10 -1
- package/dest/client/private_execution.d.ts.map +1 -1
- package/dest/client/private_execution.js +25 -5
- package/dest/client/view_data_oracle.d.ts +1 -2
- package/dest/client/view_data_oracle.d.ts.map +1 -1
- package/dest/client/view_data_oracle.js +1 -1
- package/dest/public/db_interfaces.d.ts +1 -2
- package/dest/public/db_interfaces.d.ts.map +1 -1
- package/dest/public/dual_side_effect_trace.d.ts +76 -0
- package/dest/public/dual_side_effect_trace.d.ts.map +1 -0
- package/dest/public/dual_side_effect_trace.js +109 -0
- package/dest/public/enqueued_call_side_effect_trace.d.ts +114 -0
- package/dest/public/enqueued_call_side_effect_trace.d.ts.map +1 -0
- package/dest/public/enqueued_call_side_effect_trace.js +314 -0
- package/dest/public/enqueued_call_simulator.d.ts +2 -2
- package/dest/public/enqueued_call_simulator.d.ts.map +1 -1
- package/dest/public/enqueued_call_simulator.js +18 -7
- package/dest/public/enqueued_calls_processor.d.ts +2 -2
- package/dest/public/enqueued_calls_processor.d.ts.map +1 -1
- package/dest/public/enqueued_calls_processor.js +3 -5
- package/dest/public/execution.d.ts +3 -4
- package/dest/public/execution.d.ts.map +1 -1
- package/dest/public/execution.js +1 -1
- package/dest/public/executor.d.ts +6 -4
- package/dest/public/executor.d.ts.map +1 -1
- package/dest/public/executor.js +18 -9
- package/dest/public/fee_payment.d.ts +1 -1
- package/dest/public/fee_payment.d.ts.map +1 -1
- package/dest/public/fee_payment.js +4 -7
- package/dest/public/hints_builder.d.ts +2 -2
- package/dest/public/hints_builder.d.ts.map +1 -1
- package/dest/public/hints_builder.js +1 -1
- package/dest/public/public_db_sources.d.ts +4 -5
- package/dest/public/public_db_sources.d.ts.map +1 -1
- package/dest/public/public_db_sources.js +15 -11
- package/dest/public/public_kernel_tail_simulator.d.ts +3 -3
- package/dest/public/public_kernel_tail_simulator.d.ts.map +1 -1
- package/dest/public/public_kernel_tail_simulator.js +1 -1
- package/dest/public/public_processor.d.ts +7 -11
- package/dest/public/public_processor.d.ts.map +1 -1
- package/dest/public/public_processor.js +8 -12
- package/dest/public/side_effect_trace.d.ts +1 -2
- package/dest/public/side_effect_trace.d.ts.map +1 -1
- package/dest/public/side_effect_trace.js +2 -2
- package/package.json +9 -9
- package/src/acvm/oracle/oracle.ts +1 -1
- package/src/acvm/oracle/typed_oracle.ts +6 -2
- package/src/avm/avm_gas.ts +1 -1
- package/src/avm/avm_memory_types.ts +28 -11
- package/src/avm/avm_simulator.ts +7 -1
- package/src/avm/fixtures/index.ts +2 -2
- package/src/avm/journal/journal.ts +3 -4
- package/src/avm/opcodes/accrued_substate.ts +17 -17
- package/src/avm/opcodes/arithmetic.ts +1 -1
- package/src/avm/opcodes/bitwise.ts +8 -7
- package/src/avm/opcodes/comparators.ts +1 -1
- package/src/avm/opcodes/contract.ts +3 -2
- package/src/avm/opcodes/control_flow.ts +1 -1
- package/src/avm/opcodes/conversion.ts +4 -4
- package/src/avm/opcodes/ec_add.ts +15 -8
- package/src/avm/opcodes/external_calls.ts +10 -10
- package/src/avm/opcodes/hashing.ts +8 -8
- package/src/avm/opcodes/instruction_impl.ts +0 -3
- package/src/avm/opcodes/memory.ts +3 -3
- package/src/avm/opcodes/misc.ts +4 -4
- package/src/avm/opcodes/multi_scalar_mul.ts +20 -12
- package/src/avm/opcodes/storage.ts +2 -2
- package/src/avm/serialization/instruction_serialization.ts +1 -1
- package/src/avm/test_utils.ts +1 -2
- package/src/client/client_execution_context.ts +6 -1
- package/src/client/db_oracle.ts +6 -2
- package/src/client/index.ts +1 -0
- package/src/client/private_execution.ts +36 -6
- package/src/client/view_data_oracle.ts +1 -2
- package/src/public/db_interfaces.ts +5 -2
- package/src/public/dual_side_effect_trace.ts +173 -0
- package/src/public/enqueued_call_side_effect_trace.ts +552 -0
- package/src/public/enqueued_call_simulator.ts +33 -11
- package/src/public/enqueued_calls_processor.ts +4 -6
- package/src/public/execution.ts +2 -4
- package/src/public/executor.ts +38 -9
- package/src/public/fee_payment.ts +4 -6
- package/src/public/hints_builder.ts +2 -2
- package/src/public/public_db_sources.ts +31 -22
- package/src/public/public_kernel_tail_simulator.ts +3 -3
- package/src/public/public_processor.ts +16 -16
- package/src/public/side_effect_trace.ts +2 -2
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { UnencryptedL2Log } from '@aztec/circuit-types';
|
|
2
|
+
import { AvmContractInstanceHint, AvmExecutionHints, AvmExternalCallHint, AvmKeyValueHint, AztecAddress, CallContext, ContractStorageRead, ContractStorageUpdateRequest, EthAddress, Gas, L2ToL1Message, LogHash, MAX_ENCRYPTED_LOGS_PER_TX, MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_TX, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_ENCRYPTED_LOGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, MAX_PUBLIC_DATA_READS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MAX_UNENCRYPTED_LOGS_PER_TX, NoteHash, Nullifier, PublicAccumulatedData, PublicAccumulatedDataArrayLengths, PublicCallRequest, PublicDataRead, PublicDataUpdateRequest, PublicInnerCallRequest, PublicValidationRequestArrayLengths, PublicValidationRequests, ReadRequest, RollupValidationRequests, ScopedL2ToL1Message, ScopedLogHash, ScopedNoteHash, ScopedReadRequest, TreeLeafReadRequest, VMCircuitPublicInputs, } from '@aztec/circuits.js';
|
|
3
|
+
import { computeVarArgsHash } from '@aztec/circuits.js/hash';
|
|
4
|
+
import { makeTuple } from '@aztec/foundation/array';
|
|
5
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
6
|
+
import { Fr } from '@aztec/foundation/fields';
|
|
7
|
+
import { createDebugLogger } from '@aztec/foundation/log';
|
|
8
|
+
import { SideEffectLimitReachedError } from './side_effect_errors.js';
|
|
9
|
+
/**
|
|
10
|
+
* Trace side effects for an entire enqueued call.
|
|
11
|
+
*/
|
|
12
|
+
export class PublicEnqueuedCallSideEffectTrace {
|
|
13
|
+
constructor(
|
|
14
|
+
/** The counter of this trace's first side effect. */
|
|
15
|
+
startSideEffectCounter = 0,
|
|
16
|
+
/** Track parent's (or previous kernel's) lengths so the AVM can properly enforce TX-wide limits,
|
|
17
|
+
* otherwise the public kernel can fail to prove because TX limits are breached.
|
|
18
|
+
*/
|
|
19
|
+
previousValidationRequestArrayLengths = PublicValidationRequestArrayLengths.empty(), previousAccumulatedDataArrayLengths = PublicAccumulatedDataArrayLengths.empty()) {
|
|
20
|
+
this.startSideEffectCounter = startSideEffectCounter;
|
|
21
|
+
this.previousValidationRequestArrayLengths = previousValidationRequestArrayLengths;
|
|
22
|
+
this.previousAccumulatedDataArrayLengths = previousAccumulatedDataArrayLengths;
|
|
23
|
+
this.log = createDebugLogger('aztec:public_enqueued_call_side_effect_trace');
|
|
24
|
+
// TODO(dbanks12): make contract address mandatory in ContractStorage* structs,
|
|
25
|
+
// and include it in serialization, or modify PublicData* structs for this.
|
|
26
|
+
this.contractStorageReads = [];
|
|
27
|
+
this.contractStorageUpdateRequests = [];
|
|
28
|
+
this.noteHashReadRequests = [];
|
|
29
|
+
this.noteHashes = [];
|
|
30
|
+
this.nullifierReadRequests = [];
|
|
31
|
+
this.nullifierNonExistentReadRequests = [];
|
|
32
|
+
this.nullifiers = [];
|
|
33
|
+
this.l1ToL2MsgReadRequests = [];
|
|
34
|
+
this.l2ToL1Msgs = [];
|
|
35
|
+
this.unencryptedLogs = [];
|
|
36
|
+
this.unencryptedLogsHashes = [];
|
|
37
|
+
this.sideEffectCounter = startSideEffectCounter;
|
|
38
|
+
this.avmCircuitHints = AvmExecutionHints.empty();
|
|
39
|
+
}
|
|
40
|
+
fork() {
|
|
41
|
+
return new PublicEnqueuedCallSideEffectTrace(this.sideEffectCounter, new PublicValidationRequestArrayLengths(this.previousValidationRequestArrayLengths.noteHashReadRequests + this.noteHashReadRequests.length, this.previousValidationRequestArrayLengths.nullifierReadRequests + this.nullifierReadRequests.length, this.previousValidationRequestArrayLengths.nullifierNonExistentReadRequests +
|
|
42
|
+
this.nullifierNonExistentReadRequests.length, this.previousValidationRequestArrayLengths.l1ToL2MsgReadRequests + this.l1ToL2MsgReadRequests.length, this.previousValidationRequestArrayLengths.publicDataReads + this.contractStorageReads.length), new PublicAccumulatedDataArrayLengths(this.previousAccumulatedDataArrayLengths.noteHashes + this.noteHashes.length, this.previousAccumulatedDataArrayLengths.nullifiers + this.nullifiers.length, this.previousAccumulatedDataArrayLengths.l2ToL1Msgs + this.l2ToL1Msgs.length, this.previousAccumulatedDataArrayLengths.noteEncryptedLogsHashes, this.previousAccumulatedDataArrayLengths.encryptedLogsHashes, this.previousAccumulatedDataArrayLengths.unencryptedLogsHashes + this.unencryptedLogsHashes.length, this.previousAccumulatedDataArrayLengths.publicDataUpdateRequests + this.contractStorageUpdateRequests.length, this.previousAccumulatedDataArrayLengths.publicCallStack));
|
|
43
|
+
}
|
|
44
|
+
getCounter() {
|
|
45
|
+
return this.sideEffectCounter;
|
|
46
|
+
}
|
|
47
|
+
incrementSideEffectCounter() {
|
|
48
|
+
this.sideEffectCounter++;
|
|
49
|
+
}
|
|
50
|
+
tracePublicStorageRead(storageAddress, slot, value, _exists, _cached) {
|
|
51
|
+
// NOTE: exists and cached are unused for now but may be used for optimizations or kernel hints later
|
|
52
|
+
if (this.contractStorageReads.length + this.previousValidationRequestArrayLengths.publicDataReads >=
|
|
53
|
+
MAX_PUBLIC_DATA_READS_PER_TX) {
|
|
54
|
+
throw new SideEffectLimitReachedError('contract storage read', MAX_PUBLIC_DATA_READS_PER_TX);
|
|
55
|
+
}
|
|
56
|
+
this.contractStorageReads.push(new ContractStorageRead(slot, value, this.sideEffectCounter, AztecAddress.fromField(storageAddress)));
|
|
57
|
+
this.avmCircuitHints.storageValues.items.push(new AvmKeyValueHint(/*key=*/ new Fr(this.sideEffectCounter), /*value=*/ value));
|
|
58
|
+
this.log.debug(`SLOAD cnt: ${this.sideEffectCounter} val: ${value} slot: ${slot}`);
|
|
59
|
+
this.incrementSideEffectCounter();
|
|
60
|
+
}
|
|
61
|
+
tracePublicStorageWrite(storageAddress, slot, value) {
|
|
62
|
+
if (this.contractStorageUpdateRequests.length + this.previousAccumulatedDataArrayLengths.publicDataUpdateRequests >=
|
|
63
|
+
MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX) {
|
|
64
|
+
throw new SideEffectLimitReachedError('contract storage write', MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
|
|
65
|
+
}
|
|
66
|
+
this.contractStorageUpdateRequests.push(new ContractStorageUpdateRequest(slot, value, this.sideEffectCounter, storageAddress));
|
|
67
|
+
this.log.debug(`SSTORE cnt: ${this.sideEffectCounter} val: ${value} slot: ${slot}`);
|
|
68
|
+
this.incrementSideEffectCounter();
|
|
69
|
+
}
|
|
70
|
+
// TODO(8287): _exists can be removed once we have the vm properly handling the equality check
|
|
71
|
+
traceNoteHashCheck(_storageAddress, noteHash, leafIndex, exists) {
|
|
72
|
+
// NOTE: storageAddress is unused because noteHash is an already-siloed leaf
|
|
73
|
+
if (this.noteHashReadRequests.length + this.previousValidationRequestArrayLengths.noteHashReadRequests >=
|
|
74
|
+
MAX_NOTE_HASH_READ_REQUESTS_PER_TX) {
|
|
75
|
+
throw new SideEffectLimitReachedError('note hash read request', MAX_NOTE_HASH_READ_REQUESTS_PER_TX);
|
|
76
|
+
}
|
|
77
|
+
this.noteHashReadRequests.push(new TreeLeafReadRequest(noteHash, leafIndex));
|
|
78
|
+
this.avmCircuitHints.noteHashExists.items.push(new AvmKeyValueHint(/*key=*/ new Fr(leafIndex), /*value=*/ exists ? Fr.ONE : Fr.ZERO));
|
|
79
|
+
// NOTE: counter does not increment for note hash checks (because it doesn't rely on pending note hashes)
|
|
80
|
+
}
|
|
81
|
+
traceNewNoteHash(storageAddress, noteHash) {
|
|
82
|
+
if (this.noteHashes.length + this.previousAccumulatedDataArrayLengths.noteHashes >= MAX_NOTE_HASHES_PER_TX) {
|
|
83
|
+
throw new SideEffectLimitReachedError('note hash', MAX_NOTE_HASHES_PER_TX);
|
|
84
|
+
}
|
|
85
|
+
this.noteHashes.push(new NoteHash(noteHash, this.sideEffectCounter).scope(AztecAddress.fromField(storageAddress)));
|
|
86
|
+
this.log.debug(`NEW_NOTE_HASH cnt: ${this.sideEffectCounter}`);
|
|
87
|
+
this.incrementSideEffectCounter();
|
|
88
|
+
}
|
|
89
|
+
traceNullifierCheck(storageAddress, nullifier, _leafIndex, exists, _isPending) {
|
|
90
|
+
// NOTE: isPending and leafIndex are unused for now but may be used for optimizations or kernel hints later
|
|
91
|
+
this.enforceLimitOnNullifierChecks();
|
|
92
|
+
const readRequest = new ReadRequest(nullifier, this.sideEffectCounter).scope(AztecAddress.fromField(storageAddress));
|
|
93
|
+
if (exists) {
|
|
94
|
+
this.nullifierReadRequests.push(readRequest);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this.nullifierNonExistentReadRequests.push(readRequest);
|
|
98
|
+
}
|
|
99
|
+
this.avmCircuitHints.nullifierExists.items.push(new AvmKeyValueHint(/*key=*/ new Fr(this.sideEffectCounter), /*value=*/ new Fr(exists ? 1 : 0)));
|
|
100
|
+
this.log.debug(`NULLIFIER_EXISTS cnt: ${this.sideEffectCounter}`);
|
|
101
|
+
this.incrementSideEffectCounter();
|
|
102
|
+
}
|
|
103
|
+
traceNewNullifier(storageAddress, nullifier) {
|
|
104
|
+
if (this.nullifiers.length + this.previousAccumulatedDataArrayLengths.nullifiers >= MAX_NULLIFIERS_PER_TX) {
|
|
105
|
+
throw new SideEffectLimitReachedError('nullifier', MAX_NULLIFIERS_PER_TX);
|
|
106
|
+
}
|
|
107
|
+
this.nullifiers.push(new Nullifier(nullifier, this.sideEffectCounter, /*noteHash=*/ Fr.ZERO).scope(AztecAddress.fromField(storageAddress)));
|
|
108
|
+
this.log.debug(`NEW_NULLIFIER cnt: ${this.sideEffectCounter}`);
|
|
109
|
+
this.incrementSideEffectCounter();
|
|
110
|
+
}
|
|
111
|
+
// TODO(8287): _exists can be removed once we have the vm properly handling the equality check
|
|
112
|
+
traceL1ToL2MessageCheck(_contractAddress, msgHash, msgLeafIndex, exists) {
|
|
113
|
+
// NOTE: contractAddress is unused because msgHash is an already-siloed leaf
|
|
114
|
+
if (this.l1ToL2MsgReadRequests.length + this.previousValidationRequestArrayLengths.l1ToL2MsgReadRequests >=
|
|
115
|
+
MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_TX) {
|
|
116
|
+
throw new SideEffectLimitReachedError('l1 to l2 message read request', MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_TX);
|
|
117
|
+
}
|
|
118
|
+
this.l1ToL2MsgReadRequests.push(new TreeLeafReadRequest(msgHash, msgLeafIndex));
|
|
119
|
+
this.avmCircuitHints.l1ToL2MessageExists.items.push(new AvmKeyValueHint(/*key=*/ new Fr(msgLeafIndex), /*value=*/ exists ? Fr.ONE : Fr.ZERO));
|
|
120
|
+
}
|
|
121
|
+
traceNewL2ToL1Message(contractAddress, recipient, content) {
|
|
122
|
+
if (this.l2ToL1Msgs.length + this.previousAccumulatedDataArrayLengths.l2ToL1Msgs >= MAX_L2_TO_L1_MSGS_PER_TX) {
|
|
123
|
+
throw new SideEffectLimitReachedError('l2 to l1 message', MAX_L2_TO_L1_MSGS_PER_TX);
|
|
124
|
+
}
|
|
125
|
+
const recipientAddress = EthAddress.fromField(recipient);
|
|
126
|
+
this.l2ToL1Msgs.push(new L2ToL1Message(recipientAddress, content, this.sideEffectCounter).scope(AztecAddress.fromField(contractAddress)));
|
|
127
|
+
this.log.debug(`NEW_L2_TO_L1_MSG cnt: ${this.sideEffectCounter}`);
|
|
128
|
+
this.incrementSideEffectCounter();
|
|
129
|
+
}
|
|
130
|
+
traceUnencryptedLog(contractAddress, log) {
|
|
131
|
+
if (this.unencryptedLogs.length + this.previousAccumulatedDataArrayLengths.unencryptedLogsHashes >=
|
|
132
|
+
MAX_UNENCRYPTED_LOGS_PER_TX) {
|
|
133
|
+
throw new SideEffectLimitReachedError('unencrypted log', MAX_UNENCRYPTED_LOGS_PER_TX);
|
|
134
|
+
}
|
|
135
|
+
const ulog = new UnencryptedL2Log(AztecAddress.fromField(contractAddress), Buffer.concat(log.map(f => f.toBuffer())));
|
|
136
|
+
const basicLogHash = Fr.fromBuffer(ulog.hash());
|
|
137
|
+
this.unencryptedLogs.push(ulog);
|
|
138
|
+
// This length is for charging DA and is checked on-chain - has to be length of log preimage + 4 bytes.
|
|
139
|
+
// The .length call also has a +4 but that is unrelated
|
|
140
|
+
this.unencryptedLogsHashes.push(new LogHash(basicLogHash, this.sideEffectCounter, new Fr(ulog.length + 4)).scope(AztecAddress.fromField(contractAddress)));
|
|
141
|
+
this.log.debug(`NEW_UNENCRYPTED_LOG cnt: ${this.sideEffectCounter}`);
|
|
142
|
+
this.incrementSideEffectCounter();
|
|
143
|
+
}
|
|
144
|
+
traceGetContractInstance(instance) {
|
|
145
|
+
this.enforceLimitOnNullifierChecks('(contract address nullifier from GETCONTRACTINSTANCE)');
|
|
146
|
+
// TODO(dbanks12): should emit a nullifier read request
|
|
147
|
+
this.avmCircuitHints.contractInstances.items.push(new AvmContractInstanceHint(instance.address, new Fr(instance.exists ? 1 : 0), instance.salt, instance.deployer, instance.contractClassId, instance.initializationHash, instance.publicKeys));
|
|
148
|
+
this.log.debug(`CONTRACT_INSTANCE cnt: ${this.sideEffectCounter}`);
|
|
149
|
+
this.incrementSideEffectCounter();
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Trace a nested call.
|
|
153
|
+
* Accept some results from a finished nested call's trace into this one.
|
|
154
|
+
*/
|
|
155
|
+
traceNestedCall(
|
|
156
|
+
/** The trace of the nested call. */
|
|
157
|
+
nestedCallTrace,
|
|
158
|
+
/** The execution environment of the nested call. */
|
|
159
|
+
_nestedEnvironment,
|
|
160
|
+
/** How much gas was available for this public execution. */
|
|
161
|
+
startGasLeft,
|
|
162
|
+
/** How much gas was left after this public execution. */
|
|
163
|
+
endGasLeft,
|
|
164
|
+
/** Bytecode used for this execution. */
|
|
165
|
+
_bytecode,
|
|
166
|
+
/** The call's results */
|
|
167
|
+
avmCallResults,
|
|
168
|
+
/** Function name for logging */
|
|
169
|
+
_functionName = 'unknown') {
|
|
170
|
+
// Store end side effect counter before it gets updated by absorbing nested call trace
|
|
171
|
+
const endSideEffectCounter = new Fr(this.sideEffectCounter);
|
|
172
|
+
// TODO(4805): check if some threshold is reached for max nested calls (to unique contracts?)
|
|
173
|
+
// TODO(dbanks12): should emit a nullifier read request. There should be two thresholds.
|
|
174
|
+
// one for max unique contract calls, and another based on max nullifier reads.
|
|
175
|
+
// Since this trace function happens _after_ a nested call, such threshold limits must take
|
|
176
|
+
// place in another trace function that occurs _before_ a nested call.
|
|
177
|
+
if (avmCallResults.reverted) {
|
|
178
|
+
this.absorbRevertedNestedTrace(nestedCallTrace);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
this.absorbSuccessfulNestedTrace(nestedCallTrace);
|
|
182
|
+
}
|
|
183
|
+
const gasUsed = new Gas(startGasLeft.daGas - endGasLeft.daGas, startGasLeft.l2Gas - endGasLeft.l2Gas);
|
|
184
|
+
this.avmCircuitHints.externalCalls.items.push(new AvmExternalCallHint(
|
|
185
|
+
/*success=*/ new Fr(avmCallResults.reverted ? 0 : 1), avmCallResults.output, gasUsed, endSideEffectCounter));
|
|
186
|
+
}
|
|
187
|
+
absorbSuccessfulNestedTrace(nestedTrace) {
|
|
188
|
+
this.sideEffectCounter = nestedTrace.sideEffectCounter;
|
|
189
|
+
this.contractStorageReads.push(...nestedTrace.contractStorageReads);
|
|
190
|
+
this.contractStorageUpdateRequests.push(...nestedTrace.contractStorageUpdateRequests);
|
|
191
|
+
this.noteHashReadRequests.push(...nestedTrace.noteHashReadRequests);
|
|
192
|
+
this.noteHashes.push(...nestedTrace.noteHashes);
|
|
193
|
+
this.nullifierReadRequests.push(...nestedTrace.nullifierReadRequests);
|
|
194
|
+
this.nullifierNonExistentReadRequests.push(...nestedTrace.nullifierNonExistentReadRequests);
|
|
195
|
+
this.nullifiers.push(...nestedTrace.nullifiers);
|
|
196
|
+
this.l1ToL2MsgReadRequests.push(...nestedTrace.l1ToL2MsgReadRequests);
|
|
197
|
+
this.l2ToL1Msgs.push(...nestedTrace.l2ToL1Msgs);
|
|
198
|
+
this.unencryptedLogs.push(...nestedTrace.unencryptedLogs);
|
|
199
|
+
this.unencryptedLogsHashes.push(...nestedTrace.unencryptedLogsHashes);
|
|
200
|
+
}
|
|
201
|
+
absorbRevertedNestedTrace(nestedTrace) {
|
|
202
|
+
// All read requests, and any writes (storage & nullifiers) that
|
|
203
|
+
// require complex validation in public kernel (with end lifetimes)
|
|
204
|
+
// must be absorbed even on revert.
|
|
205
|
+
// TODO(dbanks12): What should happen to side effect counter on revert?
|
|
206
|
+
this.sideEffectCounter = nestedTrace.sideEffectCounter;
|
|
207
|
+
this.contractStorageReads.push(...nestedTrace.contractStorageReads);
|
|
208
|
+
this.contractStorageUpdateRequests.push(...nestedTrace.contractStorageUpdateRequests);
|
|
209
|
+
this.noteHashReadRequests.push(...nestedTrace.noteHashReadRequests);
|
|
210
|
+
// new noteHashes are tossed on revert
|
|
211
|
+
this.nullifierReadRequests.push(...nestedTrace.nullifierReadRequests);
|
|
212
|
+
this.nullifierNonExistentReadRequests.push(...nestedTrace.nullifierNonExistentReadRequests);
|
|
213
|
+
this.nullifiers.push(...nestedTrace.nullifiers);
|
|
214
|
+
this.l1ToL2MsgReadRequests.push(...nestedTrace.l1ToL2MsgReadRequests);
|
|
215
|
+
// new l2-to-l1 messages are tossed on revert
|
|
216
|
+
// new unencrypted logs are tossed on revert
|
|
217
|
+
}
|
|
218
|
+
getSideEffects() {
|
|
219
|
+
return {
|
|
220
|
+
contractStorageReads: this.contractStorageReads,
|
|
221
|
+
contractStorageUpdateRequests: this.contractStorageUpdateRequests,
|
|
222
|
+
noteHashReadRequests: this.noteHashReadRequests,
|
|
223
|
+
noteHashes: this.noteHashes,
|
|
224
|
+
nullifierReadRequests: this.nullifierReadRequests,
|
|
225
|
+
nullifierNonExistentReadRequests: this.nullifierNonExistentReadRequests,
|
|
226
|
+
nullifiers: this.nullifiers,
|
|
227
|
+
l1ToL2MsgReadRequests: this.l1ToL2MsgReadRequests,
|
|
228
|
+
l2ToL1Msgs: this.l2ToL1Msgs,
|
|
229
|
+
unencryptedLogs: this.unencryptedLogs,
|
|
230
|
+
unencryptedLogsHashes: this.unencryptedLogsHashes,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
toVMCircuitPublicInputs(
|
|
234
|
+
/** Constants. */
|
|
235
|
+
constants,
|
|
236
|
+
/** The execution environment of the nested call. */
|
|
237
|
+
avmEnvironment,
|
|
238
|
+
/** How much gas was available for this public execution. */
|
|
239
|
+
startGasLeft,
|
|
240
|
+
/** How much gas was left after this public execution. */
|
|
241
|
+
endGasLeft,
|
|
242
|
+
/** The call's results */
|
|
243
|
+
avmCallResults) {
|
|
244
|
+
return new VMCircuitPublicInputs(
|
|
245
|
+
/*constants=*/ constants,
|
|
246
|
+
/*callRequest=*/ createPublicCallRequest(avmEnvironment),
|
|
247
|
+
/*publicCallStack=*/ makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, PublicInnerCallRequest.empty),
|
|
248
|
+
/*previousValidationRequestArrayLengths=*/ this.previousValidationRequestArrayLengths,
|
|
249
|
+
/*validationRequests=*/ this.getValidationRequests(),
|
|
250
|
+
/*previousAccumulatedDataArrayLengths=*/ this.previousAccumulatedDataArrayLengths,
|
|
251
|
+
/*accumulatedData=*/ this.getAccumulatedData(startGasLeft.sub(endGasLeft)),
|
|
252
|
+
/*startSideEffectCounter=*/ this.startSideEffectCounter,
|
|
253
|
+
/*endSideEffectCounter=*/ this.sideEffectCounter,
|
|
254
|
+
/*startGasLeft=*/ startGasLeft,
|
|
255
|
+
// TODO(dbanks12): should have endGasLeft
|
|
256
|
+
/*transactionFee=*/ avmEnvironment.transactionFee,
|
|
257
|
+
/*reverted=*/ avmCallResults.reverted);
|
|
258
|
+
}
|
|
259
|
+
getUnencryptedLogs() {
|
|
260
|
+
return this.unencryptedLogs;
|
|
261
|
+
}
|
|
262
|
+
getAvmCircuitHints() {
|
|
263
|
+
return this.avmCircuitHints;
|
|
264
|
+
}
|
|
265
|
+
getValidationRequests() {
|
|
266
|
+
return new PublicValidationRequests(RollupValidationRequests.empty(), // TODO(dbanks12): what should this be?
|
|
267
|
+
padArrayEnd(this.noteHashReadRequests, TreeLeafReadRequest.empty(), MAX_NOTE_HASH_READ_REQUESTS_PER_TX), padArrayEnd(this.nullifierReadRequests, ScopedReadRequest.empty(), MAX_NULLIFIER_READ_REQUESTS_PER_TX), padArrayEnd(this.nullifierNonExistentReadRequests, ScopedReadRequest.empty(), MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_TX), padArrayEnd(this.l1ToL2MsgReadRequests, TreeLeafReadRequest.empty(), MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_TX),
|
|
268
|
+
// TODO(dbanks12): this is only necessary until VMCircuitPublicInputs uses unsiloed storage slots and pairs storage accesses with contract address
|
|
269
|
+
padArrayEnd(this.contractStorageReads.map(r => new PublicDataRead(r.storageSlot, r.currentValue, r.counter)), PublicDataRead.empty(), MAX_PUBLIC_DATA_READS_PER_TX));
|
|
270
|
+
}
|
|
271
|
+
getAccumulatedData(gasUsed) {
|
|
272
|
+
return new PublicAccumulatedData(padArrayEnd(this.noteHashes, ScopedNoteHash.empty(), MAX_NOTE_HASHES_PER_TX),
|
|
273
|
+
// TODO(dbanks12): should be able to use ScopedNullifier here
|
|
274
|
+
padArrayEnd(this.nullifiers.map(n => new Nullifier(n.nullifier.value, n.nullifier.counter, n.nullifier.noteHash)), Nullifier.empty(), MAX_NULLIFIERS_PER_TX), padArrayEnd(this.l2ToL1Msgs, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
|
|
275
|
+
/*noteEncryptedLogsHashes=*/ makeTuple(MAX_NOTE_ENCRYPTED_LOGS_PER_TX, LogHash.empty),
|
|
276
|
+
/*encryptedLogsHashes=*/ makeTuple(MAX_ENCRYPTED_LOGS_PER_TX, ScopedLogHash.empty), padArrayEnd(this.unencryptedLogsHashes, ScopedLogHash.empty(), MAX_UNENCRYPTED_LOGS_PER_TX),
|
|
277
|
+
// TODO(dbanks12): this is only necessary until VMCircuitPublicInputs uses unsiloed storage slots and pairs storage accesses with contract address
|
|
278
|
+
padArrayEnd(this.contractStorageUpdateRequests.map(w => new PublicDataUpdateRequest(w.storageSlot, w.newValue, w.counter)), PublicDataUpdateRequest.empty(), MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX),
|
|
279
|
+
/*publicCallStack=*/ makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, PublicCallRequest.empty),
|
|
280
|
+
/*gasUsed=*/ gasUsed);
|
|
281
|
+
}
|
|
282
|
+
enforceLimitOnNullifierChecks(errorMsgOrigin = '') {
|
|
283
|
+
// NOTE: Why error if _either_ limit was reached? If user code emits either an existent or non-existent
|
|
284
|
+
// nullifier read request (NULLIFIEREXISTS, GETCONTRACTINSTANCE, *CALL), and one of the limits has been
|
|
285
|
+
// reached (MAX_NULLIFIER_NON_EXISTENT_RRS vs MAX_NULLIFIER_RRS), but not the other, we must prevent the
|
|
286
|
+
// sequencer from lying and saying "this nullifier exists, but MAX_NULLIFIER_RRS has been reached, so I'm
|
|
287
|
+
// going to skip the read request and just revert instead" when the nullifier actually doesn't exist
|
|
288
|
+
// (or vice versa). So, if either maximum has been reached, any nullifier-reading operation must error.
|
|
289
|
+
if (this.nullifierReadRequests.length + this.previousValidationRequestArrayLengths.nullifierReadRequests >=
|
|
290
|
+
MAX_NULLIFIER_READ_REQUESTS_PER_TX) {
|
|
291
|
+
throw new SideEffectLimitReachedError(`nullifier read request ${errorMsgOrigin}`, MAX_NULLIFIER_READ_REQUESTS_PER_TX);
|
|
292
|
+
}
|
|
293
|
+
if (this.nullifierNonExistentReadRequests.length +
|
|
294
|
+
this.previousValidationRequestArrayLengths.nullifierNonExistentReadRequests >=
|
|
295
|
+
MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_TX) {
|
|
296
|
+
throw new SideEffectLimitReachedError(`nullifier non-existent read request ${errorMsgOrigin}`, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_TX);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Helper function to create a public execution request from an AVM execution environment
|
|
302
|
+
*/
|
|
303
|
+
function createPublicCallRequest(avmEnvironment) {
|
|
304
|
+
const callContext = CallContext.from({
|
|
305
|
+
msgSender: avmEnvironment.sender,
|
|
306
|
+
storageContractAddress: avmEnvironment.storageAddress,
|
|
307
|
+
functionSelector: avmEnvironment.functionSelector,
|
|
308
|
+
isDelegateCall: avmEnvironment.isDelegateCall,
|
|
309
|
+
isStaticCall: avmEnvironment.isStaticCall,
|
|
310
|
+
});
|
|
311
|
+
return new PublicCallRequest(avmEnvironment.address, callContext, computeVarArgsHash(avmEnvironment.calldata),
|
|
312
|
+
/*counter=*/ 0);
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5xdWV1ZWRfY2FsbF9zaWRlX2VmZmVjdF90cmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvZW5xdWV1ZWRfY2FsbF9zaWRlX2VmZmVjdF90cmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBR1gsbUJBQW1CLEVBQ25CLDRCQUE0QixFQUM1QixVQUFVLEVBQ1YsR0FBRyxFQUNILGFBQWEsRUFDYixPQUFPLEVBQ1AseUJBQXlCLEVBQ3pCLHFDQUFxQyxFQUNyQyx3QkFBd0IsRUFDeEIsOEJBQThCLEVBQzlCLHNCQUFzQixFQUN0QixrQ0FBa0MsRUFDbEMscUJBQXFCLEVBQ3JCLCtDQUErQyxFQUMvQyxrQ0FBa0MsRUFDbEMsbUNBQW1DLEVBQ25DLDRCQUE0QixFQUM1QixzQ0FBc0MsRUFDdEMsMkJBQTJCLEVBQzNCLFFBQVEsRUFDUixTQUFTLEVBQ1QscUJBQXFCLEVBQ3JCLGlDQUFpQyxFQUNqQyxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsbUNBQW1DLEVBQ25DLHdCQUF3QixFQUN4QixXQUFXLEVBQ1gsd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsY0FBYyxFQUVkLGlCQUFpQixFQUNqQixtQkFBbUIsRUFDbkIscUJBQXFCLEdBQ3RCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFP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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NestedProcessReturnValues, type PublicExecutionRequest, PublicKernelPhase, type PublicProvingRequest, type SimulationError, type Tx, UnencryptedFunctionL2Logs } from '@aztec/circuit-types';
|
|
2
2
|
import { Fr, Gas, type GlobalVariables, type Header, type PublicCallRequest, type PublicKernelCircuitPublicInputs, VMCircuitPublicInputs } from '@aztec/circuits.js';
|
|
3
|
-
import { type
|
|
3
|
+
import { type MerkleTreeReadOperations } from '@aztec/world-state';
|
|
4
4
|
import { type PublicExecutor } from './executor.js';
|
|
5
5
|
import { type PublicKernelCircuitSimulator } from './public_kernel_circuit_simulator.js';
|
|
6
6
|
export type EnqueuedCallResult = {
|
|
@@ -24,7 +24,7 @@ export declare class EnqueuedCallSimulator {
|
|
|
24
24
|
private globalVariables;
|
|
25
25
|
private historicalHeader;
|
|
26
26
|
private log;
|
|
27
|
-
constructor(db:
|
|
27
|
+
constructor(db: MerkleTreeReadOperations, publicExecutor: PublicExecutor, publicKernelSimulator: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header);
|
|
28
28
|
simulate(callRequest: PublicCallRequest, executionRequest: PublicExecutionRequest, tx: Tx, previousPublicKernelOutput: PublicKernelCircuitPublicInputs, availableGas: Gas, transactionFee: Fr, phase: PublicKernelPhase): Promise<EnqueuedCallResult>;
|
|
29
29
|
private combineNestedExecutionResults;
|
|
30
30
|
/** Returns all pending private and public nullifiers. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enqueued_call_simulator.d.ts","sourceRoot":"","sources":["../../src/public/enqueued_call_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,yBAAyB,EAEzB,KAAK,sBAAsB,EAC3B,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,EAAE,EACP,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAIL,EAAE,EAEF,GAAG,EACH,KAAK,eAAe,EACpB,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"enqueued_call_simulator.d.ts","sourceRoot":"","sources":["../../src/public/enqueued_call_simulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,yBAAyB,EAEzB,KAAK,sBAAsB,EAC3B,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,EAAE,EACP,yBAAyB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAIL,EAAE,EAEF,GAAG,EACH,KAAK,eAAe,EACpB,KAAK,MAAM,EAsBX,KAAK,iBAAiB,EAItB,KAAK,+BAA+B,EAQpC,qBAAqB,EAGtB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAmBzF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,oCAAoC;IACpC,eAAe,EAAE,oBAAoB,EAAE,CAAC;IACxC,+DAA+D;IAC/D,YAAY,EAAE,qBAAqB,CAAC;IACpC,4EAA4E;IAC5E,kBAAkB,EAAE,yBAAyB,CAAC;IAC9C,qDAAqD;IACrD,YAAY,EAAE,yBAAyB,CAAC;IACxC,uDAAuD;IACvD,OAAO,EAAE,GAAG,CAAC;IACb,4BAA4B;IAC5B,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC,CAAC;AAEF,qBAAa,qBAAqB;IAG9B,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,gBAAgB;IAN1B,OAAO,CAAC,GAAG,CAAc;gBAEf,EAAE,EAAE,wBAAwB,EAC5B,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,4BAA4B,EACnD,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM;IAK5B,QAAQ,CACZ,WAAW,EAAE,iBAAiB,EAC9B,gBAAgB,EAAE,sBAAsB,EACxC,EAAE,EAAE,EAAE,EACN,0BAA0B,EAAE,+BAA+B,EAC3D,YAAY,EAAE,GAAG,EACjB,cAAc,EAAE,EAAE,EAClB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,kBAAkB,CAAC;YA8DhB,6BAA6B;IAuE3C,yDAAyD;IACzD,OAAO,CAAC,0BAA0B;YAIpB,gBAAgB;IAY9B;;;;;OAKG;YACW,iBAAiB;YAMjB,sBAAsB;IAkEpC,OAAO,CAAC,eAAe;CAMxB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AVM_REQUEST, MerkleTreeId, NestedProcessReturnValues, ProvingRequestType, PublicKernelPhase, UnencryptedFunctionL2Logs, } from '@aztec/circuit-types';
|
|
2
|
-
import { AztecAddress, ContractStorageRead, ContractStorageUpdateRequest, Fr, FunctionData, Gas, L2ToL1Message, LogHash, MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NOTE_HASHES_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, MAX_PUBLIC_DATA_READS_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL, NESTED_RECURSIVE_PROOF_LENGTH, NoteHash, Nullifier, PublicAccumulatedData, PublicAccumulatedDataArrayLengths, PublicCallData, PublicCallStackItem, PublicCircuitPublicInputs, PublicInnerCallRequest, PublicKernelInnerCircuitPrivateInputs, PublicKernelInnerData, PublicValidationRequestArrayLengths, PublicValidationRequests, ReadRequest, RevertCode, TreeLeafReadRequest, VMCircuitPublicInputs, makeEmptyProof, makeEmptyRecursiveProof, } from '@aztec/circuits.js';
|
|
2
|
+
import { AztecAddress, ContractStorageRead, ContractStorageUpdateRequest, Fr, FunctionData, Gas, L2ToL1Message, LogHash, MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_CALL, MAX_L2_GAS_PER_ENQUEUED_CALL, MAX_L2_TO_L1_MSGS_PER_CALL, MAX_NOTE_HASHES_PER_CALL, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL, MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, MAX_PUBLIC_DATA_READS_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_UNENCRYPTED_LOGS_PER_CALL, NESTED_RECURSIVE_PROOF_LENGTH, NoteHash, Nullifier, PublicAccumulatedData, PublicAccumulatedDataArrayLengths, PublicCallData, PublicCallStackItem, PublicCircuitPublicInputs, PublicInnerCallRequest, PublicKernelInnerCircuitPrivateInputs, PublicKernelInnerData, PublicValidationRequestArrayLengths, PublicValidationRequests, ReadRequest, RevertCode, TreeLeafReadRequest, VMCircuitPublicInputs, makeEmptyProof, makeEmptyRecursiveProof, } from '@aztec/circuits.js';
|
|
3
3
|
import { computeVarArgsHash } from '@aztec/circuits.js/hash';
|
|
4
4
|
import { makeTuple } from '@aztec/foundation/array';
|
|
5
5
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
@@ -29,19 +29,30 @@ export class EnqueuedCallSimulator {
|
|
|
29
29
|
this.log = createDebugLogger(`aztec:sequencer`);
|
|
30
30
|
}
|
|
31
31
|
async simulate(callRequest, executionRequest, tx, previousPublicKernelOutput, availableGas, transactionFee, phase) {
|
|
32
|
+
// Gas allocated to an enqueued call can be different from the available gas
|
|
33
|
+
// if there is more gas available than the max allocation per enqueued call.
|
|
34
|
+
const allocatedGas = new Gas(
|
|
35
|
+
/*daGas=*/ availableGas.daGas,
|
|
36
|
+
/*l2Gas=*/ Math.min(availableGas.l2Gas, MAX_L2_GAS_PER_ENQUEUED_CALL));
|
|
32
37
|
const pendingNullifiers = this.getSiloedPendingNullifiers(previousPublicKernelOutput);
|
|
33
38
|
const startSideEffectCounter = previousPublicKernelOutput.endSideEffectCounter + 1;
|
|
34
|
-
const
|
|
39
|
+
const prevAccumulatedData = phase === PublicKernelPhase.SETUP
|
|
40
|
+
? previousPublicKernelOutput.endNonRevertibleData
|
|
41
|
+
: previousPublicKernelOutput.end;
|
|
42
|
+
const previousValidationRequestArrayLengths = PublicValidationRequestArrayLengths.new(previousPublicKernelOutput.validationRequests);
|
|
43
|
+
const previousAccumulatedDataArrayLengths = PublicAccumulatedDataArrayLengths.new(prevAccumulatedData);
|
|
44
|
+
// If this is the first enqueued call in public, constants will be empty
|
|
45
|
+
// because private kernel does not expose them.
|
|
46
|
+
const constants = previousPublicKernelOutput.constants.clone();
|
|
47
|
+
constants.globalVariables = this.globalVariables;
|
|
48
|
+
const result = await this.publicExecutor.simulate(executionRequest, constants, allocatedGas, tx.data.constants.txContext, pendingNullifiers, transactionFee, startSideEffectCounter, previousValidationRequestArrayLengths, previousAccumulatedDataArrayLengths);
|
|
35
49
|
const callStack = makeTuple(MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX, PublicInnerCallRequest.empty);
|
|
36
50
|
callStack[0].item.contractAddress = callRequest.contractAddress;
|
|
37
51
|
callStack[0].item.callContext = callRequest.callContext;
|
|
38
52
|
callStack[0].item.argsHash = callRequest.argsHash;
|
|
39
|
-
const prevAccumulatedData = phase === PublicKernelPhase.SETUP
|
|
40
|
-
? previousPublicKernelOutput.endNonRevertibleData
|
|
41
|
-
: previousPublicKernelOutput.end;
|
|
42
53
|
const accumulatedData = PublicAccumulatedData.empty();
|
|
43
54
|
accumulatedData.publicCallStack[0] = callRequest;
|
|
44
|
-
const startVMCircuitOutput = new VMCircuitPublicInputs(previousPublicKernelOutput.constants, callRequest, callStack,
|
|
55
|
+
const startVMCircuitOutput = new VMCircuitPublicInputs(previousPublicKernelOutput.constants, callRequest, callStack, previousValidationRequestArrayLengths, PublicValidationRequests.empty(), previousAccumulatedDataArrayLengths, accumulatedData, startSideEffectCounter, startSideEffectCounter, allocatedGas, result.transactionFee, result.reverted);
|
|
45
56
|
return await this.combineNestedExecutionResults(result, startVMCircuitOutput);
|
|
46
57
|
}
|
|
47
58
|
async combineNestedExecutionResults(topResult, startVMCircuitOutput) {
|
|
@@ -151,4 +162,4 @@ export class EnqueuedCallSimulator {
|
|
|
151
162
|
return Promise.resolve(bytecodeHash);
|
|
152
163
|
}
|
|
153
164
|
}
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5xdWV1ZWRfY2FsbF9zaW11bGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL2VucXVldWVkX2NhbGxfc2ltdWxhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBRVgsWUFBWSxFQUNaLHlCQUF5QixFQUN6QixrQkFBa0IsRUFFbEIsaUJBQWlCLEVBSWpCLHlCQUF5QixHQUMxQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLDRCQUE0QixFQUM1QixFQUFFLEVBQ0YsWUFBWSxFQUNaLEdBQUcsRUFHSCxhQUFhLEVBQ2IsT0FBTyxFQUNQLHVDQUF1QyxFQUN2QywwQkFBMEIsRUFDMUIsd0JBQXdCLEVBQ3hCLG9DQUFvQyxFQUNwQyx1QkFBdUIsRUFDdkIsaURBQWlELEVBQ2pELG9DQUFvQyxFQUNwQyxxQ0FBcUMsRUFDckMsbUNBQW1DLEVBQ25DLDhCQUE4QixFQUM5Qix3Q0FBd0MsRUFDeEMsNkJBQTZCLEVBQzdCLDZCQUE2QixFQUM3QixRQUFRLEVBQ1IsU0FBUyxFQUNULHFCQUFxQixFQUNyQixpQ0FBaUMsRUFDakMsY0FBYyxFQUVkLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsc0JBQXNCLEVBRXRCLHFDQUFxQyxFQUNyQyxxQkFBcUIsRUFDckIsbUNBQW1DLEVBQ25DLHdCQUF3QixFQUN4QixXQUFXLEVBQ1gsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsY0FBYyxFQUNkLHVCQUF1QixHQUN4QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFv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
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5xdWV1ZWRfY2FsbF9zaW11bGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL2VucXVldWVkX2NhbGxfc2ltdWxhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBRVgsWUFBWSxFQUNaLHlCQUF5QixFQUN6QixrQkFBa0IsRUFFbEIsaUJBQWlCLEVBSWpCLHlCQUF5QixHQUMxQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLDRCQUE0QixFQUM1QixFQUFFLEVBQ0YsWUFBWSxFQUNaLEdBQUcsRUFHSCxhQUFhLEVBQ2IsT0FBTyxFQUNQLHVDQUF1QyxFQUN2Qyw0QkFBNEIsRUFDNUIsMEJBQTBCLEVBQzFCLHdCQUF3QixFQUN4QixvQ0FBb0MsRUFDcEMsdUJBQXVCLEVBQ3ZCLGlEQUFpRCxFQUNqRCxvQ0FBb0MsRUFDcEMscUNBQXFDLEVBQ3JDLG1DQUFtQyxFQUNuQyw4QkFBOEIsRUFDOUIsd0NBQXdDLEVBQ3hDLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDN0IsUUFBUSxFQUNSLFNBQVMsRUFDVCxxQkFBcUIsRUFDckIsaUNBQWlDLEVBQ2pDLGNBQWMsRUFFZCxtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUV0QixxQ0FBcUMsRUFDckMscUJBQXFCLEVBQ3JCLG1DQUFtQyxFQUNuQyx3QkFBd0IsRUFDeEIsV0FBVyxFQUNYLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCx1QkFBdUIsR0FDeEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FB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
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type MerkleTreeReadOperations, type NestedProcessReturnValues, type ProcessedTx, type PublicExecutionRequest, PublicKernelPhase, type PublicProvingRequest, type SimulationError, type Tx } from '@aztec/circuit-types';
|
|
2
2
|
import { type GlobalVariables, type Header, type KernelCircuitPublicInputs, type PublicCallRequest } from '@aztec/circuits.js';
|
|
3
3
|
import { EnqueuedCallSimulator } from './enqueued_call_simulator.js';
|
|
4
4
|
import { type PublicExecutor } from './executor.js';
|
|
@@ -31,7 +31,7 @@ export declare class EnqueuedCallsProcessor {
|
|
|
31
31
|
private publicKernelTailSimulator;
|
|
32
32
|
private log;
|
|
33
33
|
constructor(publicKernelSimulator: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, worldStateDB: WorldStateDB, enqueuedCallSimulator: EnqueuedCallSimulator, publicKernelTailSimulator: PublicKernelTailSimulator);
|
|
34
|
-
static create(db:
|
|
34
|
+
static create(db: MerkleTreeReadOperations, publicExecutor: PublicExecutor, publicKernelSimulator: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, worldStateDB: WorldStateDB): EnqueuedCallsProcessor;
|
|
35
35
|
static getExecutionRequestsByPhase(tx: Tx, phase: PublicKernelPhase): PublicExecutionRequest[];
|
|
36
36
|
static getCallRequestsByPhase(tx: Tx, phase: PublicKernelPhase): PublicCallRequest[];
|
|
37
37
|
process(tx: Tx): Promise<TxPublicCallsResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enqueued_calls_processor.d.ts","sourceRoot":"","sources":["../../src/public/enqueued_calls_processor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,
|
|
1
|
+
{"version":3,"file":"enqueued_calls_processor.d.ts","sourceRoot":"","sources":["../../src/public/enqueued_calls_processor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,WAAW,EAEhB,KAAK,sBAAsB,EAE3B,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,EAAE,EACR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,yBAAyB,EAE9B,KAAK,iBAAiB,EAOvB,MAAM,oBAAoB,CAAC;AAO5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAuB9E,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,iBAAiB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,gDAAgD;IAChD,eAAe,EAAE,oBAAoB,EAAE,CAAC;IACxC,0EAA0E;IAC1E,gBAAgB,EAAE,yBAAyB,CAAC;IAC5C,qDAAqD;IACrD,YAAY,EAAE,yBAAyB,EAAE,CAAC;IAC1C,4CAA4C;IAC5C,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,4BAA4B;IAC5B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC,CAAC;AAEF,qBAAa,sBAAsB;IAI/B,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,qBAAqB;IAC7B,OAAO,CAAC,yBAAyB;IAPnC,OAAO,CAAC,GAAG,CAAc;gBAGf,qBAAqB,EAAE,4BAA4B,EACnD,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,qBAAqB,EAC5C,yBAAyB,EAAE,yBAAyB;IAK9D,MAAM,CAAC,MAAM,CACX,EAAE,EAAE,wBAAwB,EAC5B,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,4BAA4B,EACnD,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,YAAY;IAqB5B,MAAM,CAAC,2BAA2B,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,GAAG,sBAAsB,EAAE;IAe9F,MAAM,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,EAAE;IAe9E,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAyErC,YAAY;IA0F1B,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,iBAAiB;YAoBX,qBAAqB;IAuBnC,OAAO,CAAC,qBAAqB;CAa9B"}
|
|
@@ -2,7 +2,7 @@ import { ProvingRequestType, PublicKernelPhase, } from '@aztec/circuit-types';
|
|
|
2
2
|
import { EnqueuedCallData, Fr, Gas, NESTED_RECURSIVE_PROOF_LENGTH, PublicKernelCircuitPrivateInputs, PublicKernelData, makeEmptyProof, makeEmptyRecursiveProof, } from '@aztec/circuits.js';
|
|
3
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { Timer } from '@aztec/foundation/timer';
|
|
5
|
-
import { ProtocolCircuitVks, getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types';
|
|
5
|
+
import { ProtocolCircuitVks, TubeVk, getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types';
|
|
6
6
|
import { inspect } from 'util';
|
|
7
7
|
import { EnqueuedCallSimulator } from './enqueued_call_simulator.js';
|
|
8
8
|
import { PublicKernelTailSimulator } from './public_kernel_tail_simulator.js';
|
|
@@ -207,12 +207,10 @@ export class EnqueuedCallsProcessor {
|
|
|
207
207
|
getPreviousKernelData(previousOutput, isFromPrivate) {
|
|
208
208
|
// The proof is not used in simulation.
|
|
209
209
|
const proof = makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH);
|
|
210
|
-
const vk = isFromPrivate
|
|
211
|
-
? ProtocolCircuitVks.PrivateKernelTailToPublicArtifact
|
|
212
|
-
: ProtocolCircuitVks.PublicKernelMergeArtifact;
|
|
210
|
+
const vk = isFromPrivate ? TubeVk : ProtocolCircuitVks.PublicKernelMergeArtifact;
|
|
213
211
|
const vkIndex = getVKIndex(vk);
|
|
214
212
|
const siblingPath = getVKSiblingPath(vkIndex);
|
|
215
213
|
return new PublicKernelData(previousOutput, proof, vk, vkIndex, siblingPath);
|
|
216
214
|
}
|
|
217
215
|
}
|
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5xdWV1ZWRfY2FsbHNfcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy9lbnF1ZXVlZF9jYWxsc19wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLGtCQUFrQixFQUdsQixpQkFBaUIsR0FJbEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLEVBQUUsRUFDRixHQUFHLEVBSUgsNkJBQTZCLEVBRTdCLGdDQUFnQyxFQUVoQyxnQkFBZ0IsRUFFaEIsY0FBYyxFQUNkLHVCQUF1QixHQUN4QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXZHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJckUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUUsTUFBTSxpQkFBaUIsR0FBdUM7SUFDNUQsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLO0lBQ2hDLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSTtJQUNuQyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUk7Q0FDbkMsQ0FBQztBQXFDRixNQUFNLE9BQU8sc0JBQXNCO0lBR2pDLFlBQ1UscUJBQW1ELEVBQ25ELGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLHFCQUE0QyxFQUM1Qyx5QkFBb0Q7UUFKcEQsMEJBQXFCLEdBQXJCLHFCQUFx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
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5xdWV1ZWRfY2FsbHNfcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy9lbnF1ZXVlZF9jYWxsc19wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLGtCQUFrQixFQUdsQixpQkFBaUIsR0FJbEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLEVBQUUsRUFDRixHQUFHLEVBSUgsNkJBQTZCLEVBRTdCLGdDQUFnQyxFQUVoQyxnQkFBZ0IsRUFFaEIsY0FBYyxFQUNkLHVCQUF1QixHQUN4QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUUvRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBSXJFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTlFLE1BQU0saUJBQWlCLEdBQXVDO0lBQzVELENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSztJQUNoQyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUk7SUFDbkMsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJO0NBQ25DLENBQUM7QUFxQ0YsTUFBTSxPQUFPLHNCQUFzQjtJQUdqQyxZQUNVLHFCQUFtRCxFQUNuRCxlQUFnQyxFQUNoQyxZQUEwQixFQUMxQixxQkFBNEMsRUFDNUMseUJBQW9EO1FBSnBELDBCQUFxQixH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
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import { NestedProcessReturnValues, type PublicExecutionRequest, type SimulationError, type UnencryptedFunctionL2Logs } from '@aztec/circuit-types';
|
|
3
|
-
import { type AvmExecutionHints, type ContractStorageRead, type ContractStorageUpdateRequest, type Fr, type L2ToL1Message, type LogHash, type NoteHash, type Nullifier, PublicInnerCallRequest, type ReadRequest, type TreeLeafReadRequest } from '@aztec/circuits.js';
|
|
4
|
-
import { type Gas as AvmGas } from '../avm/avm_gas.js';
|
|
3
|
+
import { type AvmExecutionHints, type ContractStorageRead, type ContractStorageUpdateRequest, type Fr, Gas, type L2ToL1Message, type LogHash, type NoteHash, type Nullifier, PublicInnerCallRequest, type ReadRequest, type TreeLeafReadRequest } from '@aztec/circuits.js';
|
|
5
4
|
/**
|
|
6
5
|
* The public function execution result.
|
|
7
6
|
*/
|
|
@@ -13,9 +12,9 @@ export interface PublicExecutionResult {
|
|
|
13
12
|
/** The side effect counter after executing this function call */
|
|
14
13
|
endSideEffectCounter: Fr;
|
|
15
14
|
/** How much gas was available for this public execution. */
|
|
16
|
-
startGasLeft:
|
|
15
|
+
startGasLeft: Gas;
|
|
17
16
|
/** How much gas was left after this public execution. */
|
|
18
|
-
endGasLeft:
|
|
17
|
+
endGasLeft: Gas;
|
|
19
18
|
/** Transaction fee set for this tx. */
|
|
20
19
|
transactionFee: Fr;
|
|
21
20
|
/** Bytecode used for this execution. */
|