@aztec/prover-client 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.
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +6 -27
- package/dest/mocks/test_context.d.ts +4 -5
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +7 -9
- package/dest/orchestrator/block-building-helpers.d.ts +12 -3
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +34 -32
- package/dest/orchestrator/{proving-state.d.ts → block-proving-state.d.ts} +17 -13
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/block-proving-state.js +170 -0
- package/dest/orchestrator/epoch-proving-state.d.ts +57 -0
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/epoch-proving-state.js +151 -0
- package/dest/orchestrator/orchestrator.d.ts +32 -11
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +246 -139
- package/dest/orchestrator/tx-proving-state.d.ts +3 -2
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +54 -26
- package/dest/prover-agent/memory-proving-queue.d.ts +11 -5
- package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
- package/dest/prover-agent/memory-proving-queue.js +16 -6
- package/dest/prover-agent/prover-agent.d.ts.map +1 -1
- package/dest/prover-agent/prover-agent.js +10 -10
- package/dest/prover-agent/rpc.d.ts.map +1 -1
- package/dest/prover-agent/rpc.js +6 -2
- package/dest/test/mock_prover.d.ts +4 -2
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +9 -3
- package/package.json +12 -11
- package/src/mocks/fixtures.ts +5 -49
- package/src/mocks/test_context.ts +7 -12
- package/src/orchestrator/block-building-helpers.ts +90 -57
- package/src/orchestrator/{proving-state.ts → block-proving-state.ts} +42 -40
- package/src/orchestrator/epoch-proving-state.ts +232 -0
- package/src/orchestrator/orchestrator.ts +410 -244
- package/src/orchestrator/tx-proving-state.ts +63 -27
- package/src/prover-agent/memory-proving-queue.ts +30 -16
- package/src/prover-agent/prover-agent.ts +11 -9
- package/src/prover-agent/rpc.ts +6 -0
- package/src/test/mock_prover.ts +23 -1
- package/dest/orchestrator/proving-state.d.ts.map +0 -1
- package/dest/orchestrator/proving-state.js +0 -170
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { NUM_BASE_PARITY_PER_ROOT_PARITY, } from '@aztec/circuits.js';
|
|
2
|
+
var PROVING_STATE_LIFECYCLE;
|
|
3
|
+
(function (PROVING_STATE_LIFECYCLE) {
|
|
4
|
+
PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_CREATED"] = 0] = "PROVING_STATE_CREATED";
|
|
5
|
+
PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_RESOLVED"] = 1] = "PROVING_STATE_RESOLVED";
|
|
6
|
+
PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_REJECTED"] = 2] = "PROVING_STATE_REJECTED";
|
|
7
|
+
})(PROVING_STATE_LIFECYCLE || (PROVING_STATE_LIFECYCLE = {}));
|
|
8
|
+
/**
|
|
9
|
+
* The current state of the proving schedule for a given block. Managed by ProvingState.
|
|
10
|
+
* Contains the raw inputs and intermediate state to generate every constituent proof in the tree.
|
|
11
|
+
*/
|
|
12
|
+
export class BlockProvingState {
|
|
13
|
+
constructor(index, totalNumTxs, globalVariables, newL1ToL2Messages, messageTreeSnapshot, messageTreeRootSiblingPath, messageTreeSnapshotAfterInsertion, archiveTreeSnapshot, archiveTreeRootSiblingPath, previousBlockHash, completionCallback, rejectionCallback) {
|
|
14
|
+
this.index = index;
|
|
15
|
+
this.totalNumTxs = totalNumTxs;
|
|
16
|
+
this.globalVariables = globalVariables;
|
|
17
|
+
this.newL1ToL2Messages = newL1ToL2Messages;
|
|
18
|
+
this.messageTreeSnapshot = messageTreeSnapshot;
|
|
19
|
+
this.messageTreeRootSiblingPath = messageTreeRootSiblingPath;
|
|
20
|
+
this.messageTreeSnapshotAfterInsertion = messageTreeSnapshotAfterInsertion;
|
|
21
|
+
this.archiveTreeSnapshot = archiveTreeSnapshot;
|
|
22
|
+
this.archiveTreeRootSiblingPath = archiveTreeRootSiblingPath;
|
|
23
|
+
this.previousBlockHash = previousBlockHash;
|
|
24
|
+
this.completionCallback = completionCallback;
|
|
25
|
+
this.rejectionCallback = rejectionCallback;
|
|
26
|
+
this.mergeRollupInputs = [];
|
|
27
|
+
this.rootParityInputs = [];
|
|
28
|
+
this.txs = [];
|
|
29
|
+
this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED;
|
|
30
|
+
this.rootParityInputs = Array.from({ length: NUM_BASE_PARITY_PER_ROOT_PARITY }).map(_ => undefined);
|
|
31
|
+
}
|
|
32
|
+
get blockNumber() {
|
|
33
|
+
return this.globalVariables.blockNumber.toNumber();
|
|
34
|
+
}
|
|
35
|
+
// Returns the number of levels of merge rollups
|
|
36
|
+
get numMergeLevels() {
|
|
37
|
+
return BigInt(Math.ceil(Math.log2(this.totalNumTxs)) - 1);
|
|
38
|
+
}
|
|
39
|
+
// Calculates the index and level of the parent rollup circuit
|
|
40
|
+
// Based on tree implementation in unbalanced_tree.ts -> batchInsert()
|
|
41
|
+
findMergeLevel(currentLevel, currentIndex) {
|
|
42
|
+
const moveUpMergeLevel = (levelSize, index, nodeToShift) => {
|
|
43
|
+
levelSize /= 2;
|
|
44
|
+
if (levelSize & 1) {
|
|
45
|
+
[levelSize, nodeToShift] = nodeToShift ? [levelSize + 1, false] : [levelSize - 1, true];
|
|
46
|
+
}
|
|
47
|
+
index >>= 1n;
|
|
48
|
+
return { thisLevelSize: levelSize, thisIndex: index, shiftUp: nodeToShift };
|
|
49
|
+
};
|
|
50
|
+
let [thisLevelSize, shiftUp] = this.totalNumTxs & 1 ? [this.totalNumTxs - 1, true] : [this.totalNumTxs, false];
|
|
51
|
+
const maxLevel = this.numMergeLevels + 1n;
|
|
52
|
+
let placeholder = currentIndex;
|
|
53
|
+
for (let i = 0; i < maxLevel - currentLevel; i++) {
|
|
54
|
+
({ thisLevelSize, thisIndex: placeholder, shiftUp } = moveUpMergeLevel(thisLevelSize, placeholder, shiftUp));
|
|
55
|
+
}
|
|
56
|
+
let thisIndex = currentIndex;
|
|
57
|
+
let mergeLevel = currentLevel;
|
|
58
|
+
while (thisIndex >= thisLevelSize && mergeLevel != 0n) {
|
|
59
|
+
mergeLevel -= 1n;
|
|
60
|
+
({ thisLevelSize, thisIndex, shiftUp } = moveUpMergeLevel(thisLevelSize, thisIndex, shiftUp));
|
|
61
|
+
}
|
|
62
|
+
return [mergeLevel - 1n, thisIndex >> 1n, thisIndex & 1n];
|
|
63
|
+
}
|
|
64
|
+
// Adds a transaction to the proving state, returns it's index
|
|
65
|
+
addNewTx(tx) {
|
|
66
|
+
this.txs.push(tx);
|
|
67
|
+
return this.txs.length - 1;
|
|
68
|
+
}
|
|
69
|
+
// Returns the number of received transactions
|
|
70
|
+
get transactionsReceived() {
|
|
71
|
+
return this.txs.length;
|
|
72
|
+
}
|
|
73
|
+
// Returns the final set of root parity inputs
|
|
74
|
+
get finalRootParityInput() {
|
|
75
|
+
return this.finalRootParityInputs;
|
|
76
|
+
}
|
|
77
|
+
// Sets the final set of root parity inputs
|
|
78
|
+
set finalRootParityInput(input) {
|
|
79
|
+
this.finalRootParityInputs = input;
|
|
80
|
+
}
|
|
81
|
+
// Returns the set of root parity inputs
|
|
82
|
+
get rootParityInput() {
|
|
83
|
+
return this.rootParityInputs;
|
|
84
|
+
}
|
|
85
|
+
// Returns the complete set of transaction proving state objects
|
|
86
|
+
get allTxs() {
|
|
87
|
+
return this.txs;
|
|
88
|
+
}
|
|
89
|
+
/** Returns the block number as an epoch number. Used for prioritizing proof requests. */
|
|
90
|
+
get epochNumber() {
|
|
91
|
+
return this.globalVariables.blockNumber.toNumber();
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Stores the inputs to a merge circuit and determines if the circuit is ready to be executed
|
|
95
|
+
* @param mergeInputs - The inputs to store
|
|
96
|
+
* @param indexWithinMerge - The index in the set of inputs to this merge circuit
|
|
97
|
+
* @param indexOfMerge - The global index of this merge circuit
|
|
98
|
+
* @returns True if the merge circuit is ready to be executed, false otherwise
|
|
99
|
+
*/
|
|
100
|
+
storeMergeInputs(mergeInputs, indexWithinMerge, indexOfMerge) {
|
|
101
|
+
if (!this.mergeRollupInputs[indexOfMerge]) {
|
|
102
|
+
const mergeInputData = {
|
|
103
|
+
inputs: [undefined, undefined],
|
|
104
|
+
proofs: [undefined, undefined],
|
|
105
|
+
verificationKeys: [undefined, undefined],
|
|
106
|
+
};
|
|
107
|
+
mergeInputData.inputs[indexWithinMerge] = mergeInputs[0];
|
|
108
|
+
mergeInputData.proofs[indexWithinMerge] = mergeInputs[1];
|
|
109
|
+
mergeInputData.verificationKeys[indexWithinMerge] = mergeInputs[2];
|
|
110
|
+
this.mergeRollupInputs[indexOfMerge] = mergeInputData;
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
const mergeInputData = this.mergeRollupInputs[indexOfMerge];
|
|
114
|
+
mergeInputData.inputs[indexWithinMerge] = mergeInputs[0];
|
|
115
|
+
mergeInputData.proofs[indexWithinMerge] = mergeInputs[1];
|
|
116
|
+
mergeInputData.verificationKeys[indexWithinMerge] = mergeInputs[2];
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
// Returns a specific transaction proving state
|
|
120
|
+
getTxProvingState(txIndex) {
|
|
121
|
+
return this.txs[txIndex];
|
|
122
|
+
}
|
|
123
|
+
// Returns a set of merge rollup inputs
|
|
124
|
+
getMergeInputs(indexOfMerge) {
|
|
125
|
+
return this.mergeRollupInputs[indexOfMerge];
|
|
126
|
+
}
|
|
127
|
+
// Returns true if we have sufficient inputs to execute the block root rollup
|
|
128
|
+
isReadyForBlockRootRollup() {
|
|
129
|
+
return !(this.mergeRollupInputs[0] === undefined ||
|
|
130
|
+
this.finalRootParityInput === undefined ||
|
|
131
|
+
this.mergeRollupInputs[0].inputs.findIndex(p => !p) !== -1);
|
|
132
|
+
}
|
|
133
|
+
// Stores a set of root parity inputs at the given index
|
|
134
|
+
setRootParityInputs(inputs, index) {
|
|
135
|
+
this.rootParityInputs[index] = inputs;
|
|
136
|
+
}
|
|
137
|
+
// Returns true if we have sufficient root parity inputs to execute the root parity circuit
|
|
138
|
+
areRootParityInputsReady() {
|
|
139
|
+
return this.rootParityInputs.findIndex(p => !p) === -1;
|
|
140
|
+
}
|
|
141
|
+
// Returns true if we are still able to accept transactions, false otherwise
|
|
142
|
+
isAcceptingTransactions() {
|
|
143
|
+
return (this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED && this.totalNumTxs > this.txs.length);
|
|
144
|
+
}
|
|
145
|
+
// Returns true if this proving state is still valid, false otherwise
|
|
146
|
+
verifyState() {
|
|
147
|
+
return this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED;
|
|
148
|
+
}
|
|
149
|
+
// Attempts to reject the proving state promise with the given reason
|
|
150
|
+
reject(reason) {
|
|
151
|
+
if (!this.verifyState()) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_REJECTED;
|
|
155
|
+
if (this.rejectionCallback) {
|
|
156
|
+
this.rejectionCallback(reason);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Attempts to resolve the proving state promise with the given result
|
|
160
|
+
resolve(result) {
|
|
161
|
+
if (!this.verifyState()) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_RESOLVED;
|
|
165
|
+
if (this.completionCallback) {
|
|
166
|
+
this.completionCallback(result);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stcHJvdmluZy1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvYmxvY2stcHJvdmluZy1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBVUwsK0JBQStCLEdBTWhDLE1BQU0sb0JBQW9CLENBQUM7QUFLNUIsSUFBSyx1QkFJSjtBQUpELFdBQUssdUJBQXVCO0lBQzFCLHVHQUFxQixDQUFBO0lBQ3JCLHlHQUFzQixDQUFBO0lBQ3RCLHlHQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFKSSx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBSTNCO0FBYUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQVc1QixZQUNrQixLQUFhLEVBQ2IsV0FBbUIsRUFDbkIsZUFBZ0MsRUFDaEMsaUJBQXdFLEVBQ3hFLG1CQUEyQyxFQUMzQywwQkFBc0YsRUFDdEYsaUNBQXlELEVBQ3pELG1CQUEyQyxFQUMzQywwQkFBNEQsRUFDNUQsaUJBQXFCLEVBQzdCLGtCQUFvRCxFQUNwRCxpQkFBNEM7UUFYcEMsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXVEO1FBQ3hFLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFDM0MsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0RDtRQUN0RixzQ0FBaUMsR0FBakMsaUNBQWlDLENBQXdCO1FBQ3pELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFDM0MsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUFrQztRQUM1RCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQUk7UUFDN0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFrQztRQUNwRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTJCO1FBdEI5QyxzQkFBaUIsR0FBMkIsRUFB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
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type MerkleTreeId, type ProvingResult } from '@aztec/circuit-types';
|
|
2
|
+
import { type ARCHIVE_HEIGHT, type AppendOnlyTreeSnapshot, type BlockRootOrBlockMergePublicInputs, Fr, type GlobalVariables, type L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, type NESTED_RECURSIVE_PROOF_LENGTH, type Proof, type RecursiveProof, type RootRollupPublicInputs, type VerificationKeyAsFields } from '@aztec/circuits.js';
|
|
3
|
+
import { type Tuple } from '@aztec/foundation/serialize';
|
|
4
|
+
import { BlockProvingState } from './block-proving-state.js';
|
|
5
|
+
export type TreeSnapshots = Map<MerkleTreeId, AppendOnlyTreeSnapshot>;
|
|
6
|
+
export type BlockMergeRollupInputData = {
|
|
7
|
+
inputs: [BlockRootOrBlockMergePublicInputs | undefined, BlockRootOrBlockMergePublicInputs | undefined];
|
|
8
|
+
proofs: [
|
|
9
|
+
RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH> | undefined,
|
|
10
|
+
RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH> | undefined
|
|
11
|
+
];
|
|
12
|
+
verificationKeys: [VerificationKeyAsFields | undefined, VerificationKeyAsFields | undefined];
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* The current state of the proving schedule for an epoch.
|
|
16
|
+
* Contains the raw inputs and intermediate state to generate every constituent proof in the tree.
|
|
17
|
+
* Carries an identifier so we can identify if the proving state is discarded and a new one started.
|
|
18
|
+
* Captures resolve and reject callbacks to provide a promise base interface to the consumer of our proving.
|
|
19
|
+
*/
|
|
20
|
+
export declare class EpochProvingState {
|
|
21
|
+
readonly epochNumber: number;
|
|
22
|
+
readonly totalNumBlocks: number;
|
|
23
|
+
private completionCallback;
|
|
24
|
+
private rejectionCallback;
|
|
25
|
+
private provingStateLifecycle;
|
|
26
|
+
private mergeRollupInputs;
|
|
27
|
+
rootRollupPublicInputs: RootRollupPublicInputs | undefined;
|
|
28
|
+
finalProof: Proof | undefined;
|
|
29
|
+
blocks: BlockProvingState[];
|
|
30
|
+
constructor(epochNumber: number, totalNumBlocks: number, completionCallback: (result: ProvingResult) => void, rejectionCallback: (reason: string) => void);
|
|
31
|
+
/** Returns the current block proving state */
|
|
32
|
+
get currentBlock(): BlockProvingState | undefined;
|
|
33
|
+
get numMergeLevels(): bigint;
|
|
34
|
+
findMergeLevel(currentLevel: bigint, currentIndex: bigint): bigint[];
|
|
35
|
+
startNewBlock(numTxs: number, globalVariables: GlobalVariables, l1ToL2Messages: Fr[], messageTreeSnapshot: AppendOnlyTreeSnapshot, messageTreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>, messageTreeSnapshotAfterInsertion: AppendOnlyTreeSnapshot, archiveTreeSnapshot: AppendOnlyTreeSnapshot, archiveTreeRootSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, previousBlockHash: Fr, completionCallback?: (result: ProvingResult) => void, rejectionCallback?: (reason: string) => void): number;
|
|
36
|
+
verifyState(): boolean;
|
|
37
|
+
isAcceptingBlocks(): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Stores the inputs to a merge circuit and determines if the circuit is ready to be executed
|
|
40
|
+
* @param mergeInputs - The inputs to store
|
|
41
|
+
* @param indexWithinMerge - The index in the set of inputs to this merge circuit
|
|
42
|
+
* @param indexOfMerge - The global index of this merge circuit
|
|
43
|
+
* @returns True if the merge circuit is ready to be executed, false otherwise
|
|
44
|
+
*/
|
|
45
|
+
storeMergeInputs(mergeInputs: [
|
|
46
|
+
BlockRootOrBlockMergePublicInputs,
|
|
47
|
+
RecursiveProof<typeof NESTED_RECURSIVE_PROOF_LENGTH>,
|
|
48
|
+
VerificationKeyAsFields
|
|
49
|
+
], indexWithinMerge: number, indexOfMerge: number): boolean;
|
|
50
|
+
getBlockProvingState(index: number): BlockProvingState;
|
|
51
|
+
getMergeInputs(indexOfMerge: number): BlockMergeRollupInputData;
|
|
52
|
+
isReadyForRootRollup(): boolean;
|
|
53
|
+
cancel(): void;
|
|
54
|
+
reject(reason: string): void;
|
|
55
|
+
resolve(result: ProvingResult): void;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=epoch-proving-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"epoch-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,iCAAiC,EACtC,EAAE,EACF,KAAK,eAAe,EACpB,KAAK,wCAAwC,EAC7C,KAAK,6BAA6B,EAElC,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;AAStE,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,CAAC,iCAAiC,GAAG,SAAS,EAAE,iCAAiC,GAAG,SAAS,CAAC,CAAC;IACvG,MAAM,EAAE;QACN,cAAc,CAAC,OAAO,6BAA6B,CAAC,GAAG,SAAS;QAChE,cAAc,CAAC,OAAO,6BAA6B,CAAC,GAAG,SAAS;KACjE,CAAC;IACF,gBAAgB,EAAE,CAAC,uBAAuB,GAAG,SAAS,EAAE,uBAAuB,GAAG,SAAS,CAAC,CAAC;CAC9F,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,iBAAiB;aASV,WAAW,EAAE,MAAM;aACnB,cAAc,EAAE,MAAM;IACtC,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,iBAAiB;IAX3B,OAAO,CAAC,qBAAqB,CAAiD;IAE9E,OAAO,CAAC,iBAAiB,CAAmC;IACrD,sBAAsB,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC3D,UAAU,EAAE,KAAK,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,iBAAiB,EAAE,CAAM;gBAGtB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EAC9B,kBAAkB,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,EACnD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAGrD,8CAA8C;IAC9C,IAAW,YAAY,IAAI,iBAAiB,GAAG,SAAS,CAEvD;IAGD,IAAW,cAAc,WAExB;IAKM,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IA2BzD,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,EAAE,EAAE,EACpB,mBAAmB,EAAE,sBAAsB,EAC3C,0BAA0B,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,wCAAwC,CAAC,EACtF,iCAAiC,EAAE,sBAAsB,EACzD,mBAAmB,EAAE,sBAAsB,EAC3C,0BAA0B,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,cAAc,CAAC,EAC5D,iBAAiB,EAAE,EAAE,EACrB,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,EACpD,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IA+BvC,WAAW;IAQX,iBAAiB;IAIxB;;;;;;OAMG;IACI,gBAAgB,CACrB,WAAW,EAAE;QACX,iCAAiC;QACjC,cAAc,CAAC,OAAO,6BAA6B,CAAC;QACpD,uBAAuB;KACxB,EACD,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,MAAM;IAsBf,oBAAoB,CAAC,KAAK,EAAE,MAAM;IAKlC,cAAc,CAAC,YAAY,EAAE,MAAM;IAKnC,oBAAoB;IAKpB,MAAM;IAMN,MAAM,CAAC,MAAM,EAAE,MAAM;IAcrB,OAAO,CAAC,MAAM,EAAE,aAAa;CAOrC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { Fr, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, } from '@aztec/circuits.js';
|
|
2
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
|
+
import { BlockProvingState } from './block-proving-state.js';
|
|
4
|
+
var PROVING_STATE_LIFECYCLE;
|
|
5
|
+
(function (PROVING_STATE_LIFECYCLE) {
|
|
6
|
+
PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_CREATED"] = 0] = "PROVING_STATE_CREATED";
|
|
7
|
+
PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_FULL"] = 1] = "PROVING_STATE_FULL";
|
|
8
|
+
PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_RESOLVED"] = 2] = "PROVING_STATE_RESOLVED";
|
|
9
|
+
PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_REJECTED"] = 3] = "PROVING_STATE_REJECTED";
|
|
10
|
+
})(PROVING_STATE_LIFECYCLE || (PROVING_STATE_LIFECYCLE = {}));
|
|
11
|
+
/**
|
|
12
|
+
* The current state of the proving schedule for an epoch.
|
|
13
|
+
* Contains the raw inputs and intermediate state to generate every constituent proof in the tree.
|
|
14
|
+
* Carries an identifier so we can identify if the proving state is discarded and a new one started.
|
|
15
|
+
* Captures resolve and reject callbacks to provide a promise base interface to the consumer of our proving.
|
|
16
|
+
*/
|
|
17
|
+
export class EpochProvingState {
|
|
18
|
+
constructor(epochNumber, totalNumBlocks, completionCallback, rejectionCallback) {
|
|
19
|
+
this.epochNumber = epochNumber;
|
|
20
|
+
this.totalNumBlocks = totalNumBlocks;
|
|
21
|
+
this.completionCallback = completionCallback;
|
|
22
|
+
this.rejectionCallback = rejectionCallback;
|
|
23
|
+
this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED;
|
|
24
|
+
this.mergeRollupInputs = [];
|
|
25
|
+
this.blocks = [];
|
|
26
|
+
}
|
|
27
|
+
/** Returns the current block proving state */
|
|
28
|
+
get currentBlock() {
|
|
29
|
+
return this.blocks[this.blocks.length - 1];
|
|
30
|
+
}
|
|
31
|
+
// Returns the number of levels of merge rollups
|
|
32
|
+
get numMergeLevels() {
|
|
33
|
+
return BigInt(Math.ceil(Math.log2(this.totalNumBlocks)) - 1);
|
|
34
|
+
}
|
|
35
|
+
// Calculates the index and level of the parent rollup circuit
|
|
36
|
+
// Based on tree implementation in unbalanced_tree.ts -> batchInsert()
|
|
37
|
+
// REFACTOR: This is repeated from the block orchestrator
|
|
38
|
+
findMergeLevel(currentLevel, currentIndex) {
|
|
39
|
+
const moveUpMergeLevel = (levelSize, index, nodeToShift) => {
|
|
40
|
+
levelSize /= 2;
|
|
41
|
+
if (levelSize & 1) {
|
|
42
|
+
[levelSize, nodeToShift] = nodeToShift ? [levelSize + 1, false] : [levelSize - 1, true];
|
|
43
|
+
}
|
|
44
|
+
index >>= 1n;
|
|
45
|
+
return { thisLevelSize: levelSize, thisIndex: index, shiftUp: nodeToShift };
|
|
46
|
+
};
|
|
47
|
+
let [thisLevelSize, shiftUp] = this.totalNumBlocks & 1 ? [this.totalNumBlocks - 1, true] : [this.totalNumBlocks, false];
|
|
48
|
+
const maxLevel = this.numMergeLevels + 1n;
|
|
49
|
+
let placeholder = currentIndex;
|
|
50
|
+
for (let i = 0; i < maxLevel - currentLevel; i++) {
|
|
51
|
+
({ thisLevelSize, thisIndex: placeholder, shiftUp } = moveUpMergeLevel(thisLevelSize, placeholder, shiftUp));
|
|
52
|
+
}
|
|
53
|
+
let thisIndex = currentIndex;
|
|
54
|
+
let mergeLevel = currentLevel;
|
|
55
|
+
while (thisIndex >= thisLevelSize && mergeLevel != 0n) {
|
|
56
|
+
mergeLevel -= 1n;
|
|
57
|
+
({ thisLevelSize, thisIndex, shiftUp } = moveUpMergeLevel(thisLevelSize, thisIndex, shiftUp));
|
|
58
|
+
}
|
|
59
|
+
return [mergeLevel - 1n, thisIndex >> 1n, thisIndex & 1n];
|
|
60
|
+
}
|
|
61
|
+
// Adds a block to the proving state, returns its index
|
|
62
|
+
// Will update the proving life cycle if this is the last block
|
|
63
|
+
startNewBlock(numTxs, globalVariables, l1ToL2Messages, messageTreeSnapshot, messageTreeRootSiblingPath, messageTreeSnapshotAfterInsertion, archiveTreeSnapshot, archiveTreeRootSiblingPath, previousBlockHash, completionCallback, rejectionCallback) {
|
|
64
|
+
const block = new BlockProvingState(this.blocks.length, numTxs, globalVariables, padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP), messageTreeSnapshot, messageTreeRootSiblingPath, messageTreeSnapshotAfterInsertion, archiveTreeSnapshot, archiveTreeRootSiblingPath, previousBlockHash, completionCallback, reason => {
|
|
65
|
+
// Reject the block
|
|
66
|
+
if (rejectionCallback) {
|
|
67
|
+
rejectionCallback(reason);
|
|
68
|
+
}
|
|
69
|
+
// An error on any block rejects this whole epoch
|
|
70
|
+
this.reject(reason);
|
|
71
|
+
});
|
|
72
|
+
this.blocks.push(block);
|
|
73
|
+
if (this.blocks.length === this.totalNumBlocks) {
|
|
74
|
+
this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_FULL;
|
|
75
|
+
}
|
|
76
|
+
return this.blocks.length - 1;
|
|
77
|
+
}
|
|
78
|
+
// Returns true if this proving state is still valid, false otherwise
|
|
79
|
+
verifyState() {
|
|
80
|
+
return (this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED ||
|
|
81
|
+
this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_FULL);
|
|
82
|
+
}
|
|
83
|
+
// Returns true if we are still able to accept blocks, false otherwise
|
|
84
|
+
isAcceptingBlocks() {
|
|
85
|
+
return this.provingStateLifecycle === PROVING_STATE_LIFECYCLE.PROVING_STATE_CREATED;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Stores the inputs to a merge circuit and determines if the circuit is ready to be executed
|
|
89
|
+
* @param mergeInputs - The inputs to store
|
|
90
|
+
* @param indexWithinMerge - The index in the set of inputs to this merge circuit
|
|
91
|
+
* @param indexOfMerge - The global index of this merge circuit
|
|
92
|
+
* @returns True if the merge circuit is ready to be executed, false otherwise
|
|
93
|
+
*/
|
|
94
|
+
storeMergeInputs(mergeInputs, indexWithinMerge, indexOfMerge) {
|
|
95
|
+
if (!this.mergeRollupInputs[indexOfMerge]) {
|
|
96
|
+
const mergeInputData = {
|
|
97
|
+
inputs: [undefined, undefined],
|
|
98
|
+
proofs: [undefined, undefined],
|
|
99
|
+
verificationKeys: [undefined, undefined],
|
|
100
|
+
};
|
|
101
|
+
mergeInputData.inputs[indexWithinMerge] = mergeInputs[0];
|
|
102
|
+
mergeInputData.proofs[indexWithinMerge] = mergeInputs[1];
|
|
103
|
+
mergeInputData.verificationKeys[indexWithinMerge] = mergeInputs[2];
|
|
104
|
+
this.mergeRollupInputs[indexOfMerge] = mergeInputData;
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
const mergeInputData = this.mergeRollupInputs[indexOfMerge];
|
|
108
|
+
mergeInputData.inputs[indexWithinMerge] = mergeInputs[0];
|
|
109
|
+
mergeInputData.proofs[indexWithinMerge] = mergeInputs[1];
|
|
110
|
+
mergeInputData.verificationKeys[indexWithinMerge] = mergeInputs[2];
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
// Returns a specific transaction proving state
|
|
114
|
+
getBlockProvingState(index) {
|
|
115
|
+
return this.blocks[index];
|
|
116
|
+
}
|
|
117
|
+
// Returns a set of merge rollup inputs
|
|
118
|
+
getMergeInputs(indexOfMerge) {
|
|
119
|
+
return this.mergeRollupInputs[indexOfMerge];
|
|
120
|
+
}
|
|
121
|
+
// Returns true if we have sufficient inputs to execute the block root rollup
|
|
122
|
+
isReadyForRootRollup() {
|
|
123
|
+
return !(this.mergeRollupInputs[0] === undefined || this.mergeRollupInputs[0].inputs.findIndex(p => !p) !== -1);
|
|
124
|
+
}
|
|
125
|
+
// Attempts to reject the proving state promise with a reason of 'cancelled'
|
|
126
|
+
cancel() {
|
|
127
|
+
this.reject('Proving cancelled');
|
|
128
|
+
}
|
|
129
|
+
// Attempts to reject the proving state promise with the given reason
|
|
130
|
+
// Does nothing if not in a valid state
|
|
131
|
+
reject(reason) {
|
|
132
|
+
if (!this.verifyState()) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_REJECTED;
|
|
136
|
+
this.rejectionCallback(reason);
|
|
137
|
+
for (const block of this.blocks) {
|
|
138
|
+
block.reject('Proving cancelled');
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Attempts to resolve the proving state promise with the given result
|
|
142
|
+
// Does nothing if not in a valid state
|
|
143
|
+
resolve(result) {
|
|
144
|
+
if (!this.verifyState()) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
this.provingStateLifecycle = PROVING_STATE_LIFECYCLE.PROVING_STATE_RESOLVED;
|
|
148
|
+
this.completionCallback(result);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtcHJvdmluZy1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvZXBvY2gtcHJvdmluZy1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBSUwsRUFBRSxFQUlGLG1DQUFtQyxHQUtwQyxNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUczRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUk3RCxJQUFLLHVCQUtKO0FBTEQsV0FBSyx1QkFBdUI7SUFDMUIsdUdBQXFCLENBQUE7SUFDckIsaUdBQWtCLENBQUE7SUFDbEIseUdBQXNCLENBQUE7SUFDdEIseUdBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQUxJLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFLM0I7QUFXRDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFRNUIsWUFDa0IsV0FBbUIsRUFDbkIsY0FBc0IsRUFDOUIsa0JBQW1ELEVBQ25ELGlCQUEyQztRQUhuQyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUM5Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWlDO1FBQ25ELHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFYN0MsMEJBQXFCLEdBQUcsdUJBQXVCLENBQUMscUJBQXFCLENBQUM7UUFFdEUsc0JBQWlCLEdBQWdDLEVBQUUsQ0FBQztRQUdyRCxXQUFNLEdBQXdCLEVBQUUsQ0FBQztJQU9yQyxDQUFDO0lBRUosOENBQThDO0lBQzlDLElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGdEQUFnRDtJQUNoRCxJQUFXLGNBQWM7UUFD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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type ProcessedTx } from '@aztec/circuit-types';
|
|
2
|
-
import { type
|
|
3
|
-
import { Fr, type GlobalVariables } from '@aztec/circuits.js';
|
|
1
|
+
import { type ProcessedTx, type ProvingBlockResult, type ProvingTicket, type ServerCircuitProver } from '@aztec/circuit-types';
|
|
2
|
+
import { type EpochProver } from '@aztec/circuit-types/interfaces';
|
|
3
|
+
import { Fr, type GlobalVariables, type Proof } from '@aztec/circuits.js';
|
|
4
4
|
import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
|
|
5
5
|
import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
6
6
|
/**
|
|
@@ -16,7 +16,7 @@ import { type MerkleTreeOperations } from '@aztec/world-state';
|
|
|
16
16
|
/**
|
|
17
17
|
* The orchestrator, managing the flow of recursive proving operations required to build the rollup proof tree.
|
|
18
18
|
*/
|
|
19
|
-
export declare class ProvingOrchestrator implements
|
|
19
|
+
export declare class ProvingOrchestrator implements EpochProver {
|
|
20
20
|
private db;
|
|
21
21
|
private prover;
|
|
22
22
|
private readonly proverId;
|
|
@@ -31,6 +31,7 @@ export declare class ProvingOrchestrator implements BlockProver {
|
|
|
31
31
|
* Resets the orchestrator's cached padding tx.
|
|
32
32
|
*/
|
|
33
33
|
reset(): void;
|
|
34
|
+
startNewEpoch(epochNumber: number, totalNumBlocks: number): ProvingTicket;
|
|
34
35
|
/**
|
|
35
36
|
* Starts off a new block
|
|
36
37
|
* @param numTxs - The total number of transactions in the block. Must be a power of 2
|
|
@@ -47,8 +48,10 @@ export declare class ProvingOrchestrator implements BlockProver {
|
|
|
47
48
|
addNewTx(tx: ProcessedTx): Promise<void>;
|
|
48
49
|
/**
|
|
49
50
|
* Marks the block as full and pads it if required, no more transactions will be accepted.
|
|
51
|
+
* Computes the block header and updates the archive tree.
|
|
50
52
|
*/
|
|
51
53
|
setBlockCompleted(): Promise<void>;
|
|
54
|
+
private buildBlockHeader;
|
|
52
55
|
private enqueuePaddingTxs;
|
|
53
56
|
/**
|
|
54
57
|
* Prepares the cached sets of base rollup inputs for padding transactions and proves them
|
|
@@ -58,20 +61,28 @@ export declare class ProvingOrchestrator implements BlockProver {
|
|
|
58
61
|
*/
|
|
59
62
|
private provePaddingTransactions;
|
|
60
63
|
/**
|
|
61
|
-
* Cancel any further proving
|
|
64
|
+
* Cancel any further proving
|
|
62
65
|
*/
|
|
63
|
-
|
|
66
|
+
cancel(): void;
|
|
64
67
|
/**
|
|
65
68
|
* Extract the block header from public inputs.
|
|
66
|
-
* TODO(#7346): Refactor this once new batch rollup circuits are integrated
|
|
67
69
|
* @returns The header of this proving state's block.
|
|
68
70
|
*/
|
|
69
|
-
private
|
|
71
|
+
private extractBlockHeaderFromPublicInputs;
|
|
70
72
|
/**
|
|
71
|
-
*
|
|
73
|
+
* Returns the fully proven block. Requires proving to have been completed.
|
|
74
|
+
* @param index - The index of the block to finalise. Defaults to the last block.
|
|
72
75
|
* @returns The fully proven block and proof.
|
|
73
76
|
*/
|
|
74
|
-
finaliseBlock(): Promise<ProvingBlockResult>;
|
|
77
|
+
finaliseBlock(index?: number): Promise<ProvingBlockResult>;
|
|
78
|
+
/**
|
|
79
|
+
* Returns the proof for the current epoch.
|
|
80
|
+
* Requires proving to have been completed.
|
|
81
|
+
*/
|
|
82
|
+
finaliseEpoch(): {
|
|
83
|
+
proof: Proof;
|
|
84
|
+
publicInputs: import("@aztec/circuits.js").RootRollupPublicInputs;
|
|
85
|
+
};
|
|
75
86
|
/**
|
|
76
87
|
* Starts the proving process for the given transaction and adds it to our state
|
|
77
88
|
* @param tx - The transaction whose proving we wish to commence
|
|
@@ -87,14 +98,16 @@ export declare class ProvingOrchestrator implements BlockProver {
|
|
|
87
98
|
*/
|
|
88
99
|
private deferredProving;
|
|
89
100
|
private prepareBaseRollupInputs;
|
|
90
|
-
private storeMergeInputs;
|
|
91
101
|
private enqueueBaseRollup;
|
|
92
102
|
private enqueueTube;
|
|
93
103
|
private enqueueMergeRollup;
|
|
94
104
|
private enqueueBlockRootRollup;
|
|
95
105
|
private enqueueBaseParityCircuit;
|
|
96
106
|
private enqueueRootParityCircuit;
|
|
107
|
+
private enqueueBlockMergeRollup;
|
|
108
|
+
private enqueueRootRollup;
|
|
97
109
|
private checkAndEnqueueBlockRootRollup;
|
|
110
|
+
private checkAndEnqueueRootRollup;
|
|
98
111
|
/**
|
|
99
112
|
* Stores the inputs to a merge/root circuit and enqueues the circuit if ready
|
|
100
113
|
* @param provingState - The proving state being operated on
|
|
@@ -103,6 +116,14 @@ export declare class ProvingOrchestrator implements BlockProver {
|
|
|
103
116
|
* @param mergeInputData - The inputs to be stored
|
|
104
117
|
*/
|
|
105
118
|
private storeAndExecuteNextMergeLevel;
|
|
119
|
+
/**
|
|
120
|
+
* Stores the inputs to a block merge/root circuit and enqueues the circuit if ready
|
|
121
|
+
* @param provingState - The proving state being operated on
|
|
122
|
+
* @param currentLevel - The level of the merge/root circuit
|
|
123
|
+
* @param currentIndex - The index of the merge/root circuit
|
|
124
|
+
* @param mergeInputData - The inputs to be stored
|
|
125
|
+
*/
|
|
126
|
+
private storeAndExecuteNextBlockMergeLevel;
|
|
106
127
|
/**
|
|
107
128
|
* Executes the VM circuit for a public function, will enqueue the corresponding kernel if the
|
|
108
129
|
* previous kernel is ready
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,WAAW,EAChB,KAAK,kBAAkB,EAGvB,KAAK,aAAa,EAElB,KAAK,mBAAmB,EAQzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAOL,EAAE,EACF,KAAK,eAAe,EAQpB,KAAK,KAAK,EAaX,MAAM,oBAAoB,CAAC;AAU5B,OAAO,EAAc,KAAK,eAAe,EAAE,KAAK,MAAM,EAAiC,MAAM,yBAAyB,CAAC;AACvH,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAyB/D;;;;;;;;;GASG;AAEH;;GAEG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IAQnD,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV3B,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,SAAS,CAA6C;IAE9D,OAAO,CAAC,OAAO,CAA6B;gBAGlC,EAAE,EAAE,oBAAoB,EACxB,MAAM,EAAE,mBAAmB,EACnC,eAAe,EAAE,eAAe,EACf,QAAQ,GAAE,EAAY;IAKzC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAEM,WAAW,IAAI,EAAE;IAIxB;;OAEG;IACI,KAAK;IAQL,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,aAAa;IAahF;;;;;;;OAOG;IAKU,aAAa,CACxB,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,EAAE,EAAE,GACnB,OAAO,CAAC,aAAa,CAAC;IA4FzB;;;OAGG;IAIU,QAAQ,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BrD;;;OAGG;IAYU,iBAAiB;YA8ChB,gBAAgB;IAsC9B,OAAO,CAAC,iBAAiB;IA4CzB;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAmBhC;;OAEG;IACI,MAAM;IAQb;;;OAGG;IACH,OAAO,CAAC,kCAAkC;IAmB1C;;;;OAIG;IACI,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM;IAiCnC;;;OAGG;IACI,aAAa;;;;IAQpB;;;;OAIG;YACW,kBAAkB;IAShC,OAAO,CAAC,kBAAkB;IAkB1B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;YA4DT,uBAAuB;IAyCrC,OAAO,CAAC,iBAAiB;IAgFzB,OAAO,CAAC,WAAW;IAoCnB,OAAO,CAAC,kBAAkB;IAiC1B,OAAO,CAAC,sBAAsB;IAkF9B,OAAO,CAAC,wBAAwB;IA6BhC,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,uBAAuB;IAiC/B,OAAO,CAAC,iBAAiB;IAsCzB,OAAO,CAAC,8BAA8B;IAQtC,OAAO,CAAC,yBAAyB;IAQjC;;;;;;OAMG;IACH,OAAO,CAAC,6BAA6B;IA+BrC;;;;;;OAMG;IACH,OAAO,CAAC,kCAAkC;IAqC1C;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAiDjB,OAAO,CAAC,sCAAsC;IAqB9C,OAAO,CAAC,4BAA4B;IAqCpC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;CAsD5B"}
|