@aztec/sequencer-client 0.21.0 → 0.22.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 (33) hide show
  1. package/dest/block_builder/solo_block_builder.d.ts +0 -3
  2. package/dest/block_builder/solo_block_builder.d.ts.map +1 -1
  3. package/dest/block_builder/solo_block_builder.js +19 -44
  4. package/dest/publisher/viem-tx-sender.js +4 -4
  5. package/dest/sequencer/abstract_phase_manager.d.ts +79 -0
  6. package/dest/sequencer/abstract_phase_manager.d.ts.map +1 -0
  7. package/dest/sequencer/abstract_phase_manager.js +227 -0
  8. package/dest/sequencer/application_logic_phase_manager.d.ts +39 -0
  9. package/dest/sequencer/application_logic_phase_manager.d.ts.map +1 -0
  10. package/dest/sequencer/application_logic_phase_manager.js +64 -0
  11. package/dest/sequencer/fee_distribution_phase_manager.d.ts +38 -0
  12. package/dest/sequencer/fee_distribution_phase_manager.d.ts.map +1 -0
  13. package/dest/sequencer/fee_distribution_phase_manager.js +42 -0
  14. package/dest/sequencer/fee_preparation_phase_manager.d.ts +38 -0
  15. package/dest/sequencer/fee_preparation_phase_manager.d.ts.map +1 -0
  16. package/dest/sequencer/fee_preparation_phase_manager.js +43 -0
  17. package/dest/sequencer/index.d.ts +0 -1
  18. package/dest/sequencer/index.d.ts.map +1 -1
  19. package/dest/sequencer/index.js +1 -2
  20. package/dest/sequencer/processed_tx.d.ts +4 -9
  21. package/dest/sequencer/processed_tx.d.ts.map +1 -1
  22. package/dest/sequencer/processed_tx.js +3 -3
  23. package/dest/sequencer/public_processor.d.ts +7 -32
  24. package/dest/sequencer/public_processor.d.ts.map +1 -1
  25. package/dest/sequencer/public_processor.js +32 -236
  26. package/dest/sequencer/sequencer.js +5 -5
  27. package/dest/simulator/public_executor.d.ts +3 -3
  28. package/dest/simulator/public_executor.d.ts.map +1 -1
  29. package/dest/simulator/public_executor.js +4 -7
  30. package/package.json +12 -12
  31. package/dest/sequencer/utils.d.ts +0 -9
  32. package/dest/sequencer/utils.d.ts.map +0 -1
  33. package/dest/sequencer/utils.js +0 -11
@@ -0,0 +1,227 @@
1
+ import { MerkleTreeId } from '@aztec/circuit-types';
2
+ import { AztecAddress, CallRequest, CombinedAccumulatedData, ContractStorageRead, ContractStorageUpdateRequest, Fr, KernelCircuitPublicInputs, MAX_NEW_COMMITMENTS_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_DATA_READS_PER_CALL, MAX_PUBLIC_DATA_READS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MembershipWitness, PreviousKernelData, PublicCallData, PublicCallStackItem, PublicCircuitPublicInputs, PublicDataRead, PublicDataUpdateRequest, PublicKernelInputs, RETURN_VALUES_LENGTH, SideEffect, SideEffectLinkedToNoteHash, VK_TREE_HEIGHT, } from '@aztec/circuits.js';
3
+ import { computeVarArgsHash } from '@aztec/circuits.js/abis';
4
+ import { arrayNonEmptyLength, padArrayEnd } from '@aztec/foundation/collection';
5
+ import { createDebugLogger } from '@aztec/foundation/log';
6
+ import { to2Fields } from '@aztec/foundation/serialize';
7
+ import { collectPublicDataReads, collectPublicDataUpdateRequests, isPublicExecutionResult, } from '@aztec/simulator';
8
+ import { getVerificationKeys } from '../mocks/verification_keys.js';
9
+ /**
10
+ * A phase manager is responsible for performing/rolling back a phase of a transaction.
11
+ *
12
+ * The phases are as follows:
13
+ * 1. Fee Preparation
14
+ * 2. Application Logic
15
+ * 3. Fee Distribution
16
+ */
17
+ export class AbstractPhaseManager {
18
+ constructor(db, publicExecutor, publicKernel, publicProver, globalVariables, historicalHeader, log = createDebugLogger('aztec:sequencer:phase-manager')) {
19
+ this.db = db;
20
+ this.publicExecutor = publicExecutor;
21
+ this.publicKernel = publicKernel;
22
+ this.publicProver = publicProver;
23
+ this.globalVariables = globalVariables;
24
+ this.historicalHeader = historicalHeader;
25
+ this.log = log;
26
+ }
27
+ getKernelOutputAndProof(tx, previousPublicKernelOutput, previousPublicKernelProof) {
28
+ if (previousPublicKernelOutput && previousPublicKernelProof) {
29
+ return {
30
+ publicKernelOutput: previousPublicKernelOutput,
31
+ publicKernelProof: previousPublicKernelProof,
32
+ };
33
+ }
34
+ else {
35
+ const publicKernelOutput = new KernelCircuitPublicInputs(tx.data.aggregationObject, tx.data.metaHwm, CombinedAccumulatedData.fromFinalAccumulatedData(tx.data.end), tx.data.constants, tx.data.isPrivate);
36
+ const publicKernelProof = previousPublicKernelProof || tx.proof;
37
+ return {
38
+ publicKernelOutput,
39
+ publicKernelProof,
40
+ };
41
+ }
42
+ }
43
+ async processEnqueuedPublicCalls(enqueuedCalls, previousPublicKernelOutput, previousPublicKernelProof) {
44
+ if (!enqueuedCalls || !enqueuedCalls.length) {
45
+ throw new Error(`Missing preimages for enqueued public calls`);
46
+ }
47
+ let kernelOutput = previousPublicKernelOutput;
48
+ let kernelProof = previousPublicKernelProof;
49
+ const newUnencryptedFunctionLogs = [];
50
+ // TODO(#1684): Should multiple separately enqueued public calls be treated as
51
+ // separate public callstacks to be proven by separate public kernel sequences
52
+ // and submitted separately to the base rollup?
53
+ for (const enqueuedCall of enqueuedCalls) {
54
+ const executionStack = [enqueuedCall];
55
+ // Keep track of which result is for the top/enqueued call
56
+ let enqueuedExecutionResult;
57
+ while (executionStack.length) {
58
+ const current = executionStack.pop();
59
+ const isExecutionRequest = !isPublicExecutionResult(current);
60
+ const result = isExecutionRequest ? await this.publicExecutor.simulate(current, this.globalVariables) : current;
61
+ newUnencryptedFunctionLogs.push(result.unencryptedLogs);
62
+ const functionSelector = result.execution.functionData.selector.toString();
63
+ this.log(`Running public kernel circuit for ${functionSelector}@${result.execution.contractAddress.toString()}`);
64
+ executionStack.push(...result.nestedExecutions);
65
+ const callData = await this.getPublicCallData(result, isExecutionRequest);
66
+ [kernelOutput, kernelProof] = await this.runKernelCircuit(callData, kernelOutput, kernelProof);
67
+ if (!enqueuedExecutionResult) {
68
+ enqueuedExecutionResult = result;
69
+ }
70
+ }
71
+ // HACK(#1622): Manually patches the ordering of public state actions
72
+ // TODO(#757): Enforce proper ordering of public state actions
73
+ this.patchPublicStorageActionOrdering(kernelOutput, enqueuedExecutionResult);
74
+ }
75
+ // TODO(#3675): This should be done in a public kernel circuit
76
+ this.removeRedundantPublicDataWrites(kernelOutput);
77
+ return [kernelOutput, kernelProof, newUnencryptedFunctionLogs];
78
+ }
79
+ async runKernelCircuit(callData, previousOutput, previousProof) {
80
+ const output = await this.getKernelCircuitOutput(callData, previousOutput, previousProof);
81
+ const proof = await this.publicProver.getPublicKernelCircuitProof(output);
82
+ return [output, proof];
83
+ }
84
+ getKernelCircuitOutput(callData, previousOutput, previousProof) {
85
+ if (previousOutput?.isPrivate && previousProof) {
86
+ // Run the public kernel circuit with previous private kernel
87
+ const previousKernel = this.getPreviousKernelData(previousOutput, previousProof);
88
+ const inputs = new PublicKernelInputs(previousKernel, callData);
89
+ return this.publicKernel.publicKernelCircuitPrivateInput(inputs);
90
+ }
91
+ else if (previousOutput && previousProof) {
92
+ // Run the public kernel circuit with previous public kernel
93
+ const previousKernel = this.getPreviousKernelData(previousOutput, previousProof);
94
+ const inputs = new PublicKernelInputs(previousKernel, callData);
95
+ return this.publicKernel.publicKernelCircuitNonFirstIteration(inputs);
96
+ }
97
+ else {
98
+ throw new Error(`No public kernel circuit for inputs`);
99
+ }
100
+ }
101
+ getPreviousKernelData(previousOutput, previousProof) {
102
+ const vk = getVerificationKeys().publicKernelCircuit;
103
+ const vkIndex = 0;
104
+ const vkSiblingPath = MembershipWitness.random(VK_TREE_HEIGHT).siblingPath;
105
+ return new PreviousKernelData(previousOutput, previousProof, vk, vkIndex, vkSiblingPath);
106
+ }
107
+ async getPublicCircuitPublicInputs(result) {
108
+ const publicDataTreeInfo = await this.db.getTreeInfo(MerkleTreeId.PUBLIC_DATA_TREE);
109
+ this.historicalHeader.state.partial.publicDataTree.root = Fr.fromBuffer(publicDataTreeInfo.root);
110
+ const callStackPreimages = await this.getPublicCallStackPreimages(result);
111
+ const publicCallStackHashes = padArrayEnd(callStackPreimages.map(c => c.hash()), Fr.ZERO, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL);
112
+ // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165) --> set this in Noir
113
+ const unencryptedLogsHash = to2Fields(result.unencryptedLogs.hash());
114
+ const unencryptedLogPreimagesLength = new Fr(result.unencryptedLogs.getSerializedLength());
115
+ return PublicCircuitPublicInputs.from({
116
+ callContext: result.execution.callContext,
117
+ proverAddress: AztecAddress.ZERO,
118
+ argsHash: computeVarArgsHash(result.execution.args),
119
+ newCommitments: padArrayEnd(result.newCommitments, SideEffect.empty(), MAX_NEW_COMMITMENTS_PER_CALL),
120
+ newNullifiers: padArrayEnd(result.newNullifiers, SideEffectLinkedToNoteHash.empty(), MAX_NEW_NULLIFIERS_PER_CALL),
121
+ newL2ToL1Msgs: padArrayEnd(result.newL2ToL1Messages, Fr.ZERO, MAX_NEW_L2_TO_L1_MSGS_PER_CALL),
122
+ returnValues: padArrayEnd(result.returnValues, Fr.ZERO, RETURN_VALUES_LENGTH),
123
+ contractStorageReads: padArrayEnd(result.contractStorageReads, ContractStorageRead.empty(), MAX_PUBLIC_DATA_READS_PER_CALL),
124
+ contractStorageUpdateRequests: padArrayEnd(result.contractStorageUpdateRequests, ContractStorageUpdateRequest.empty(), MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL),
125
+ publicCallStackHashes,
126
+ unencryptedLogsHash,
127
+ unencryptedLogPreimagesLength,
128
+ historicalHeader: this.historicalHeader,
129
+ });
130
+ }
131
+ async getPublicCallStackItem(result, isExecutionRequest = false) {
132
+ return new PublicCallStackItem(result.execution.contractAddress, result.execution.functionData, await this.getPublicCircuitPublicInputs(result), isExecutionRequest);
133
+ }
134
+ async getPublicCallStackPreimages(result) {
135
+ const nested = result.nestedExecutions;
136
+ if (nested.length > MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL) {
137
+ throw new Error(`Public call stack size exceeded (max ${MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL}, got ${nested.length})`);
138
+ }
139
+ return await Promise.all(nested.map(n => this.getPublicCallStackItem(n)));
140
+ }
141
+ getBytecodeHash(_result) {
142
+ // TODO: Determine how to calculate bytecode hash. Circuits just check it isn't zero for now.
143
+ // See https://github.com/AztecProtocol/aztec3-packages/issues/378
144
+ const bytecodeHash = new Fr(1n);
145
+ return Promise.resolve(bytecodeHash);
146
+ }
147
+ /**
148
+ * Calculates the PublicCircuitOutput for this execution result along with its proof,
149
+ * and assembles a PublicCallData object from it.
150
+ * @param result - The execution result.
151
+ * @param preimages - The preimages of the callstack items.
152
+ * @param isExecutionRequest - Whether the current callstack item should be considered a public fn execution request.
153
+ * @returns A corresponding PublicCallData object.
154
+ */
155
+ async getPublicCallData(result, isExecutionRequest = false) {
156
+ const bytecodeHash = await this.getBytecodeHash(result);
157
+ const callStackItem = await this.getPublicCallStackItem(result, isExecutionRequest);
158
+ const publicCallRequests = (await this.getPublicCallStackPreimages(result)).map(c => c.toCallRequest());
159
+ const publicCallStack = padArrayEnd(publicCallRequests, CallRequest.empty(), MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL);
160
+ const portalContractAddress = result.execution.callContext.portalContractAddress.toField();
161
+ const proof = await this.publicProver.getPublicCircuitProof(callStackItem.publicInputs);
162
+ return new PublicCallData(callStackItem, publicCallStack, proof, portalContractAddress, bytecodeHash);
163
+ }
164
+ // HACK(#1622): this is a hack to fix ordering of public state in the call stack. Since the private kernel
165
+ // cannot keep track of side effects that happen after or before a nested call, we override the public
166
+ // state actions it emits with whatever we got from the simulator. As a sanity check, we at least verify
167
+ // that the elements are the same, so we are only tweaking their ordering.
168
+ // See yarn-project/end-to-end/src/e2e_ordering.test.ts
169
+ // See https://github.com/AztecProtocol/aztec-packages/issues/1616
170
+ // TODO(#757): Enforce proper ordering of public state actions
171
+ /**
172
+ * Patch the ordering of storage actions output from the public kernel.
173
+ * @param publicInputs - to be patched here: public inputs to the kernel iteration up to this point
174
+ * @param execResult - result of the top/first execution for this enqueued public call
175
+ */
176
+ patchPublicStorageActionOrdering(publicInputs, execResult) {
177
+ // Convert ContractStorage* objects to PublicData* objects and sort them in execution order
178
+ const simPublicDataReads = collectPublicDataReads(execResult);
179
+ const simPublicDataUpdateRequests = collectPublicDataUpdateRequests(execResult);
180
+ const { publicDataReads, publicDataUpdateRequests } = publicInputs.end; // from kernel
181
+ // Validate all items in enqueued public calls are in the kernel emitted stack
182
+ const readsAreEqual = simPublicDataReads.reduce((accum, read) => accum && !!publicDataReads.find(item => item.leafSlot.equals(read.leafSlot) && item.value.equals(read.value)), true);
183
+ const updatesAreEqual = simPublicDataUpdateRequests.reduce((accum, update) => accum &&
184
+ !!publicDataUpdateRequests.find(item => item.leafSlot.equals(update.leafSlot) &&
185
+ item.oldValue.equals(update.oldValue) &&
186
+ item.newValue.equals(update.newValue)), true);
187
+ if (!readsAreEqual) {
188
+ throw new Error(`Public data reads from simulator do not match those from public kernel.\nFrom simulator: ${simPublicDataReads
189
+ .map(p => p.toFriendlyJSON())
190
+ .join(', ')}\nFrom public kernel: ${publicDataReads.map(i => i.toFriendlyJSON()).join(', ')}`);
191
+ }
192
+ if (!updatesAreEqual) {
193
+ throw new Error(`Public data update requests from simulator do not match those from public kernel.\nFrom simulator: ${simPublicDataUpdateRequests
194
+ .map(p => p.toFriendlyJSON())
195
+ .join(', ')}\nFrom public kernel: ${publicDataUpdateRequests.map(i => i.toFriendlyJSON()).join(', ')}`);
196
+ }
197
+ // Assume that kernel public inputs has the right number of items.
198
+ // We only want to reorder the items from the public inputs of the
199
+ // most recently processed top/enqueued call.
200
+ const numTotalReadsInKernel = arrayNonEmptyLength(publicInputs.end.publicDataReads, f => f.leafSlot.equals(Fr.ZERO) && f.value.equals(Fr.ZERO));
201
+ const numTotalUpdatesInKernel = arrayNonEmptyLength(publicInputs.end.publicDataUpdateRequests, f => f.leafSlot.equals(Fr.ZERO) && f.oldValue.equals(Fr.ZERO) && f.newValue.equals(Fr.ZERO));
202
+ const numReadsBeforeThisEnqueuedCall = numTotalReadsInKernel - simPublicDataReads.length;
203
+ const numUpdatesBeforeThisEnqueuedCall = numTotalUpdatesInKernel - simPublicDataUpdateRequests.length;
204
+ // Override kernel output
205
+ publicInputs.end.publicDataReads = padArrayEnd([
206
+ // do not mess with items from previous top/enqueued calls in kernel output
207
+ ...publicDataReads.slice(0, numReadsBeforeThisEnqueuedCall),
208
+ ...simPublicDataReads,
209
+ ], PublicDataRead.empty(), MAX_PUBLIC_DATA_READS_PER_TX);
210
+ // Override kernel output
211
+ publicInputs.end.publicDataUpdateRequests = padArrayEnd([
212
+ // do not mess with items from previous top/enqueued calls in kernel output
213
+ ...publicDataUpdateRequests.slice(0, numUpdatesBeforeThisEnqueuedCall),
214
+ ...simPublicDataUpdateRequests,
215
+ ], PublicDataUpdateRequest.empty(), MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
216
+ }
217
+ removeRedundantPublicDataWrites(publicInputs) {
218
+ const lastWritesMap = new Map();
219
+ for (const write of publicInputs.end.publicDataUpdateRequests) {
220
+ const key = write.leafSlot.toString();
221
+ lastWritesMap.set(key, write);
222
+ }
223
+ const lastWrites = publicInputs.end.publicDataUpdateRequests.filter(write => lastWritesMap.get(write.leafSlot.toString()) === write);
224
+ publicInputs.end.publicDataUpdateRequests = padArrayEnd(lastWrites, PublicDataUpdateRequest.empty(), MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX);
225
+ }
226
+ }
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RfcGhhc2VfbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXF1ZW5jZXIvYWJzdHJhY3RfcGhhc2VfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFlBQVksRUFBTSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hFLE9BQU8sRUFDTCxZQUFZLEVBQ1osV0FBVyxFQUNYLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDbkIsNEJBQTRCLEVBQzVCLEVBQUUsRUFHRix5QkFBeUIsRUFDekIsNEJBQTRCLEVBQzVCLDhCQUE4QixFQUM5QiwyQkFBMkIsRUFDM0IscUNBQXFDLEVBQ3JDLDhCQUE4QixFQUM5Qiw0QkFBNEIsRUFDNUIsd0NBQXdDLEVBQ3hDLHNDQUFzQyxFQUN0QyxpQkFBaUIsRUFDakIsa0JBQWtCLEVBRWxCLGNBQWMsRUFFZCxtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIsa0JBQWtCLEVBRWxCLG9CQUFvQixFQUNwQixVQUFVLEVBQ1YsMEJBQTBCLEVBQzFCLGNBQWMsR0FDZixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEQsT0FBTyxFQUlMLHNCQUFzQixFQUN0QiwrQkFBK0IsRUFDL0IsdUJBQXVCLEdBQ3hCLE1BQU0sa0JBQWtCLENBQUM7QUFHMUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFLcEU7Ozs7Ozs7R0FPRztBQUNILE1BQU0sT0FBZ0Isb0JBQW9CO0lB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
@@ -0,0 +1,39 @@
1
+ import { Tx } from '@aztec/circuit-types';
2
+ import { GlobalVariables, Header, Proof, PublicCallRequest, PublicKernelPublicInputs } from '@aztec/circuits.js';
3
+ import { PublicExecutor, PublicStateDB } from '@aztec/simulator';
4
+ import { MerkleTreeOperations } from '@aztec/world-state';
5
+ import { PublicProver } from '../prover/index.js';
6
+ import { PublicKernelCircuitSimulator } from '../simulator/index.js';
7
+ import { ContractsDataSourcePublicDB } from '../simulator/public_executor.js';
8
+ import { AbstractPhaseManager } from './abstract_phase_manager.js';
9
+ import { FeeDistributionPhaseManager } from './fee_distribution_phase_manager.js';
10
+ import { FailedTx } from './processed_tx.js';
11
+ /**
12
+ * The phase manager responsible for performing the fee preparation phase.
13
+ */
14
+ export declare class ApplicationLogicPhaseManager extends AbstractPhaseManager {
15
+ protected db: MerkleTreeOperations;
16
+ protected publicExecutor: PublicExecutor;
17
+ protected publicKernel: PublicKernelCircuitSimulator;
18
+ protected publicProver: PublicProver;
19
+ protected globalVariables: GlobalVariables;
20
+ protected historicalHeader: Header;
21
+ protected publicContractsDB: ContractsDataSourcePublicDB;
22
+ protected publicStateDB: PublicStateDB;
23
+ protected log: import("@aztec/foundation/log").DebugLogger;
24
+ constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, publicProver: PublicProver, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB, log?: import("@aztec/foundation/log").DebugLogger);
25
+ extractEnqueuedPublicCalls(tx: Tx): PublicCallRequest[];
26
+ handle(tx: Tx, previousPublicKernelOutput?: PublicKernelPublicInputs, previousPublicKernelProof?: Proof): Promise<{
27
+ /**
28
+ * the output of the public kernel circuit for this phase
29
+ */
30
+ publicKernelOutput?: PublicKernelPublicInputs;
31
+ /**
32
+ * the proof of the public kernel circuit for this phase
33
+ */
34
+ publicKernelProof?: Proof;
35
+ }>;
36
+ nextPhase(): FeeDistributionPhaseManager;
37
+ rollback(tx: Tx, err: unknown): Promise<FailedTx>;
38
+ }
39
+ //# sourceMappingURL=application_logic_phase_manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application_logic_phase_manager.d.ts","sourceRoot":"","sources":["../../src/sequencer/application_logic_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAGjH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,oBAAoB;IAElE,SAAS,CAAC,EAAE,EAAE,oBAAoB;IAClC,SAAS,CAAC,cAAc,EAAE,cAAc;IACxC,SAAS,CAAC,YAAY,EAAE,4BAA4B;IACpD,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,SAAS,CAAC,gBAAgB,EAAE,MAAM;IAClC,SAAS,CAAC,iBAAiB,EAAE,2BAA2B;IACxD,SAAS,CAAC,aAAa,EAAE,aAAa;IAEtC,SAAS,CAAC,GAAG;gBATH,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,EAE5B,GAAG,8CAAyD;IAKxE,0BAA0B,CAAC,EAAE,EAAE,EAAE,GAAG,iBAAiB,EAAE;IASjD,MAAM,CACV,EAAE,EAAE,EAAE,EACN,0BAA0B,CAAC,EAAE,wBAAwB,EACrD,yBAAyB,CAAC,EAAE,KAAK,GAChC,OAAO,CAAC;QACT;;WAEG;QACH,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;QAC9C;;WAEG;QACH,iBAAiB,CAAC,EAAE,KAAK,CAAC;KAC3B,CAAC;IA2BF,SAAS;IAaH,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;CAWxD"}
@@ -0,0 +1,64 @@
1
+ import { isArrayEmpty } from '@aztec/foundation/collection';
2
+ import { createDebugLogger } from '@aztec/foundation/log';
3
+ import { AbstractPhaseManager } from './abstract_phase_manager.js';
4
+ import { FeeDistributionPhaseManager } from './fee_distribution_phase_manager.js';
5
+ /**
6
+ * The phase manager responsible for performing the fee preparation phase.
7
+ */
8
+ export class ApplicationLogicPhaseManager extends AbstractPhaseManager {
9
+ constructor(db, publicExecutor, publicKernel, publicProver, globalVariables, historicalHeader, publicContractsDB, publicStateDB, log = createDebugLogger('aztec:sequencer:application-logic')) {
10
+ super(db, publicExecutor, publicKernel, publicProver, globalVariables, historicalHeader);
11
+ this.db = db;
12
+ this.publicExecutor = publicExecutor;
13
+ this.publicKernel = publicKernel;
14
+ this.publicProver = publicProver;
15
+ this.globalVariables = globalVariables;
16
+ this.historicalHeader = historicalHeader;
17
+ this.publicContractsDB = publicContractsDB;
18
+ this.publicStateDB = publicStateDB;
19
+ this.log = log;
20
+ }
21
+ extractEnqueuedPublicCalls(tx) {
22
+ if (!tx.enqueuedPublicFunctionCalls) {
23
+ throw new Error(`Missing preimages for enqueued public calls`);
24
+ }
25
+ // Note: the first enqueued public call is for fee payments
26
+ // TODO(dbanks12): why must these be reversed?
27
+ return tx.enqueuedPublicFunctionCalls.slice().reverse();
28
+ }
29
+ async handle(tx, previousPublicKernelOutput, previousPublicKernelProof) {
30
+ // add new contracts to the contracts db so that their functions may be found and called
31
+ this.log(`Processing tx ${await tx.getTxHash()}`);
32
+ await this.publicContractsDB.addNewContracts(tx);
33
+ if (!isArrayEmpty(tx.data.end.publicCallStack, item => item.isEmpty())) {
34
+ const outputAndProof = this.getKernelOutputAndProof(tx, previousPublicKernelOutput, previousPublicKernelProof);
35
+ this.log(`Executing enqueued public calls for tx ${await tx.getTxHash()}`);
36
+ const [publicKernelOutput, publicKernelProof, newUnencryptedFunctionLogs] = await this.processEnqueuedPublicCalls(this.extractEnqueuedPublicCalls(tx), outputAndProof.publicKernelOutput, outputAndProof.publicKernelProof);
37
+ tx.unencryptedLogs.addFunctionLogs(newUnencryptedFunctionLogs);
38
+ // commit the state updates from this transaction
39
+ await this.publicStateDB.commit();
40
+ return { publicKernelOutput, publicKernelProof };
41
+ }
42
+ else {
43
+ return {
44
+ publicKernelOutput: undefined,
45
+ publicKernelProof: undefined,
46
+ };
47
+ }
48
+ }
49
+ nextPhase() {
50
+ return new FeeDistributionPhaseManager(this.db, this.publicExecutor, this.publicKernel, this.publicProver, this.globalVariables, this.historicalHeader, this.publicContractsDB, this.publicStateDB);
51
+ }
52
+ async rollback(tx, err) {
53
+ this.log.warn(`Error processing tx ${await tx.getTxHash()}: ${err}`);
54
+ // remove contracts on failure
55
+ await this.publicContractsDB.removeNewContracts(tx);
56
+ // rollback any state updates from this failed transaction
57
+ await this.publicStateDB.rollback();
58
+ return {
59
+ tx,
60
+ error: err instanceof Error ? err : new Error('Unknown error'),
61
+ };
62
+ }
63
+ }
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb25fbG9naWNfcGhhc2VfbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXF1ZW5jZXIvYXBwbGljYXRpb25fbG9naWNfcGhhc2VfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFHbEY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsb0JBQW9CO0lBQ3BFLFlBQ1ksRUFBd0IsRUFDeEIsY0FBOEIsRUFDOUIsWUFBMEMsRUFDMUMsWUFBMEIsRUFDMUIsZUFBZ0MsRUFDaEMsZ0JBQXdCLEVBQ3hCLGlCQUE4QyxFQUM5QyxhQUE0QixFQUU1QixNQUFNLGlCQUFpQixDQUFDLG1DQUFtQyxDQUFDO1FBRXRFLEtBQUssQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFYL0UsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGlCQUFZLEdBQVosWUFBWSxDQUE4QjtRQUMxQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFDOUMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFFNUIsUUFBRyxHQUFILEdBQUcsQ0FBeUQ7SUFHeEUsQ0FBQztJQUVELDBCQUEwQixDQUFDLEVBQU07UUFD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
@@ -0,0 +1,38 @@
1
+ import { Tx } from '@aztec/circuit-types';
2
+ import { GlobalVariables, Header, Proof, PublicCallRequest, PublicKernelPublicInputs } from '@aztec/circuits.js';
3
+ import { PublicExecutor, PublicStateDB } from '@aztec/simulator';
4
+ import { MerkleTreeOperations } from '@aztec/world-state';
5
+ import { PublicProver } from '../prover/index.js';
6
+ import { PublicKernelCircuitSimulator } from '../simulator/index.js';
7
+ import { ContractsDataSourcePublicDB } from '../simulator/public_executor.js';
8
+ import { AbstractPhaseManager } from './abstract_phase_manager.js';
9
+ import { FailedTx } from './processed_tx.js';
10
+ /**
11
+ * The phase manager responsible for performing the fee preparation phase.
12
+ */
13
+ export declare class FeeDistributionPhaseManager extends AbstractPhaseManager {
14
+ protected db: MerkleTreeOperations;
15
+ protected publicExecutor: PublicExecutor;
16
+ protected publicKernel: PublicKernelCircuitSimulator;
17
+ protected publicProver: PublicProver;
18
+ protected globalVariables: GlobalVariables;
19
+ protected historicalHeader: Header;
20
+ protected publicContractsDB: ContractsDataSourcePublicDB;
21
+ protected publicStateDB: PublicStateDB;
22
+ protected log: import("@aztec/foundation/log").DebugLogger;
23
+ constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, publicProver: PublicProver, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB, log?: import("@aztec/foundation/log").DebugLogger);
24
+ extractEnqueuedPublicCalls(_tx: Tx): PublicCallRequest[];
25
+ handle(tx: Tx, previousPublicKernelOutput?: PublicKernelPublicInputs, previousPublicKernelProof?: Proof): Promise<{
26
+ /**
27
+ * the output of the public kernel circuit for this phase
28
+ */
29
+ publicKernelOutput?: PublicKernelPublicInputs;
30
+ /**
31
+ * the proof of the public kernel circuit for this phase
32
+ */
33
+ publicKernelProof?: Proof;
34
+ }>;
35
+ nextPhase(): null;
36
+ rollback(tx: Tx, err: unknown): Promise<FailedTx>;
37
+ }
38
+ //# sourceMappingURL=fee_distribution_phase_manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fee_distribution_phase_manager.d.ts","sourceRoot":"","sources":["../../src/sequencer/fee_distribution_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAEjH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,oBAAoB;IAEjE,SAAS,CAAC,EAAE,EAAE,oBAAoB;IAClC,SAAS,CAAC,cAAc,EAAE,cAAc;IACxC,SAAS,CAAC,YAAY,EAAE,4BAA4B;IACpD,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,SAAS,CAAC,gBAAgB,EAAE,MAAM;IAClC,SAAS,CAAC,iBAAiB,EAAE,2BAA2B;IACxD,SAAS,CAAC,aAAa,EAAE,aAAa;IAEtC,SAAS,CAAC,GAAG;gBATH,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,EAE5B,GAAG,8CAAwD;IAMvE,0BAA0B,CAAC,GAAG,EAAE,EAAE,GAAG,iBAAiB,EAAE;IAKlD,MAAM,CACV,EAAE,EAAE,EAAE,EACN,0BAA0B,CAAC,EAAE,wBAAwB,EACrD,yBAAyB,CAAC,EAAE,KAAK,GAChC,OAAO,CAAC;QACT;;WAEG;QACH,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;QAC9C;;WAEG;QACH,iBAAiB,CAAC,EAAE,KAAK,CAAC;KAC3B,CAAC;IAQF,SAAS;IAIH,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;CAOxD"}
@@ -0,0 +1,42 @@
1
+ import { createDebugLogger } from '@aztec/foundation/log';
2
+ import { AbstractPhaseManager } from './abstract_phase_manager.js';
3
+ /**
4
+ * The phase manager responsible for performing the fee preparation phase.
5
+ */
6
+ export class FeeDistributionPhaseManager extends AbstractPhaseManager {
7
+ constructor(db, publicExecutor, publicKernel, publicProver, globalVariables, historicalHeader, publicContractsDB, publicStateDB, log = createDebugLogger('aztec:sequencer:fee-distribution')) {
8
+ super(db, publicExecutor, publicKernel, publicProver, globalVariables, historicalHeader);
9
+ this.db = db;
10
+ this.publicExecutor = publicExecutor;
11
+ this.publicKernel = publicKernel;
12
+ this.publicProver = publicProver;
13
+ this.globalVariables = globalVariables;
14
+ this.historicalHeader = historicalHeader;
15
+ this.publicContractsDB = publicContractsDB;
16
+ this.publicStateDB = publicStateDB;
17
+ this.log = log;
18
+ }
19
+ // this is a no-op for now
20
+ extractEnqueuedPublicCalls(_tx) {
21
+ return [];
22
+ }
23
+ // this is a no-op for now
24
+ async handle(tx, previousPublicKernelOutput, previousPublicKernelProof) {
25
+ this.log.debug(`Handle ${await tx.getTxHash()} with no-op`);
26
+ return {
27
+ publicKernelOutput: previousPublicKernelOutput,
28
+ publicKernelProof: previousPublicKernelProof,
29
+ };
30
+ }
31
+ nextPhase() {
32
+ return null;
33
+ }
34
+ async rollback(tx, err) {
35
+ this.log.warn(`Error processing tx ${await tx.getTxHash()}: ${err}`);
36
+ return {
37
+ tx,
38
+ error: err instanceof Error ? err : new Error('Unknown error'),
39
+ };
40
+ }
41
+ }
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX2Rpc3RyaWJ1dGlvbl9waGFzZV9tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcXVlbmNlci9mZWVfZGlzdHJpYnV0aW9uX3BoYXNlX21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHbkU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsb0JBQW9CO0lBQ25FLFlBQ1ksRUFBd0IsRUFDeEIsY0FBOEIsRUFDOUIsWUFBMEMsRUFDMUMsWUFBMEIsRUFDMUIsZUFBZ0MsRUFDaEMsZ0JBQXdCLEVBQ3hCLGlCQUE4QyxFQUM5QyxhQUE0QixFQUU1QixNQUFNLGlCQUFpQixDQUFDLGtDQUFrQyxDQUFDO1FBRXJFLEtBQUssQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFYL0UsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLGlCQUFZLEdBQVosWUFBWSxDQUE4QjtRQUMxQyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFDOUMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFFNUIsUUFBRyxHQUFILEdBQUcsQ0FBd0Q7SUFHdkUsQ0FBQztJQUVELDBCQUEwQjtJQUMxQiwwQkFBMEIsQ0FBQyxHQUFPO1FBQ2hDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELDBCQUEwQjtJQUMxQixLQUFLLENBQUMsTUFBTSxDQUNWLEVBQU0sRUFDTiwwQkFBcUQsRUFDckQseUJBQWlDO1FBV2pDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzVELE9BQU87WUFDTCxrQkFBa0IsRUFBRSwwQkFBMEI7WUFDOUMsaUJBQWlCLEVBQUUseUJBQXlCO1NBQzdDLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBTSxFQUFFLEdBQVk7UUFDakMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDckUsT0FBTztZQUNMLEVBQUU7WUFDRixLQUFLLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUM7U0FDL0QsQ0FBQztJQUNKLENBQUM7Q0FDRiJ9
@@ -0,0 +1,38 @@
1
+ import { Tx } from '@aztec/circuit-types';
2
+ import { GlobalVariables, Header, Proof, PublicCallRequest, PublicKernelPublicInputs } from '@aztec/circuits.js';
3
+ import { PublicExecutor, PublicStateDB } from '@aztec/simulator';
4
+ import { MerkleTreeOperations } from '@aztec/world-state';
5
+ import { PublicProver } from '../prover/index.js';
6
+ import { PublicKernelCircuitSimulator } from '../simulator/index.js';
7
+ import { ContractsDataSourcePublicDB } from '../simulator/public_executor.js';
8
+ import { AbstractPhaseManager } from './abstract_phase_manager.js';
9
+ import { FailedTx } from './processed_tx.js';
10
+ /**
11
+ * The phase manager responsible for performing the fee preparation phase.
12
+ */
13
+ export declare class FeePreparationPhaseManager extends AbstractPhaseManager {
14
+ protected db: MerkleTreeOperations;
15
+ protected publicExecutor: PublicExecutor;
16
+ protected publicKernel: PublicKernelCircuitSimulator;
17
+ protected publicProver: PublicProver;
18
+ protected globalVariables: GlobalVariables;
19
+ protected historicalHeader: Header;
20
+ protected publicContractsDB: ContractsDataSourcePublicDB;
21
+ protected publicStateDB: PublicStateDB;
22
+ protected log: import("@aztec/foundation/log").DebugLogger;
23
+ constructor(db: MerkleTreeOperations, publicExecutor: PublicExecutor, publicKernel: PublicKernelCircuitSimulator, publicProver: PublicProver, globalVariables: GlobalVariables, historicalHeader: Header, publicContractsDB: ContractsDataSourcePublicDB, publicStateDB: PublicStateDB, log?: import("@aztec/foundation/log").DebugLogger);
24
+ extractEnqueuedPublicCalls(_tx: Tx): PublicCallRequest[];
25
+ handle(tx: Tx, previousPublicKernelOutput?: PublicKernelPublicInputs, previousPublicKernelProof?: Proof): Promise<{
26
+ /**
27
+ * the output of the public kernel circuit for this phase
28
+ */
29
+ publicKernelOutput?: PublicKernelPublicInputs;
30
+ /**
31
+ * the proof of the public kernel circuit for this phase
32
+ */
33
+ publicKernelProof?: Proof;
34
+ }>;
35
+ nextPhase(): AbstractPhaseManager;
36
+ rollback(tx: Tx, err: unknown): Promise<FailedTx>;
37
+ }
38
+ //# sourceMappingURL=fee_preparation_phase_manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fee_preparation_phase_manager.d.ts","sourceRoot":"","sources":["../../src/sequencer/fee_preparation_phase_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAEjH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,oBAAoB;IAEhE,SAAS,CAAC,EAAE,EAAE,oBAAoB;IAClC,SAAS,CAAC,cAAc,EAAE,cAAc;IACxC,SAAS,CAAC,YAAY,EAAE,4BAA4B;IACpD,SAAS,CAAC,YAAY,EAAE,YAAY;IACpC,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,SAAS,CAAC,gBAAgB,EAAE,MAAM;IAClC,SAAS,CAAC,iBAAiB,EAAE,2BAA2B;IACxD,SAAS,CAAC,aAAa,EAAE,aAAa;IAEtC,SAAS,CAAC,GAAG;gBATH,EAAE,EAAE,oBAAoB,EACxB,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,4BAA4B,EAC1C,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,2BAA2B,EAC9C,aAAa,EAAE,aAAa,EAE5B,GAAG,8CAAuD;IAMtE,0BAA0B,CAAC,GAAG,EAAE,EAAE,GAAG,iBAAiB,EAAE;IAKlD,MAAM,CACV,EAAE,EAAE,EAAE,EACN,0BAA0B,CAAC,EAAE,wBAAwB,EACrD,yBAAyB,CAAC,EAAE,KAAK,GAChC,OAAO,CAAC;QACT;;WAEG;QACH,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;QAC9C;;WAEG;QACH,iBAAiB,CAAC,EAAE,KAAK,CAAC;KAC3B,CAAC;IAQF,SAAS,IAAI,oBAAoB;IAa3B,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;CAOxD"}
@@ -0,0 +1,43 @@
1
+ import { createDebugLogger } from '@aztec/foundation/log';
2
+ import { AbstractPhaseManager } from './abstract_phase_manager.js';
3
+ import { ApplicationLogicPhaseManager } from './application_logic_phase_manager.js';
4
+ /**
5
+ * The phase manager responsible for performing the fee preparation phase.
6
+ */
7
+ export class FeePreparationPhaseManager extends AbstractPhaseManager {
8
+ constructor(db, publicExecutor, publicKernel, publicProver, globalVariables, historicalHeader, publicContractsDB, publicStateDB, log = createDebugLogger('aztec:sequencer:fee-preparation')) {
9
+ super(db, publicExecutor, publicKernel, publicProver, globalVariables, historicalHeader);
10
+ this.db = db;
11
+ this.publicExecutor = publicExecutor;
12
+ this.publicKernel = publicKernel;
13
+ this.publicProver = publicProver;
14
+ this.globalVariables = globalVariables;
15
+ this.historicalHeader = historicalHeader;
16
+ this.publicContractsDB = publicContractsDB;
17
+ this.publicStateDB = publicStateDB;
18
+ this.log = log;
19
+ }
20
+ // this is a no-op for now
21
+ extractEnqueuedPublicCalls(_tx) {
22
+ return [];
23
+ }
24
+ // this is a no-op for now
25
+ async handle(tx, previousPublicKernelOutput, previousPublicKernelProof) {
26
+ this.log.debug(`Handle ${await tx.getTxHash()} with no-op`);
27
+ return {
28
+ publicKernelOutput: previousPublicKernelOutput,
29
+ publicKernelProof: previousPublicKernelProof,
30
+ };
31
+ }
32
+ nextPhase() {
33
+ return new ApplicationLogicPhaseManager(this.db, this.publicExecutor, this.publicKernel, this.publicProver, this.globalVariables, this.historicalHeader, this.publicContractsDB, this.publicStateDB);
34
+ }
35
+ async rollback(tx, err) {
36
+ this.log.warn(`Error processing tx ${await tx.getTxHash()}: ${err}`);
37
+ return {
38
+ tx,
39
+ error: err instanceof Error ? err : new Error('Unknown error'),
40
+ };
41
+ }
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlX3ByZXBhcmF0aW9uX3BoYXNlX21hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VxdWVuY2VyL2ZlZV9wcmVwYXJhdGlvbl9waGFzZV9tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBTzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ25FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR3BGOztHQUVHO0FBQ0gsTUFBTSxPQUFPLDBCQUEyQixTQUFRLG9CQUFvQjtJQUNsRSxZQUNZLEVBQXdCLEVBQ3hCLGNBQThCLEVBQzlCLFlBQTBDLEVBQzFDLFlBQTBCLEVBQzFCLGVBQWdDLEVBQ2hDLGdCQUF3QixFQUN4QixpQkFBOEMsRUFDOUMsYUFBNEIsRUFFNUIsTUFBTSxpQkFBaUIsQ0FBQyxpQ0FBaUMsQ0FBQztRQUVwRSxLQUFLLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBWC9FLE9BQUUsR0FBRixFQUFFLENBQXNCO1FBQ3hCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBOEI7UUFDMUMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUN4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQTZCO1FBQzlDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBRTVCLFFBQUcsR0FBSCxHQUFHLENBQXVEO0lBR3RFLENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsMEJBQTBCLENBQUMsR0FBTztRQUNoQyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsS0FBSyxDQUFDLE1BQU0sQ0FDVixFQUFNLEVBQ04sMEJBQXFELEVBQ3JELHlCQUFpQztRQVdqQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUM1RCxPQUFPO1lBQ0wsa0JBQWtCLEVBQUUsMEJBQTBCO1lBQzlDLGlCQUFpQixFQUFFLHlCQUF5QjtTQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksNEJBQTRCLENBQ3JDLElBQUksQ0FBQyxFQUFFLEVBQ1AsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLGVBQWUsRUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLElBQUksQ0FBQyxhQUFhLENBQ25CLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFNLEVBQUUsR0FBWTtRQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNyRSxPQUFPO1lBQ0wsRUFBRTtZQUNGLEtBQUssRUFBRSxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQztTQUMvRCxDQUFDO0lBQ0osQ0FBQztDQUNGIn0=
@@ -1,4 +1,3 @@
1
1
  export * from './sequencer.js';
2
2
  export * from './config.js';
3
- export * from './utils.js';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sequencer/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sequencer/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
@@ -1,4 +1,3 @@
1
1
  export * from './sequencer.js';
2
2
  export * from './config.js';
3
- export * from './utils.js';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VxdWVuY2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxZQUFZLENBQUMifQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VxdWVuY2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUMifQ==
@@ -32,17 +32,12 @@ export type FailedTx = {
32
32
  error: Error;
33
33
  };
34
34
  /**
35
- * Makes a processed tx out of a private only tx that has its proof already set.
36
- * @param tx - Source tx that doesn't need further processing.
37
- */
38
- export declare function makeProcessedTx(tx: Tx): Promise<ProcessedTx>;
39
- /**
40
- * Makes a processed tx out of a tx with a public component that needs processing.
35
+ * Makes a processed tx out of source tx.
41
36
  * @param tx - Source tx.
42
- * @param kernelOutput - Output of the public kernel circuit simulation for this tx.
43
- * @param proof - Proof of the public kernel circuit for this tx.
37
+ * @param kernelOutput - Output of the kernel circuit simulation for this tx.
38
+ * @param proof - Proof of the kernel circuit for this tx.
44
39
  */
45
- export declare function makeProcessedTx(tx: Tx, kernelOutput: PublicKernelPublicInputs, proof: Proof): Promise<ProcessedTx>;
40
+ export declare function makeProcessedTx(tx: Tx, kernelOutput?: PublicKernelPublicInputs, proof?: Proof): Promise<ProcessedTx>;
46
41
  /**
47
42
  * Makes an empty tx from an empty kernel circuit public inputs.
48
43
  * @returns A processed empty tx.
@@ -1 +1 @@
1
- {"version":3,"file":"processed_tx.d.ts","sourceRoot":"","sources":["../../src/sequencer/processed_tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,EAAE,EAAE,MAAM,EAAY,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAEL,EAAE,EACF,MAAM,EACN,KAAK,EACL,wBAAwB,EAEzB,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,GAAG,eAAe,GAAG,iBAAiB,GAAG,cAAc,CAAC,GAAG;IACnG;;OAEG;IACH,IAAI,EAAE,wBAAwB,CAAC;IAC/B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB;;OAEG;IACH,EAAE,EAAE,EAAE,CAAC;IACP;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;;GAGG;AACH,wBAAsB,eAAe,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,YAAY,EAAE,wBAAwB,EACtC,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,WAAW,CAAC,CAAC;AA0BxB;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAiBnG"}
1
+ {"version":3,"file":"processed_tx.d.ts","sourceRoot":"","sources":["../../src/sequencer/processed_tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,EAAE,EAAE,MAAM,EAAY,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAEL,EAAE,EACF,MAAM,EACN,KAAK,EACL,wBAAwB,EAEzB,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,GAAG,eAAe,GAAG,iBAAiB,GAAG,cAAc,CAAC,GAAG;IACnG;;OAEG;IACH,IAAI,EAAE,wBAAwB,CAAC;IAC/B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB;;OAEG;IACH,EAAE,EAAE,EAAE,CAAC;IACP;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,YAAY,CAAC,EAAE,wBAAwB,EACvC,KAAK,CAAC,EAAE,KAAK,GACZ,OAAO,CAAC,WAAW,CAAC,CAiBtB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAiBnG"}