@aztec/simulator 0.55.1 → 0.56.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 (171) hide show
  1. package/dest/avm/avm_execution_environment.d.ts +0 -8
  2. package/dest/avm/avm_execution_environment.d.ts.map +1 -1
  3. package/dest/avm/avm_execution_environment.js +1 -19
  4. package/dest/avm/avm_gas.d.ts +2 -2
  5. package/dest/avm/avm_gas.d.ts.map +1 -1
  6. package/dest/avm/avm_gas.js +31 -115
  7. package/dest/avm/avm_machine_state.d.ts.map +1 -1
  8. package/dest/avm/avm_machine_state.js +6 -6
  9. package/dest/avm/avm_memory_types.d.ts +35 -7
  10. package/dest/avm/avm_memory_types.d.ts.map +1 -1
  11. package/dest/avm/avm_memory_types.js +25 -11
  12. package/dest/avm/avm_simulator.d.ts.map +1 -1
  13. package/dest/avm/avm_simulator.js +5 -6
  14. package/dest/avm/bytecode_utils.d.ts +1 -2
  15. package/dest/avm/bytecode_utils.d.ts.map +1 -1
  16. package/dest/avm/bytecode_utils.js +3 -17
  17. package/dest/avm/fixtures/index.d.ts +4 -16
  18. package/dest/avm/fixtures/index.d.ts.map +1 -1
  19. package/dest/avm/fixtures/index.js +9 -25
  20. package/dest/avm/journal/index.d.ts +0 -1
  21. package/dest/avm/journal/index.d.ts.map +1 -1
  22. package/dest/avm/journal/index.js +1 -2
  23. package/dest/avm/journal/journal.d.ts +4 -4
  24. package/dest/avm/journal/journal.d.ts.map +1 -1
  25. package/dest/avm/journal/journal.js +14 -13
  26. package/dest/avm/opcodes/bitwise.d.ts +10 -4
  27. package/dest/avm/opcodes/bitwise.d.ts.map +1 -1
  28. package/dest/avm/opcodes/bitwise.js +17 -11
  29. package/dest/avm/opcodes/commitment.js +2 -2
  30. package/dest/avm/opcodes/comparators.js +2 -2
  31. package/dest/avm/opcodes/conversion.d.ts +3 -2
  32. package/dest/avm/opcodes/conversion.d.ts.map +1 -1
  33. package/dest/avm/opcodes/conversion.js +18 -11
  34. package/dest/avm/opcodes/environment_getters.d.ts +27 -63
  35. package/dest/avm/opcodes/environment_getters.d.ts.map +1 -1
  36. package/dest/avm/opcodes/environment_getters.js +75 -80
  37. package/dest/avm/opcodes/hashing.d.ts +7 -5
  38. package/dest/avm/opcodes/hashing.d.ts.map +1 -1
  39. package/dest/avm/opcodes/hashing.js +40 -24
  40. package/dest/avm/opcodes/index.d.ts +3 -0
  41. package/dest/avm/opcodes/index.d.ts.map +1 -1
  42. package/dest/avm/opcodes/index.js +4 -1
  43. package/dest/avm/opcodes/instruction_impl.d.ts +0 -26
  44. package/dest/avm/opcodes/instruction_impl.d.ts.map +1 -1
  45. package/dest/avm/opcodes/instruction_impl.js +1 -51
  46. package/dest/avm/opcodes/memory.d.ts +7 -2
  47. package/dest/avm/opcodes/memory.d.ts.map +1 -1
  48. package/dest/avm/opcodes/memory.js +23 -6
  49. package/dest/avm/opcodes/multi_scalar_mul.d.ts.map +1 -1
  50. package/dest/avm/opcodes/multi_scalar_mul.js +7 -6
  51. package/dest/avm/serialization/bytecode_serialization.d.ts.map +1 -1
  52. package/dest/avm/serialization/bytecode_serialization.js +5 -24
  53. package/dest/avm/serialization/instruction_serialization.d.ts +48 -60
  54. package/dest/avm/serialization/instruction_serialization.d.ts.map +1 -1
  55. package/dest/avm/serialization/instruction_serialization.js +50 -63
  56. package/dest/avm/test_utils.d.ts +8 -8
  57. package/dest/avm/test_utils.d.ts.map +1 -1
  58. package/dest/avm/test_utils.js +15 -15
  59. package/dest/client/simulator.d.ts +1 -1
  60. package/dest/client/test_utils.d.ts.map +1 -1
  61. package/dest/client/test_utils.js +12 -6
  62. package/dest/client/unconstrained_execution.d.ts +2 -2
  63. package/dest/client/unconstrained_execution.d.ts.map +1 -1
  64. package/dest/client/unconstrained_execution.js +3 -3
  65. package/dest/public/enqueued_call_simulator.d.ts +43 -0
  66. package/dest/public/enqueued_call_simulator.d.ts.map +1 -0
  67. package/dest/public/enqueued_call_simulator.js +155 -0
  68. package/dest/public/enqueued_calls_processor.d.ts +44 -0
  69. package/dest/public/enqueued_calls_processor.d.ts.map +1 -0
  70. package/dest/public/enqueued_calls_processor.js +218 -0
  71. package/dest/public/execution.d.ts +4 -9
  72. package/dest/public/execution.d.ts.map +1 -1
  73. package/dest/public/execution.js +5 -10
  74. package/dest/public/executor.d.ts +3 -5
  75. package/dest/public/executor.d.ts.map +1 -1
  76. package/dest/public/executor.js +5 -9
  77. package/dest/public/hints_builder.d.ts +4 -3
  78. package/dest/public/hints_builder.d.ts.map +1 -1
  79. package/dest/public/hints_builder.js +4 -4
  80. package/dest/public/index.d.ts +3 -2
  81. package/dest/public/index.d.ts.map +1 -1
  82. package/dest/public/index.js +3 -3
  83. package/dest/public/public_db_sources.d.ts +17 -24
  84. package/dest/public/public_db_sources.d.ts.map +1 -1
  85. package/dest/public/public_db_sources.js +58 -65
  86. package/dest/public/public_kernel.d.ts +3 -9
  87. package/dest/public/public_kernel.d.ts.map +1 -1
  88. package/dest/public/public_kernel.js +13 -40
  89. package/dest/public/public_kernel_circuit_simulator.d.ts +5 -11
  90. package/dest/public/public_kernel_circuit_simulator.d.ts.map +1 -1
  91. package/dest/public/public_kernel_tail_simulator.d.ts +19 -0
  92. package/dest/public/public_kernel_tail_simulator.d.ts.map +1 -0
  93. package/dest/public/public_kernel_tail_simulator.js +45 -0
  94. package/dest/public/public_processor.d.ts +8 -5
  95. package/dest/public/public_processor.d.ts.map +1 -1
  96. package/dest/public/public_processor.js +31 -48
  97. package/dest/public/public_processor_metrics.d.ts +3 -3
  98. package/dest/public/public_processor_metrics.d.ts.map +1 -1
  99. package/dest/public/public_processor_metrics.js +1 -1
  100. package/dest/public/side_effect_trace.d.ts.map +1 -1
  101. package/dest/public/side_effect_trace.js +4 -8
  102. package/package.json +9 -9
  103. package/src/avm/avm_execution_environment.ts +1 -21
  104. package/src/avm/avm_gas.ts +30 -114
  105. package/src/avm/avm_machine_state.ts +5 -5
  106. package/src/avm/avm_memory_types.ts +31 -9
  107. package/src/avm/avm_simulator.ts +4 -5
  108. package/src/avm/bytecode_utils.ts +2 -17
  109. package/src/avm/fixtures/index.ts +12 -44
  110. package/src/avm/journal/index.ts +0 -1
  111. package/src/avm/journal/journal.ts +13 -18
  112. package/src/avm/opcodes/bitwise.ts +14 -10
  113. package/src/avm/opcodes/commitment.ts +1 -1
  114. package/src/avm/opcodes/comparators.ts +2 -2
  115. package/src/avm/opcodes/conversion.ts +19 -10
  116. package/src/avm/opcodes/environment_getters.ts +72 -99
  117. package/src/avm/opcodes/hashing.ts +47 -22
  118. package/src/avm/opcodes/index.ts +3 -0
  119. package/src/avm/opcodes/instruction_impl.ts +0 -62
  120. package/src/avm/opcodes/memory.ts +20 -6
  121. package/src/avm/opcodes/multi_scalar_mul.ts +6 -6
  122. package/src/avm/serialization/bytecode_serialization.ts +11 -33
  123. package/src/avm/serialization/instruction_serialization.ts +5 -18
  124. package/src/avm/test_utils.ts +20 -16
  125. package/src/client/test_utils.ts +36 -9
  126. package/src/client/unconstrained_execution.ts +3 -8
  127. package/src/public/enqueued_call_simulator.ts +336 -0
  128. package/src/public/enqueued_calls_processor.ts +388 -0
  129. package/src/public/execution.ts +5 -12
  130. package/src/public/executor.ts +4 -12
  131. package/src/public/hints_builder.ts +14 -12
  132. package/src/public/index.ts +3 -2
  133. package/src/public/public_db_sources.ts +62 -67
  134. package/src/public/public_kernel.ts +15 -49
  135. package/src/public/public_kernel_circuit_simulator.ts +6 -10
  136. package/src/public/public_kernel_tail_simulator.ts +106 -0
  137. package/src/public/public_processor.ts +61 -86
  138. package/src/public/public_processor_metrics.ts +3 -3
  139. package/src/public/side_effect_trace.ts +5 -12
  140. package/dest/avm/journal/host_storage.d.ts +0 -13
  141. package/dest/avm/journal/host_storage.d.ts.map +0 -1
  142. package/dest/avm/journal/host_storage.js +0 -13
  143. package/dest/avm/opcodes/context_getters.d.ts +0 -15
  144. package/dest/avm/opcodes/context_getters.d.ts.map +0 -1
  145. package/dest/avm/opcodes/context_getters.js +0 -19
  146. package/dest/public/abstract_phase_manager.d.ts +0 -93
  147. package/dest/public/abstract_phase_manager.d.ts.map +0 -1
  148. package/dest/public/abstract_phase_manager.js +0 -285
  149. package/dest/public/app_logic_phase_manager.d.ts +0 -25
  150. package/dest/public/app_logic_phase_manager.d.ts.map +0 -1
  151. package/dest/public/app_logic_phase_manager.js +0 -52
  152. package/dest/public/phase_manager_factory.d.ts +0 -18
  153. package/dest/public/phase_manager_factory.d.ts.map +0 -1
  154. package/dest/public/phase_manager_factory.js +0 -56
  155. package/dest/public/setup_phase_manager.d.ts +0 -25
  156. package/dest/public/setup_phase_manager.d.ts.map +0 -1
  157. package/dest/public/setup_phase_manager.js +0 -39
  158. package/dest/public/tail_phase_manager.d.ts +0 -23
  159. package/dest/public/tail_phase_manager.d.ts.map +0 -1
  160. package/dest/public/tail_phase_manager.js +0 -50
  161. package/dest/public/teardown_phase_manager.d.ts +0 -27
  162. package/dest/public/teardown_phase_manager.d.ts.map +0 -1
  163. package/dest/public/teardown_phase_manager.js +0 -56
  164. package/src/avm/journal/host_storage.ts +0 -14
  165. package/src/avm/opcodes/context_getters.ts +0 -23
  166. package/src/public/abstract_phase_manager.ts +0 -522
  167. package/src/public/app_logic_phase_manager.ts +0 -81
  168. package/src/public/phase_manager_factory.ts +0 -126
  169. package/src/public/setup_phase_manager.ts +0 -61
  170. package/src/public/tail_phase_manager.ts +0 -127
  171. package/src/public/teardown_phase_manager.ts +0 -86
@@ -0,0 +1,218 @@
1
+ import { ProvingRequestType, PublicKernelPhase, } from '@aztec/circuit-types';
2
+ import { EnqueuedCallData, Fr, Gas, NESTED_RECURSIVE_PROOF_LENGTH, PublicKernelCircuitPrivateInputs, PublicKernelData, makeEmptyProof, makeEmptyRecursiveProof, } from '@aztec/circuits.js';
3
+ import { createDebugLogger } from '@aztec/foundation/log';
4
+ import { Timer } from '@aztec/foundation/timer';
5
+ import { ProtocolCircuitVks, getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types';
6
+ import { inspect } from 'util';
7
+ import { EnqueuedCallSimulator } from './enqueued_call_simulator.js';
8
+ import { PublicKernelTailSimulator } from './public_kernel_tail_simulator.js';
9
+ const PhaseIsRevertible = {
10
+ [PublicKernelPhase.SETUP]: false,
11
+ [PublicKernelPhase.APP_LOGIC]: true,
12
+ [PublicKernelPhase.TEARDOWN]: true,
13
+ };
14
+ export class EnqueuedCallsProcessor {
15
+ constructor(publicKernelSimulator, globalVariables, worldStateDB, enqueuedCallSimulator, publicKernelTailSimulator) {
16
+ this.publicKernelSimulator = publicKernelSimulator;
17
+ this.globalVariables = globalVariables;
18
+ this.worldStateDB = worldStateDB;
19
+ this.enqueuedCallSimulator = enqueuedCallSimulator;
20
+ this.publicKernelTailSimulator = publicKernelTailSimulator;
21
+ this.log = createDebugLogger(`aztec:sequencer`);
22
+ }
23
+ static create(db, publicExecutor, publicKernelSimulator, globalVariables, historicalHeader, worldStateDB) {
24
+ const enqueuedCallSimulator = new EnqueuedCallSimulator(db, publicExecutor, publicKernelSimulator, globalVariables, historicalHeader);
25
+ const publicKernelTailSimulator = PublicKernelTailSimulator.create(db, publicKernelSimulator);
26
+ return new EnqueuedCallsProcessor(publicKernelSimulator, globalVariables, worldStateDB, enqueuedCallSimulator, publicKernelTailSimulator);
27
+ }
28
+ static getExecutionRequestsByPhase(tx, phase) {
29
+ switch (phase) {
30
+ case PublicKernelPhase.SETUP:
31
+ return tx.getNonRevertiblePublicExecutionRequests();
32
+ case PublicKernelPhase.APP_LOGIC:
33
+ return tx.getRevertiblePublicExecutionRequests();
34
+ case PublicKernelPhase.TEARDOWN: {
35
+ const request = tx.getPublicTeardownExecutionRequest();
36
+ return request ? [request] : [];
37
+ }
38
+ default:
39
+ throw new Error(`Unknown phase: ${phase}`);
40
+ }
41
+ }
42
+ static getCallRequestsByPhase(tx, phase) {
43
+ switch (phase) {
44
+ case PublicKernelPhase.SETUP:
45
+ return tx.data.getNonRevertiblePublicCallRequests();
46
+ case PublicKernelPhase.APP_LOGIC:
47
+ return tx.data.getRevertiblePublicCallRequests();
48
+ case PublicKernelPhase.TEARDOWN: {
49
+ const request = tx.data.getTeardownPublicCallRequest();
50
+ return request ? [request] : [];
51
+ }
52
+ default:
53
+ throw new Error(`Unknown phase: ${phase}`);
54
+ }
55
+ }
56
+ async process(tx) {
57
+ this.log.verbose(`Processing tx ${tx.getTxHash()}`);
58
+ const phases = [
59
+ PublicKernelPhase.SETUP,
60
+ PublicKernelPhase.APP_LOGIC,
61
+ PublicKernelPhase.TEARDOWN,
62
+ ];
63
+ const processedPhases = [];
64
+ const provingRequests = [];
65
+ const gasUsed = {};
66
+ let publicKernelOutput = tx.data.toPublicKernelCircuitPublicInputs();
67
+ let isFromPrivate = true;
68
+ let returnValues = [];
69
+ let revertReason;
70
+ for (let i = 0; i < phases.length; i++) {
71
+ const phase = phases[i];
72
+ const callRequests = EnqueuedCallsProcessor.getCallRequestsByPhase(tx, phase);
73
+ if (callRequests.length) {
74
+ const executionRequests = EnqueuedCallsProcessor.getExecutionRequestsByPhase(tx, phase);
75
+ const result = await this.processPhase(tx, callRequests, executionRequests, publicKernelOutput, phase, isFromPrivate).catch(async (err) => {
76
+ await this.worldStateDB.rollbackToCommit();
77
+ throw err;
78
+ });
79
+ publicKernelOutput = result.publicKernelOutput;
80
+ isFromPrivate = false;
81
+ provingRequests.push(...result.provingRequests);
82
+ if (phase === PublicKernelPhase.APP_LOGIC) {
83
+ returnValues = result.returnValues;
84
+ }
85
+ gasUsed[phase] = result.gasUsed;
86
+ processedPhases.push({
87
+ phase,
88
+ durationMs: result.durationMs,
89
+ revertReason: result.revertReason,
90
+ });
91
+ revertReason ?? (revertReason = result.revertReason);
92
+ }
93
+ }
94
+ const { output: tailKernelOutput, provingRequest } = await this.publicKernelTailSimulator
95
+ .simulate(publicKernelOutput)
96
+ .catch(
97
+ // the abstract phase manager throws if simulation gives error in non-revertible phase
98
+ async (err) => {
99
+ await this.worldStateDB.rollbackToCommit();
100
+ throw err;
101
+ });
102
+ provingRequests.push(provingRequest);
103
+ return {
104
+ provingRequests: provingRequests,
105
+ tailKernelOutput,
106
+ returnValues,
107
+ gasUsed,
108
+ processedPhases,
109
+ revertReason,
110
+ };
111
+ }
112
+ async processPhase(tx, callRequests, executionRequests, previousPublicKernelOutput, phase, isFromPrivate) {
113
+ this.log.debug(`Beginning processing in phase ${PublicKernelPhase[phase]} for tx ${tx.getTxHash()}`);
114
+ const phaseTimer = new Timer();
115
+ const provingRequests = [];
116
+ const returnValues = [];
117
+ let publicKernelOutput = previousPublicKernelOutput;
118
+ let gasUsed = Gas.empty();
119
+ let revertReason;
120
+ for (let i = callRequests.length - 1; i >= 0 && !revertReason; i--) {
121
+ const callRequest = callRequests[i];
122
+ const executionRequest = executionRequests[i];
123
+ // add new contracts to the contracts db so that their functions may be found and called
124
+ // TODO(#4073): This is catching only private deployments, when we add public ones, we'll
125
+ // have to capture contracts emitted in that phase as well.
126
+ // TODO(@spalladino): Should we allow emitting contracts in the fee preparation phase?
127
+ // TODO(#6464): Should we allow emitting contracts in the private setup phase?
128
+ // if so, this should only add contracts that were deployed during private app logic.
129
+ await this.worldStateDB.addNewContracts(tx);
130
+ const availableGas = this.getAvailableGas(tx, publicKernelOutput, phase);
131
+ const transactionFee = this.getTransactionFee(tx, publicKernelOutput, phase);
132
+ const enqueuedCallResult = await this.enqueuedCallSimulator.simulate(callRequest, executionRequest, tx, publicKernelOutput, availableGas, transactionFee, phase);
133
+ if (enqueuedCallResult.revertReason && !PhaseIsRevertible[phase]) {
134
+ this.log.debug(`Simulation error on ${executionRequest.contractAddress.toString()}:${executionRequest.callContext.functionSelector} with reason: ${enqueuedCallResult.revertReason}`);
135
+ throw enqueuedCallResult.revertReason;
136
+ }
137
+ provingRequests.push(...enqueuedCallResult.provingRequests);
138
+ returnValues.push(enqueuedCallResult.returnValues);
139
+ gasUsed = gasUsed.add(enqueuedCallResult.gasUsed);
140
+ revertReason ?? (revertReason = enqueuedCallResult.revertReason);
141
+ if (revertReason) {
142
+ // TODO(#6464): Should we allow emitting contracts in the private setup phase?
143
+ // if so, this is removing contracts deployed in private setup
144
+ await this.worldStateDB.removeNewContracts(tx);
145
+ await this.worldStateDB.rollbackToCheckpoint();
146
+ tx.filterRevertedLogs(publicKernelOutput);
147
+ }
148
+ else {
149
+ // TODO(#6470): we should be adding contracts deployed in those logs to the publicContractsDB
150
+ tx.unencryptedLogs.addFunctionLogs([enqueuedCallResult.newUnencryptedLogs]);
151
+ }
152
+ const { output, provingRequest } = await this.runMergeKernelCircuit(publicKernelOutput, enqueuedCallResult.kernelOutput, isFromPrivate);
153
+ publicKernelOutput = output;
154
+ isFromPrivate = false;
155
+ provingRequests.push(provingRequest);
156
+ }
157
+ if (phase === PublicKernelPhase.SETUP) {
158
+ await this.worldStateDB.checkpoint();
159
+ }
160
+ return {
161
+ publicKernelOutput,
162
+ provingRequests,
163
+ durationMs: phaseTimer.ms(),
164
+ gasUsed,
165
+ returnValues: revertReason ? [] : returnValues,
166
+ revertReason,
167
+ };
168
+ }
169
+ getAvailableGas(tx, previousPublicKernelOutput, phase) {
170
+ if (phase === PublicKernelPhase.TEARDOWN) {
171
+ return tx.data.constants.txContext.gasSettings.getTeardownLimits();
172
+ }
173
+ else {
174
+ return tx.data.constants.txContext.gasSettings
175
+ .getLimits() // No need to subtract teardown limits since they are already included in end.gasUsed
176
+ .sub(previousPublicKernelOutput.end.gasUsed)
177
+ .sub(previousPublicKernelOutput.endNonRevertibleData.gasUsed);
178
+ }
179
+ }
180
+ getTransactionFee(tx, previousPublicKernelOutput, phase) {
181
+ if (phase !== PublicKernelPhase.TEARDOWN) {
182
+ return Fr.ZERO;
183
+ }
184
+ else {
185
+ const gasSettings = tx.data.constants.txContext.gasSettings;
186
+ const gasFees = this.globalVariables.gasFees;
187
+ // No need to add teardown limits since they are already included in end.gasUsed
188
+ const gasUsed = previousPublicKernelOutput.end.gasUsed.add(previousPublicKernelOutput.endNonRevertibleData.gasUsed);
189
+ const txFee = gasSettings.inclusionFee.add(gasUsed.computeFee(gasFees));
190
+ this.log.debug(`Computed tx fee`, { txFee, gasUsed: inspect(gasUsed), gasFees: inspect(gasFees) });
191
+ return txFee;
192
+ }
193
+ }
194
+ async runMergeKernelCircuit(previousOutput, enqueuedCallData, isFromPrivate) {
195
+ const previousKernel = this.getPreviousKernelData(previousOutput, isFromPrivate);
196
+ // The proof is not used in simulation.
197
+ const vmProof = makeEmptyProof();
198
+ const callData = new EnqueuedCallData(enqueuedCallData, vmProof);
199
+ const inputs = new PublicKernelCircuitPrivateInputs(previousKernel, callData);
200
+ const output = await this.publicKernelSimulator.publicKernelCircuitMerge(inputs);
201
+ const provingRequest = {
202
+ type: ProvingRequestType.PUBLIC_KERNEL_MERGE,
203
+ inputs,
204
+ };
205
+ return { output, provingRequest };
206
+ }
207
+ getPreviousKernelData(previousOutput, isFromPrivate) {
208
+ // The proof is not used in simulation.
209
+ const proof = makeEmptyRecursiveProof(NESTED_RECURSIVE_PROOF_LENGTH);
210
+ const vk = isFromPrivate
211
+ ? ProtocolCircuitVks.PrivateKernelTailToPublicArtifact
212
+ : ProtocolCircuitVks.PublicKernelMergeArtifact;
213
+ const vkIndex = getVKIndex(vk);
214
+ const siblingPath = getVKSiblingPath(vkIndex);
215
+ return new PublicKernelData(previousOutput, proof, vk, vkIndex, siblingPath);
216
+ }
217
+ }
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5xdWV1ZWRfY2FsbHNfcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy9lbnF1ZXVlZF9jYWxsc19wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLGtCQUFrQixFQUdsQixpQkFBaUIsR0FJbEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLEVBQUUsRUFDRixHQUFHLEVBSUgsNkJBQTZCLEVBRTdCLGdDQUFnQyxFQUVoQyxnQkFBZ0IsRUFFaEIsY0FBYyxFQUNkLHVCQUF1QixHQUN4QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXZHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJckUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUUsTUFBTSxpQkFBaUIsR0FBdUM7SUFDNUQsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLO0lBQ2hDLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSTtJQUNuQyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUk7Q0FDbkMsQ0FBQztBQXFDRixNQUFNLE9BQU8sc0JBQXNCO0lBR2pDLFlBQ1UscUJBQW1ELEVBQ25ELGVBQWdDLEVBQ2hDLFlBQTBCLEVBQzFCLHFCQUE0QyxFQUM1Qyx5QkFBb0Q7UUFKcEQsMEJBQXFCLEdBQXJCLHFCQUFx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
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
2
  import { 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, PublicCallRequest, type ReadRequest, type TreeLeafReadRequest } from '@aztec/circuits.js';
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
4
  import { type Gas as AvmGas } from '../avm/avm_gas.js';
5
5
  /**
6
6
  * The public function execution result.
@@ -62,7 +62,7 @@ export interface PublicExecutionResult {
62
62
  */
63
63
  allUnencryptedLogs: UnencryptedFunctionL2Logs;
64
64
  /** The requests to call public functions made by this call. */
65
- publicCallRequests: PublicCallRequest[];
65
+ publicCallRequests: PublicInnerCallRequest[];
66
66
  /** The results of nested calls. */
67
67
  nestedExecutions: this[];
68
68
  /** Hints for proving AVM execution. */
@@ -70,16 +70,11 @@ export interface PublicExecutionResult {
70
70
  /** The name of the function that was executed. Only used for logging. */
71
71
  functionName: string;
72
72
  }
73
- /**
74
- * Returns if the input is a public execution result and not just a public execution.
75
- * @param input - Public execution or public execution result.
76
- * @returns Whether the input is a public execution result and not just a public execution.
77
- */
78
- export declare function isPublicExecutionResult(input: PublicExecutionRequest | PublicExecutionResult): input is PublicExecutionResult;
73
+ export declare function collectExecutionResults(result: PublicExecutionResult): PublicExecutionResult[];
79
74
  /**
80
75
  * Checks whether the child execution result is valid for a static call (no state modifications).
81
76
  * @param executionResult - The execution result of a public function
82
77
  */
83
78
  export declare function checkValidStaticCall(noteHashes: NoteHash[], nullifiers: Nullifier[], contractStorageUpdateRequests: ContractStorageUpdateRequest[], l2ToL1Messages: L2ToL1Message[], unencryptedLogs: UnencryptedFunctionL2Logs): void;
84
- export declare function resultToPublicCallRequest(result: PublicExecutionResult): PublicCallRequest;
79
+ export declare function resultToPublicCallRequest(result: PublicExecutionResult): PublicInnerCallRequest;
85
80
  //# sourceMappingURL=execution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/public/execution.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,KAAK,EAAE,EAEP,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,iBAAiB,EAEjB,KAAK,WAAW,EAEhB,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,KAAK,GAAG,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,gBAAgB,EAAE,sBAAsB,CAAC;IAEzC,iEAAiE;IACjE,sBAAsB,EAAE,EAAE,CAAC;IAC3B,iEAAiE;IACjE,oBAAoB,EAAE,EAAE,CAAC;IACzB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,cAAc,EAAE,EAAE,CAAC;IAEnB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,QAAQ,EAAE,EAAE,EAAE,CAAC;IACf,yCAAyC;IACzC,YAAY,EAAE,EAAE,EAAE,CAAC;IACnB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,YAAY,CAAC,EAAE,eAAe,CAAC;IAE/B,4DAA4D;IAC5D,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,sEAAsE;IACtE,6BAA6B,EAAE,4BAA4B,EAAE,CAAC;IAC9D,oEAAoE;IACpE,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,wDAAwD;IACxD,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,iEAAiE;IACjE,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,wDAAwD;IACxD,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,wDAAwD;IACxD,qBAAqB,EAAE,WAAW,EAAE,CAAC;IACrC,qEAAqE;IACrE,gCAAgC,EAAE,WAAW,EAAE,CAAC;IAChD,2DAA2D;IAC3D,qBAAqB,EAAE,mBAAmB,EAAE,CAAC;IAC7C;;;OAGG;IACH,qBAAqB,EAAE,OAAO,EAAE,CAAC;IACjC;;;OAGG;IACH,eAAe,EAAE,yBAAyB,CAAC;IAC3C;;;OAGG;IACH,kBAAkB,EAAE,yBAAyB,CAAC;IAI9C,+DAA+D;IAC/D,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,mCAAmC;IACnC,gBAAgB,EAAE,IAAI,EAAE,CAAC;IAEzB,uCAAuC;IACvC,eAAe,EAAE,iBAAiB,CAAC;IAEnC,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,sBAAsB,GAAG,qBAAqB,GACpD,KAAK,IAAI,qBAAqB,CAEhC;AAED;;;GAGG;AAEH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,QAAQ,EAAE,EACtB,UAAU,EAAE,SAAS,EAAE,EACvB,6BAA6B,EAAE,4BAA4B,EAAE,EAC7D,cAAc,EAAE,aAAa,EAAE,EAC/B,eAAe,EAAE,yBAAyB,QAW3C;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,qBAAqB,qBAatE"}
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/public/execution.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,KAAK,EAAE,EAEP,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,sBAAsB,EACtB,KAAK,WAAW,EAEhB,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,KAAK,GAAG,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,gBAAgB,EAAE,sBAAsB,CAAC;IAEzC,iEAAiE;IACjE,sBAAsB,EAAE,EAAE,CAAC;IAC3B,iEAAiE;IACjE,oBAAoB,EAAE,EAAE,CAAC;IACzB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,cAAc,EAAE,EAAE,CAAC;IAEnB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,QAAQ,EAAE,EAAE,EAAE,CAAC;IACf,yCAAyC;IACzC,YAAY,EAAE,EAAE,EAAE,CAAC;IACnB,sCAAsC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,YAAY,CAAC,EAAE,eAAe,CAAC;IAE/B,4DAA4D;IAC5D,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,sEAAsE;IACtE,6BAA6B,EAAE,4BAA4B,EAAE,CAAC;IAC9D,oEAAoE;IACpE,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,wDAAwD;IACxD,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,iEAAiE;IACjE,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,wDAAwD;IACxD,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,wDAAwD;IACxD,qBAAqB,EAAE,WAAW,EAAE,CAAC;IACrC,qEAAqE;IACrE,gCAAgC,EAAE,WAAW,EAAE,CAAC;IAChD,2DAA2D;IAC3D,qBAAqB,EAAE,mBAAmB,EAAE,CAAC;IAC7C;;;OAGG;IACH,qBAAqB,EAAE,OAAO,EAAE,CAAC;IACjC;;;OAGG;IACH,eAAe,EAAE,yBAAyB,CAAC;IAC3C;;;OAGG;IACH,kBAAkB,EAAE,yBAAyB,CAAC;IAI9C,+DAA+D;IAC/D,kBAAkB,EAAE,sBAAsB,EAAE,CAAC;IAC7C,mCAAmC;IACnC,gBAAgB,EAAE,IAAI,EAAE,CAAC;IAEzB,uCAAuC;IACvC,eAAe,EAAE,iBAAiB,CAAC;IAEnC,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,GAAG,qBAAqB,EAAE,CAE9F;AAED;;;GAGG;AAEH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,QAAQ,EAAE,EACtB,UAAU,EAAE,SAAS,EAAE,EACvB,6BAA6B,EAAE,4BAA4B,EAAE,EAC7D,cAAc,EAAE,aAAa,EAAE,EAC/B,eAAe,EAAE,yBAAyB,QAW3C;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,qBAAqB,0BAatE"}
@@ -1,12 +1,7 @@
1
- import { Gas, PublicCallRequest, PublicCallStackItemCompressed, RevertCode, } from '@aztec/circuits.js';
1
+ import { Gas, PublicCallStackItemCompressed, PublicInnerCallRequest, RevertCode, } from '@aztec/circuits.js';
2
2
  import { computeVarArgsHash } from '@aztec/circuits.js/hash';
3
- /**
4
- * Returns if the input is a public execution result and not just a public execution.
5
- * @param input - Public execution or public execution result.
6
- * @returns Whether the input is a public execution result and not just a public execution.
7
- */
8
- export function isPublicExecutionResult(input) {
9
- return 'executionRequest' in input && input.executionRequest !== undefined;
3
+ export function collectExecutionResults(result) {
4
+ return [result, ...result.nestedExecutions.map(collectExecutionResults)].flat();
10
5
  }
11
6
  /**
12
7
  * Checks whether the child execution result is valid for a static call (no state modifications).
@@ -26,6 +21,6 @@ export function resultToPublicCallRequest(result) {
26
21
  const item = new PublicCallStackItemCompressed(request.contractAddress, request.callContext, computeVarArgsHash(request.args), computeVarArgsHash(result.returnValues),
27
22
  // TODO(@just-mitch): need better mapping from simulator to revert code.
28
23
  result.reverted ? RevertCode.APP_LOGIC_REVERTED : RevertCode.OK, Gas.from(result.startGasLeft), Gas.from(result.endGasLeft));
29
- return new PublicCallRequest(item, result.startSideEffectCounter.toNumber());
24
+ return new PublicInnerCallRequest(item, result.startSideEffectCounter.toNumber());
30
25
  }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy9leGVjdXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUtMLEdBQUcsRUFLSCxpQkFBaUIsRUFDakIsNkJBQTZCLEVBRTdCLFVBQVUsR0FFWCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBaUY3RDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxLQUFxRDtJQUVyRCxPQUFPLGtCQUFrQixJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxDQUFDO0FBQzdFLENBQUM7QUFFRDs7O0dBR0c7QUFFSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLFVBQXNCLEVBQ3RCLFVBQXVCLEVBQ3ZCLDZCQUE2RCxFQUM3RCxjQUErQixFQUMvQixlQUEwQztJQUUxQyxJQUNFLDZCQUE2QixDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQ3hDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUNyQixVQUFVLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDckIsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQ3pCLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDL0IsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsNEVBQTRFLENBQUMsQ0FBQztJQUNoRyxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxNQUE2QjtJQUNyRSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7SUFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSw2QkFBNkIsQ0FDNUMsT0FBTyxDQUFDLGVBQWUsRUFDdkIsT0FBTyxDQUFDLFdBQVcsRUFDbkIsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUNoQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO0lBQ3ZDLHdFQUF3RTtJQUN4RSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQy9ELEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUM3QixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FDNUIsQ0FBQztJQUNGLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDL0UsQ0FBQyJ9
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy9leGVjdXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUtMLEdBQUcsRUFLSCw2QkFBNkIsRUFDN0Isc0JBQXNCLEVBRXRCLFVBQVUsR0FFWCxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBaUY3RCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsTUFBNkI7SUFDbkUsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2xGLENBQUM7QUFFRDs7O0dBR0c7QUFFSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLFVBQXNCLEVBQ3RCLFVBQXVCLEVBQ3ZCLDZCQUE2RCxFQUM3RCxjQUErQixFQUMvQixlQUEwQztJQUUxQyxJQUNFLDZCQUE2QixDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQ3hDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUNyQixVQUFVLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDckIsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQ3pCLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDL0IsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsNEVBQTRFLENBQUMsQ0FBQztJQUNoRyxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxNQUE2QjtJQUNyRSxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7SUFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSw2QkFBNkIsQ0FDNUMsT0FBTyxDQUFDLGVBQWUsRUFDdkIsT0FBTyxDQUFDLFdBQVcsRUFDbkIsa0JBQWtCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUNoQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO0lBQ3ZDLHdFQUF3RTtJQUN4RSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQy9ELEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUM3QixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FDNUIsQ0FBQztJQUNGLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFDcEYsQ0FBQyJ9
@@ -1,19 +1,17 @@
1
1
  import { type PublicExecutionRequest } from '@aztec/circuit-types';
2
2
  import { Fr, Gas, type GlobalVariables, type Header, type Nullifier, type TxContext } from '@aztec/circuits.js';
3
3
  import { type TelemetryClient } from '@aztec/telemetry-client';
4
- import { type CommitmentsDB, type PublicContractsDB, type PublicStateDB } from './db_interfaces.js';
5
4
  import { type PublicExecutionResult } from './execution.js';
6
5
  import { ExecutorMetrics } from './executor_metrics.js';
6
+ import { type WorldStateDB } from './public_db_sources.js';
7
7
  /**
8
8
  * Handles execution of public functions.
9
9
  */
10
10
  export declare class PublicExecutor {
11
- private readonly publicStorageDB;
12
- private readonly contractsDb;
13
- private readonly commitmentsDb;
11
+ private readonly worldStateDB;
14
12
  private readonly header;
15
13
  metrics: ExecutorMetrics;
16
- constructor(publicStorageDB: PublicStateDB, contractsDb: PublicContractsDB, commitmentsDb: CommitmentsDB, header: Header, client: TelemetryClient);
14
+ constructor(worldStateDB: WorldStateDB, header: Header, client: TelemetryClient);
17
15
  static readonly log: import("@aztec/foundation/log").Logger;
18
16
  /**
19
17
  * Executes a public execution request.
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/public/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGhH,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAQ/D,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD;;GAEG;AACH,qBAAa,cAAc;IAIvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,EAAE,eAAe,CAAC;gBAGN,eAAe,EAAE,aAAa,EAC9B,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EAC/B,MAAM,EAAE,eAAe;IAKzB,MAAM,CAAC,QAAQ,CAAC,GAAG,yCAAwD;IAE3E;;;;;;;;;;OAUG;IACU,QAAQ,CACnB,gBAAgB,EAAE,sBAAsB,EACxC,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,GAAG,EACjB,UAAU,EAAE,SAAS,EACrB,uBAAuB,EAAE,SAAS,EAAE,EACpC,cAAc,GAAE,EAAY,EAC5B,sBAAsB,GAAE,MAAU,GACjC,OAAO,CAAC,qBAAqB,CAAC;CAgElC"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/public/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGhH,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAO/D,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D;;GAEG;AACH,qBAAa,cAAc;IAGb,OAAO,CAAC,QAAQ,CAAC,YAAY;IAAgB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFhF,OAAO,EAAE,eAAe,CAAC;gBAEI,YAAY,EAAE,YAAY,EAAmB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe;IAIjH,MAAM,CAAC,QAAQ,CAAC,GAAG,yCAAwD;IAE3E;;;;;;;;;;OAUG;IACU,QAAQ,CACnB,gBAAgB,EAAE,sBAAsB,EACxC,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,GAAG,EACjB,UAAU,EAAE,SAAS,EACrB,uBAAuB,EAAE,SAAS,EAAE,EACpC,cAAc,GAAE,EAAY,EAC5B,sBAAsB,GAAE,MAAU,GACjC,OAAO,CAAC,qBAAqB,CAAC;CA+DlC"}
@@ -5,7 +5,6 @@ import { AvmContext } from '../avm/avm_context.js';
5
5
  import { AvmExecutionEnvironment } from '../avm/avm_execution_environment.js';
6
6
  import { AvmMachineState } from '../avm/avm_machine_state.js';
7
7
  import { AvmSimulator } from '../avm/avm_simulator.js';
8
- import { HostStorage } from '../avm/journal/host_storage.js';
9
8
  import { AvmPersistableStateManager } from '../avm/journal/index.js';
10
9
  import { ExecutorMetrics } from './executor_metrics.js';
11
10
  import { PublicSideEffectTrace } from './side_effect_trace.js';
@@ -13,10 +12,8 @@ import { PublicSideEffectTrace } from './side_effect_trace.js';
13
12
  * Handles execution of public functions.
14
13
  */
15
14
  export class PublicExecutor {
16
- constructor(publicStorageDB, contractsDb, commitmentsDb, header, client) {
17
- this.publicStorageDB = publicStorageDB;
18
- this.contractsDb = contractsDb;
19
- this.commitmentsDb = commitmentsDb;
15
+ constructor(worldStateDB, header, client) {
16
+ this.worldStateDB = worldStateDB;
20
17
  this.header = header;
21
18
  this.metrics = new ExecutorMetrics(client, 'PublicExecutor');
22
19
  }
@@ -34,12 +31,11 @@ export class PublicExecutor {
34
31
  async simulate(executionRequest, globalVariables, availableGas, _txContext, pendingSiloedNullifiers, transactionFee = Fr.ZERO, startSideEffectCounter = 0) {
35
32
  const address = executionRequest.contractAddress;
36
33
  const selector = executionRequest.callContext.functionSelector;
37
- const fnName = (await this.contractsDb.getDebugFunctionName(address, selector)) ?? `${address}:${selector}`;
34
+ const fnName = (await this.worldStateDB.getDebugFunctionName(address, selector)) ?? `${address}:${selector}`;
38
35
  PublicExecutor.log.verbose(`[AVM] Executing public external function ${fnName}.`);
39
36
  const timer = new Timer();
40
- const hostStorage = new HostStorage(this.publicStorageDB, this.contractsDb, this.commitmentsDb);
41
37
  const trace = new PublicSideEffectTrace(startSideEffectCounter);
42
- const avmPersistableState = AvmPersistableStateManager.newWithPendingSiloedNullifiers(hostStorage, trace, pendingSiloedNullifiers.map(n => n.value));
38
+ const avmPersistableState = AvmPersistableStateManager.newWithPendingSiloedNullifiers(this.worldStateDB, trace, pendingSiloedNullifiers.map(n => n.value));
43
39
  const avmExecutionEnv = createAvmExecutionEnvironment(executionRequest, this.header, globalVariables, transactionFee);
44
40
  const avmMachineState = new AvmMachineState(availableGas);
45
41
  const avmContext = new AvmContext(avmPersistableState, avmExecutionEnv, avmMachineState);
@@ -81,4 +77,4 @@ function createAvmExecutionEnvironment(executionRequest, header, globalVariables
81
77
  return new AvmExecutionEnvironment(executionRequest.contractAddress, executionRequest.callContext.storageContractAddress, executionRequest.callContext.msgSender, executionRequest.callContext.functionSelector,
82
78
  /*contractCallDepth=*/ Fr.zero(), transactionFee, header, globalVariables, executionRequest.callContext.isStaticCall, executionRequest.callContext.isDelegateCall, executionRequest.args);
83
79
  }
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL2V4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFxRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHckUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRS9EOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFHekIsWUFDbUIsZUFBOEIsRUFDOUIsV0FBOEIsRUFDOUIsYUFBNEIsRUFDNUIsTUFBYyxFQUMvQixNQUF1QjtRQUpOLG9CQUFlLEdBQWYsZUFBZSxDQUFlO1FBQzlCLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRy9CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUlEOzs7Ozs7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
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL2V4ZWN1dG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFxRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUdoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFeEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFL0Q7O0dBRUc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUE2QixZQUEwQixFQUFtQixNQUFjLEVBQUUsTUFBdUI7UUFBcEYsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBbUIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUN0RixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFJRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FDbkIsZ0JBQXdDLEVBQ3hDLGVBQWdDLEVBQ2hDLFlBQWlCLEVBQ2pCLFVBQXFCLEVBQ3JCLHVCQUFvQyxFQUNwQyxpQkFBcUIsRUFBRSxDQUFDLElBQUksRUFD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
@@ -1,5 +1,6 @@
1
- import { type Fr, MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, type MAX_NULLIFIERS_PER_TX, type MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, type MAX_PUBLIC_DATA_READS_PER_TX, type MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MembershipWitness, type Nullifier, type PublicDataRead, type PublicDataTreeLeafPreimage, type PublicDataUpdateRequest, type ScopedReadRequest, type TreeLeafReadRequest, TreeLeafReadRequestHint } from '@aztec/circuits.js';
1
+ import { type Fr, MAX_L1_TO_L2_MSG_READ_REQUESTS_PER_TX, MAX_NOTE_HASH_READ_REQUESTS_PER_TX, type MAX_NULLIFIERS_PER_TX, type MAX_NULLIFIER_NON_EXISTENT_READ_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, type MAX_PUBLIC_DATA_READS_PER_TX, type MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MembershipWitness, type Nullifier, type NullifierLeafPreimage, type PublicDataRead, type PublicDataTreeLeafPreimage, type PublicDataUpdateRequest, type ScopedReadRequest, type TreeLeafReadRequest, TreeLeafReadRequestHint } from '@aztec/circuits.js';
2
2
  import { type Tuple } from '@aztec/foundation/serialize';
3
+ import { type IndexedTreeLeafPreimage } from '@aztec/foundation/trees';
3
4
  import { type MerkleTreeOperations } from '@aztec/world-state';
4
5
  export declare class HintsBuilder {
5
6
  private db;
@@ -12,11 +13,11 @@ export declare class HintsBuilder {
12
13
  getPublicDataHint(dataAction: PublicDataRead | PublicDataUpdateRequest | bigint): Promise<import("@aztec/circuits.js").PublicDataHint>;
13
14
  getNullifierMembershipWitness(nullifier: Fr): Promise<{
14
15
  membershipWitness: MembershipWitness<20>;
15
- leafPreimage: import("@aztec/foundation/trees").IndexedTreeLeafPreimage;
16
+ leafPreimage: IndexedTreeLeafPreimage;
16
17
  }>;
17
18
  getLowNullifierMembershipWitness(nullifier: Fr): Promise<{
18
19
  membershipWitness: MembershipWitness<20>;
19
- leafPreimage: import("@aztec/foundation/trees").IndexedTreeLeafPreimage;
20
+ leafPreimage: NullifierLeafPreimage;
20
21
  }>;
21
22
  getMatchOrLowPublicDataMembershipWitness(leafSlot: bigint): Promise<{
22
23
  membershipWitness: MembershipWitness<40>;
@@ -1 +1 @@
1
- {"version":3,"file":"hints_builder.d.ts","sourceRoot":"","sources":["../../src/public/hints_builder.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EAAE,EAEP,qCAAqC,EACrC,kCAAkC,EAClC,KAAK,qBAAqB,EAC1B,KAAK,+CAA+C,EACpD,kCAAkC,EAClC,KAAK,4BAA4B,EACjC,KAAK,sCAAsC,EAC3C,iBAAiB,EAGjB,KAAK,SAAS,EAEd,KAAK,cAAc,EACnB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,uBAAuB,EAKxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,qBAAa,YAAY;IACX,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,oBAAoB;IAEtC,4BAA4B,CAChC,YAAY,EAAE,KAAK,CAAC,mBAAmB,EAAE,OAAO,kCAAkC,CAAC;IAU/E,4BAA4B,CAChC,qBAAqB,EAAE,KAAK,CAAC,iBAAiB,EAAE,OAAO,kCAAkC,CAAC,EAC1F,iBAAiB,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,qBAAqB,CAAC;IAanE,uCAAuC,CACrC,gCAAgC,EAAE,KAAK,CAAC,iBAAiB,EAAE,OAAO,+CAA+C,CAAC,EAClH,iBAAiB,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,qBAAqB,CAAC;IAK7D,6BAA6B,CACjC,YAAY,EAAE,KAAK,CAAC,mBAAmB,EAAE,OAAO,qCAAqC,CAAC;IAUxF,kBAAkB,CAChB,eAAe,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,4BAA4B,CAAC,EAC3E,wBAAwB,EAAE,KAAK,CAAC,uBAAuB,EAAE,OAAO,sCAAsC,CAAC;IAKzG,iBAAiB,CAAC,UAAU,EAAE,cAAc,GAAG,uBAAuB,GAAG,MAAM;IAKzE,6BAA6B,CAAC,SAAS,EAAE,EAAE;;;;IAa3C,gCAAgC,CAAC,SAAS,EAAE,EAAE;;;;IAkB9C,wCAAwC,CAAC,QAAQ,EAAE,MAAM;;;;YAcjD,gCAAgC;YAgBhC,4BAA4B;CAgB3C"}
1
+ {"version":3,"file":"hints_builder.d.ts","sourceRoot":"","sources":["../../src/public/hints_builder.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EAAE,EAEP,qCAAqC,EACrC,kCAAkC,EAClC,KAAK,qBAAqB,EAC1B,KAAK,+CAA+C,EACpD,kCAAkC,EAClC,KAAK,4BAA4B,EACjC,KAAK,sCAAsC,EAC3C,iBAAiB,EAGjB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAE1B,KAAK,cAAc,EACnB,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,uBAAuB,EAKxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,qBAAa,YAAY;IACX,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,oBAAoB;IAEtC,4BAA4B,CAChC,YAAY,EAAE,KAAK,CAAC,mBAAmB,EAAE,OAAO,kCAAkC,CAAC;IAU/E,4BAA4B,CAChC,qBAAqB,EAAE,KAAK,CAAC,iBAAiB,EAAE,OAAO,kCAAkC,CAAC,EAC1F,iBAAiB,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,qBAAqB,CAAC;IAanE,uCAAuC,CACrC,gCAAgC,EAAE,KAAK,CAAC,iBAAiB,EAAE,OAAO,+CAA+C,CAAC,EAClH,iBAAiB,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,qBAAqB,CAAC;IAK7D,6BAA6B,CACjC,YAAY,EAAE,KAAK,CAAC,mBAAmB,EAAE,OAAO,qCAAqC,CAAC;IAUxF,kBAAkB,CAChB,eAAe,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,4BAA4B,CAAC,EAC3E,wBAAwB,EAAE,KAAK,CAAC,uBAAuB,EAAE,OAAO,sCAAsC,CAAC;IAKzG,iBAAiB,CAAC,UAAU,EAAE,cAAc,GAAG,uBAAuB,GAAG,MAAM;IAKzE,6BAA6B,CAAC,SAAS,EAAE,EAAE;;;;IAa3C,gCAAgC,CAAC,SAAS,EAAE,EAAE;;;;IAmB9C,wCAAwC,CAAC,QAAQ,EAAE,MAAM;;;;YAcjD,gCAAgC;YAehC,4BAA4B;CAgB3C"}
@@ -40,6 +40,7 @@ export class HintsBuilder {
40
40
  if (alreadyPresent) {
41
41
  throw new Error(`Nullifier ${nullifier.toBigInt()} already exists in the tree.`);
42
42
  }
43
+ // Should find a way to stop casting IndexedTreeLeafPreimage as NullifierLeafPreimage
43
44
  return this.getMembershipWitnessWithPreimage(MerkleTreeId.NULLIFIER_TREE, NULLIFIER_TREE_HEIGHT, index);
44
45
  }
45
46
  async getMatchOrLowPublicDataMembershipWitness(leafSlot) {
@@ -47,14 +48,13 @@ export class HintsBuilder {
47
48
  if (!res) {
48
49
  throw new Error(`Cannot find the previous value index for public data ${leafSlot}.`);
49
50
  }
50
- const { membershipWitness, leafPreimage } = await this.getMembershipWitnessWithPreimage(MerkleTreeId.PUBLIC_DATA_TREE, PUBLIC_DATA_TREE_HEIGHT, res.index);
51
51
  // Should find a way to stop casting IndexedTreeLeafPreimage as PublicDataTreeLeafPreimage everywhere.
52
- return { membershipWitness, leafPreimage: leafPreimage };
52
+ return this.getMembershipWitnessWithPreimage(MerkleTreeId.PUBLIC_DATA_TREE, PUBLIC_DATA_TREE_HEIGHT, res.index);
53
53
  }
54
54
  async getMembershipWitnessWithPreimage(treeId, treeHeight, index) {
55
55
  const siblingPath = await this.db.getSiblingPath(treeId, index);
56
56
  const membershipWitness = new MembershipWitness(treeHeight, index, siblingPath.toTuple());
57
- const leafPreimage = await this.db.getLeafPreimage(treeId, index);
57
+ const leafPreimage = (await this.db.getLeafPreimage(treeId, index));
58
58
  if (!leafPreimage) {
59
59
  throw new Error(`Cannot find the leaf preimage for tree ${treeId} at index ${index}.`);
60
60
  }
@@ -72,4 +72,4 @@ export class HintsBuilder {
72
72
  return hints;
73
73
  }
74
74
  }
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludHNfYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvaGludHNfYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hFLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIscUNBQXFDLEVBQ3JDLGtDQUFrQyxFQUdsQyxrQ0FBa0MsRUFHbEMsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixxQkFBcUIsRUFFckIsdUJBQXVCLEVBTXZCLHVCQUF1QixFQUN2Qix5Q0FBeUMsRUFDekMsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixvQ0FBb0MsR0FDckMsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJcEQsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBb0IsRUFBd0I7UUFBeEIsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7SUFBRyxDQUFDO0lBRWhELEtBQUssQ0FBQyw0QkFBNEIsQ0FDaEMsWUFBbUY7UUFFbkYsT0FBTyxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FDNUMsWUFBWSxFQUNaLGtDQUFrQyxFQUNsQyxxQkFBcUIsRUFDckIsWUFBWSxDQUFDLGNBQWMsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsNEJBQTRCLENBQ2hDLHFCQUEwRixFQUMxRixpQkFBaUU7UUFFakUsT0FBTyxDQUNMLE1BQU0sb0NBQW9DLENBQ3hDLElBQUksRUFDSixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLGtDQUFrQyxFQUNsQyxrQ0FBa0MsQ0FDbkMsQ0FDRixDQUFDLEtBQUssQ0FBQztJQUNWLENBQUM7SUFFRCx1Q0FBdUMsQ0FDckMsZ0NBQWtILEVBQ2xILGlCQUFpRTtRQUVqRSxPQUFPLHlDQUF5QyxDQUFDLElBQUksRUFBRSxnQ0FBZ0MsRUFBRSxpQkFBaUIs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
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludHNfYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvaGludHNfYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hFLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIscUNBQXFDLEVBQ3JDLGtDQUFrQyxFQUdsQyxrQ0FBa0MsRUFHbEMsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixxQkFBcUIsRUFHckIsdUJBQXVCLEVBTXZCLHVCQUF1QixFQUN2Qix5Q0FBeUMsRUFDekMsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixvQ0FBb0MsR0FDckMsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFLcEQsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBb0IsRUFBd0I7UUFBeEIsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7SUFBRyxDQUFDO0lBRWhELEtBQUssQ0FBQyw0QkFBNEIsQ0FDaEMsWUFBbUY7UUFFbkYsT0FBTyxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FDNUMsWUFBWSxFQUNaLGtDQUFrQyxFQUNsQyxxQkFBcUIsRUFDckIsWUFBWSxDQUFDLGNBQWMsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsNEJBQTRCLENBQ2hDLHFCQUEwRixFQUMxRixpQkFBaUU7UUFFakUsT0FBTyxDQUNMLE1BQU0sb0NBQW9DLENBQ3hDLElBQUksRUFDSixxQkFBcUIsRUFDckIsaUJBQWlCLEVBQ2pCLGtDQUFrQyxFQUNsQyxrQ0FBa0MsQ0FDbkMsQ0FDRixDQUFDLEtBQUssQ0FBQztJQUNWLENBQUM7SUFFRCx1Q0FBdUMsQ0FDckMsZ0NBQWtILEVBQ2xILGlCQUFpRTtRQUVqRSxPQUFPLHlDQUF5QyxDQUFDLElBQUksRUFBRSxnQ0FBZ0MsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlHLENBQUM7SUFFRCxLQUFLLENBQUMsNkJBQTZCLENBQ2pDLFlBQXNGO1FBRXRGLE9BQU8sTUFBTSxJQUFJLENBQUMsNEJBQTRCLENBQzVDLFlBQVksRUFDWixxQ0FBcUMsRUFDckMsd0JBQXdCLEVBQ3hCLFlBQVksQ0FBQyxxQkFBcUIsQ0FDbkMsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0IsQ0FDaEIsZUFBMkUsRUFDM0Usd0JBQXVHO1FBRXZHLE9BQU8sb0JBQW9CLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxVQUE2RDtRQUM3RSxNQUFNLElBQUksR0FBRyxPQUFPLFVBQVUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxRixPQUFPLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLDZCQUE2QixDQUFDLFNBQWE7UUFDL0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdGLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakYsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGdDQUFnQyxDQUMxQyxZQUFZLENBQUMsY0FBYyxFQUMzQixxQkFBcUIsRUFDckIsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLFNBQWE7UUFDbEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbkcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsU0FBUyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNyRixDQUFDO1FBRUQsTUFBTSxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDdEMsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsU0FBUyxDQUFDLFFBQVEsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFFRCxxRkFBcUY7UUFDckYsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLENBQzFDLFlBQVksQ0FBQyxjQUFjLEVBQzNCLHFCQUFxQixFQUNyQixLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsd0NBQXdDLENBQUMsUUFBZ0I7UUFDN0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN6RixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7UUFFRCxzR0FBc0c7UUFDdEcsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLENBQzFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFDN0IsdUJBQXVCLEVBQ3ZCLEdBQUcsQ0FBQyxLQUFLLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQUMsZ0NBQWdDLENBRzVDLE1BQXFCLEVBQUUsVUFBdUIsRUFBRSxLQUFhO1FBQzdELE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQWMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdFLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRTFGLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQWtCLENBQUM7UUFDckYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLE1BQU0sYUFBYSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ3pGLENBQUM7UUFFRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVPLEtBQUssQ0FBQyw0QkFBNEIsQ0FDeEMsWUFBMkMsRUFDM0MsSUFBTyxFQUNQLFVBQXVCLEVBQ3ZCLE1BQW9CO1FBRXBCLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDL0UsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUM3QyxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUN2QixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFvQixNQUFNLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDNUUsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiJ9
@@ -1,6 +1,6 @@
1
- export * from './abstract_phase_manager.js';
2
1
  export * from './db_interfaces.js';
3
- export { isPublicExecutionResult, type PublicExecutionResult } from './execution.js';
2
+ export * from './enqueued_calls_processor.js';
3
+ export { type PublicExecutionResult } from './execution.js';
4
4
  export { PublicExecutor } from './executor.js';
5
5
  export * from './fee_payment.js';
6
6
  export { HintsBuilder } from './hints_builder.js';
@@ -8,4 +8,5 @@ export * from './public_db_sources.js';
8
8
  export * from './public_kernel.js';
9
9
  export * from './public_kernel_circuit_simulator.js';
10
10
  export { PublicProcessor, PublicProcessorFactory } from './public_processor.js';
11
+ export { PublicSideEffectTrace } from './side_effect_trace.js';
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/public/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,uBAAuB,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/public/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sCAAsC,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,6 +1,5 @@
1
- export * from './abstract_phase_manager.js';
2
1
  export * from './db_interfaces.js';
3
- export { isPublicExecutionResult } from './execution.js';
2
+ export * from './enqueued_calls_processor.js';
4
3
  export { PublicExecutor } from './executor.js';
5
4
  export * from './fee_payment.js';
6
5
  export { HintsBuilder } from './hints_builder.js';
@@ -8,4 +7,5 @@ export * from './public_db_sources.js';
8
7
  export * from './public_kernel.js';
9
8
  export * from './public_kernel_circuit_simulator.js';
10
9
  export { PublicProcessor, PublicProcessorFactory } from './public_processor.js';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxPQUFPLEVBQUUsdUJBQXVCLEVBQThCLE1BQU0sZ0JBQWdCLENBQUM7QUFDckYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUMifQ==
10
+ export { PublicSideEffectTrace } from './side_effect_trace.js';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYywrQkFBK0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQyJ9
@@ -9,11 +9,11 @@ import { type MerkleTreeOperations } from '@aztec/world-state';
9
9
  * Progressively records contracts in transaction as they are processed in a block.
10
10
  */
11
11
  export declare class ContractsDataSourcePublicDB implements PublicContractsDB {
12
- private db;
12
+ private dataSource;
13
13
  private instanceCache;
14
14
  private classCache;
15
15
  private log;
16
- constructor(db: ContractDataSource);
16
+ constructor(dataSource: ContractDataSource);
17
17
  /**
18
18
  * Add new contracts from a transaction
19
19
  * @param tx - The transaction to add contracts from.
@@ -30,14 +30,15 @@ export declare class ContractsDataSourcePublicDB implements PublicContractsDB {
30
30
  getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
31
31
  }
32
32
  /**
33
- * Implements the PublicStateDB using a world-state database.
33
+ * A public state DB that reads and writes to the world state.
34
34
  */
35
- export declare class WorldStatePublicDB implements PublicStateDB {
35
+ export declare class WorldStateDB extends ContractsDataSourcePublicDB implements PublicStateDB, CommitmentsDB {
36
36
  private db;
37
- private committedWriteCache;
38
- private checkpointedWriteCache;
39
- private uncommittedWriteCache;
40
- constructor(db: MerkleTreeOperations);
37
+ private logger;
38
+ private publicCommittedWriteCache;
39
+ private publicCheckpointedWriteCache;
40
+ private publicUncommittedWriteCache;
41
+ constructor(db: MerkleTreeOperations, dataSource: ContractDataSource);
41
42
  /**
42
43
  * Reads a value from public storage, returning zero if none.
43
44
  * @param contract - Owner of the storage.
@@ -53,31 +54,23 @@ export declare class WorldStatePublicDB implements PublicStateDB {
53
54
  * @returns The slot of the written leaf in the public data tree.
54
55
  */
55
56
  storageWrite(contract: AztecAddress, slot: Fr, newValue: Fr): Promise<bigint>;
57
+ getNullifierMembershipWitnessAtLatestBlock(nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
58
+ getL1ToL2MembershipWitness(contractAddress: AztecAddress, messageHash: Fr, secret: Fr): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
59
+ getL1ToL2LeafValue(leafIndex: bigint): Promise<Fr | undefined>;
60
+ getCommitmentIndex(commitment: Fr): Promise<bigint | undefined>;
61
+ getCommitmentValue(leafIndex: bigint): Promise<Fr | undefined>;
62
+ getNullifierIndex(nullifier: Fr): Promise<bigint | undefined>;
56
63
  /**
57
- * Commit the pending changes to the DB.
64
+ * Commit the pending public changes to the DB.
58
65
  * @returns Nothing.
59
66
  */
60
67
  commit(): Promise<void>;
61
68
  /**
62
- * Rollback the pending changes.
69
+ * Rollback the pending public changes.
63
70
  * @returns Nothing.
64
71
  */
65
72
  rollbackToCommit(): Promise<void>;
66
73
  checkpoint(): Promise<void>;
67
74
  rollbackToCheckpoint(): Promise<void>;
68
75
  }
69
- /**
70
- * Implements WorldState db using a world state database.
71
- */
72
- export declare class WorldStateDB implements CommitmentsDB {
73
- private db;
74
- private log;
75
- constructor(db: MerkleTreeOperations);
76
- getNullifierMembershipWitnessAtLatestBlock(nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
77
- getL1ToL2MembershipWitness(contractAddress: AztecAddress, messageHash: Fr, secret: Fr): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
78
- getL1ToL2LeafValue(leafIndex: bigint): Promise<Fr | undefined>;
79
- getCommitmentIndex(commitment: Fr): Promise<bigint | undefined>;
80
- getCommitmentValue(leafIndex: bigint): Promise<Fr | undefined>;
81
- getNullifierIndex(nullifier: Fr): Promise<bigint | undefined>;
82
- }
83
76
  //# sourceMappingURL=public_db_sources.d.ts.map