@aztec/simulator 0.57.0 → 0.58.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.
Files changed (135) hide show
  1. package/dest/acvm/oracle/oracle.js +2 -2
  2. package/dest/acvm/oracle/typed_oracle.d.ts +1 -2
  3. package/dest/acvm/oracle/typed_oracle.d.ts.map +1 -1
  4. package/dest/acvm/oracle/typed_oracle.js +1 -1
  5. package/dest/avm/avm_gas.js +2 -2
  6. package/dest/avm/avm_memory_types.d.ts +7 -3
  7. package/dest/avm/avm_memory_types.d.ts.map +1 -1
  8. package/dest/avm/avm_memory_types.js +29 -14
  9. package/dest/avm/avm_simulator.d.ts.map +1 -1
  10. package/dest/avm/avm_simulator.js +5 -2
  11. package/dest/avm/fixtures/index.d.ts.map +1 -1
  12. package/dest/avm/fixtures/index.js +3 -3
  13. package/dest/avm/journal/journal.d.ts.map +1 -1
  14. package/dest/avm/journal/journal.js +2 -3
  15. package/dest/avm/opcodes/accrued_substate.js +17 -17
  16. package/dest/avm/opcodes/arithmetic.js +2 -2
  17. package/dest/avm/opcodes/bitwise.d.ts +3 -3
  18. package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
  19. package/dest/avm/opcodes/bitwise.js +9 -8
  20. package/dest/avm/opcodes/comparators.js +2 -2
  21. package/dest/avm/opcodes/contract.d.ts.map +1 -1
  22. package/dest/avm/opcodes/contract.js +4 -3
  23. package/dest/avm/opcodes/control_flow.js +1 -1
  24. package/dest/avm/opcodes/conversion.js +4 -4
  25. package/dest/avm/opcodes/ec_add.d.ts.map +1 -1
  26. package/dest/avm/opcodes/ec_add.js +18 -9
  27. package/dest/avm/opcodes/external_calls.js +10 -10
  28. package/dest/avm/opcodes/hashing.js +8 -8
  29. package/dest/avm/opcodes/instruction_impl.d.ts +1 -2
  30. package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -1
  31. package/dest/avm/opcodes/instruction_impl.js +2 -5
  32. package/dest/avm/opcodes/memory.js +3 -3
  33. package/dest/avm/opcodes/misc.js +4 -4
  34. package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +1 -1
  35. package/dest/avm/opcodes/multi_scalar_mul.js +24 -9
  36. package/dest/avm/opcodes/storage.js +2 -2
  37. package/dest/avm/serialization/instruction_serialization.js +2 -2
  38. package/dest/avm/test_utils.d.ts +1 -2
  39. package/dest/avm/test_utils.d.ts.map +1 -1
  40. package/dest/avm/test_utils.js +1 -1
  41. package/dest/client/client_execution_context.d.ts.map +1 -1
  42. package/dest/client/client_execution_context.js +7 -3
  43. package/dest/client/db_oracle.d.ts +1 -2
  44. package/dest/client/db_oracle.d.ts.map +1 -1
  45. package/dest/client/db_oracle.js +1 -1
  46. package/dest/client/index.d.ts +1 -0
  47. package/dest/client/index.d.ts.map +1 -1
  48. package/dest/client/index.js +2 -1
  49. package/dest/client/private_execution.d.ts +10 -1
  50. package/dest/client/private_execution.d.ts.map +1 -1
  51. package/dest/client/private_execution.js +25 -5
  52. package/dest/client/view_data_oracle.d.ts +1 -2
  53. package/dest/client/view_data_oracle.d.ts.map +1 -1
  54. package/dest/client/view_data_oracle.js +1 -1
  55. package/dest/public/db_interfaces.d.ts +1 -2
  56. package/dest/public/db_interfaces.d.ts.map +1 -1
  57. package/dest/public/dual_side_effect_trace.d.ts +76 -0
  58. package/dest/public/dual_side_effect_trace.d.ts.map +1 -0
  59. package/dest/public/dual_side_effect_trace.js +109 -0
  60. package/dest/public/enqueued_call_side_effect_trace.d.ts +114 -0
  61. package/dest/public/enqueued_call_side_effect_trace.d.ts.map +1 -0
  62. package/dest/public/enqueued_call_side_effect_trace.js +314 -0
  63. package/dest/public/enqueued_call_simulator.d.ts +2 -2
  64. package/dest/public/enqueued_call_simulator.d.ts.map +1 -1
  65. package/dest/public/enqueued_call_simulator.js +18 -7
  66. package/dest/public/enqueued_calls_processor.d.ts +2 -2
  67. package/dest/public/enqueued_calls_processor.d.ts.map +1 -1
  68. package/dest/public/enqueued_calls_processor.js +3 -5
  69. package/dest/public/execution.d.ts +3 -4
  70. package/dest/public/execution.d.ts.map +1 -1
  71. package/dest/public/execution.js +1 -1
  72. package/dest/public/executor.d.ts +6 -4
  73. package/dest/public/executor.d.ts.map +1 -1
  74. package/dest/public/executor.js +18 -9
  75. package/dest/public/fee_payment.d.ts +1 -1
  76. package/dest/public/fee_payment.d.ts.map +1 -1
  77. package/dest/public/fee_payment.js +4 -7
  78. package/dest/public/hints_builder.d.ts +2 -2
  79. package/dest/public/hints_builder.d.ts.map +1 -1
  80. package/dest/public/hints_builder.js +1 -1
  81. package/dest/public/public_db_sources.d.ts +4 -5
  82. package/dest/public/public_db_sources.d.ts.map +1 -1
  83. package/dest/public/public_db_sources.js +15 -11
  84. package/dest/public/public_kernel_tail_simulator.d.ts +3 -3
  85. package/dest/public/public_kernel_tail_simulator.d.ts.map +1 -1
  86. package/dest/public/public_kernel_tail_simulator.js +1 -1
  87. package/dest/public/public_processor.d.ts +7 -11
  88. package/dest/public/public_processor.d.ts.map +1 -1
  89. package/dest/public/public_processor.js +8 -12
  90. package/dest/public/side_effect_trace.d.ts +1 -2
  91. package/dest/public/side_effect_trace.d.ts.map +1 -1
  92. package/dest/public/side_effect_trace.js +2 -2
  93. package/package.json +9 -9
  94. package/src/acvm/oracle/oracle.ts +1 -1
  95. package/src/acvm/oracle/typed_oracle.ts +6 -2
  96. package/src/avm/avm_gas.ts +1 -1
  97. package/src/avm/avm_memory_types.ts +28 -11
  98. package/src/avm/avm_simulator.ts +7 -1
  99. package/src/avm/fixtures/index.ts +2 -2
  100. package/src/avm/journal/journal.ts +3 -4
  101. package/src/avm/opcodes/accrued_substate.ts +17 -17
  102. package/src/avm/opcodes/arithmetic.ts +1 -1
  103. package/src/avm/opcodes/bitwise.ts +8 -7
  104. package/src/avm/opcodes/comparators.ts +1 -1
  105. package/src/avm/opcodes/contract.ts +3 -2
  106. package/src/avm/opcodes/control_flow.ts +1 -1
  107. package/src/avm/opcodes/conversion.ts +4 -4
  108. package/src/avm/opcodes/ec_add.ts +15 -8
  109. package/src/avm/opcodes/external_calls.ts +10 -10
  110. package/src/avm/opcodes/hashing.ts +8 -8
  111. package/src/avm/opcodes/instruction_impl.ts +0 -3
  112. package/src/avm/opcodes/memory.ts +3 -3
  113. package/src/avm/opcodes/misc.ts +4 -4
  114. package/src/avm/opcodes/multi_scalar_mul.ts +20 -12
  115. package/src/avm/opcodes/storage.ts +2 -2
  116. package/src/avm/serialization/instruction_serialization.ts +1 -1
  117. package/src/avm/test_utils.ts +1 -2
  118. package/src/client/client_execution_context.ts +6 -1
  119. package/src/client/db_oracle.ts +6 -2
  120. package/src/client/index.ts +1 -0
  121. package/src/client/private_execution.ts +36 -6
  122. package/src/client/view_data_oracle.ts +1 -2
  123. package/src/public/db_interfaces.ts +5 -2
  124. package/src/public/dual_side_effect_trace.ts +173 -0
  125. package/src/public/enqueued_call_side_effect_trace.ts +552 -0
  126. package/src/public/enqueued_call_simulator.ts +33 -11
  127. package/src/public/enqueued_calls_processor.ts +4 -6
  128. package/src/public/execution.ts +2 -4
  129. package/src/public/executor.ts +38 -9
  130. package/src/public/fee_payment.ts +4 -6
  131. package/src/public/hints_builder.ts +2 -2
  132. package/src/public/public_db_sources.ts +31 -22
  133. package/src/public/public_kernel_tail_simulator.ts +3 -3
  134. package/src/public/public_processor.ts +16 -16
  135. 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 MerkleTreeOperations } from '@aztec/world-state';
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: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernelSimulator: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header);
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,EAqBX,KAAK,iBAAiB,EAItB,KAAK,+BAA+B,EAQpC,qBAAqB,EAGtB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG/D,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,oBAAoB,EACxB,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;YAyChB,6BAA6B;IAuE3C,yDAAyD;IACzD,OAAO,CAAC,0BAA0B;YAIpB,gBAAgB;IAY9B;;;;;OAKG;YACW,iBAAiB;YAMjB,sBAAsB;IAkEpC,OAAO,CAAC,eAAe;CAMxB"}
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 result = await this.publicExecutor.simulate(executionRequest, this.globalVariables, availableGas, tx.data.constants.txContext, pendingNullifiers, transactionFee, startSideEffectCounter);
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, PublicValidationRequestArrayLengths.new(previousPublicKernelOutput.validationRequests), PublicValidationRequests.empty(), PublicAccumulatedDataArrayLengths.new(prevAccumulatedData), accumulatedData, startSideEffectCounter, startSideEffectCounter, availableGas, result.transactionFee, result.reverted);
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 MerkleTreeOperations, type NestedProcessReturnValues, type ProcessedTx, type PublicExecutionRequest, PublicKernelPhase, type PublicProvingRequest, type SimulationError, type Tx } from '@aztec/circuit-types';
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: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernelSimulator: PublicKernelCircuitSimulator, globalVariables: GlobalVariables, historicalHeader: Header, worldStateDB: WorldStateDB): EnqueuedCallsProcessor;
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,oBAAoB,EACzB,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,oBAAoB,EACxB,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;CAe9B"}
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: AvmGas;
15
+ startGasLeft: Gas;
17
16
  /** How much gas was left after this public execution. */
18
- endGasLeft: AvmGas;
17
+ endGasLeft: Gas;
19
18
  /** Transaction fee set for this tx. */
20
19
  transactionFee: Fr;
21
20
  /** Bytecode used for this execution. */