@aztec/prover-client 0.69.1 → 0.71.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/bin/get-proof-inputs.d.ts +2 -0
- package/dest/bin/get-proof-inputs.d.ts.map +1 -0
- package/dest/bin/get-proof-inputs.js +50 -0
- package/dest/block_builder/light.d.ts +3 -5
- package/dest/block_builder/light.d.ts.map +1 -1
- package/dest/block_builder/light.js +9 -22
- package/dest/config.d.ts +2 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +3 -2
- package/dest/mocks/fixtures.d.ts +1 -1
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +2 -2
- package/dest/mocks/test_context.d.ts +1 -1
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +11 -12
- package/dest/orchestrator/block-building-helpers.d.ts +15 -29
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +51 -58
- package/dest/orchestrator/block-proving-state.d.ts +40 -44
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +149 -85
- package/dest/orchestrator/epoch-proving-state.d.ts +23 -30
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +92 -65
- package/dest/orchestrator/orchestrator.d.ts +17 -48
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +208 -351
- package/dest/orchestrator/tx-proving-state.d.ts +10 -6
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +57 -46
- package/dest/prover-agent/memory-proving-queue.d.ts +4 -4
- package/dest/prover-agent/memory-proving-queue.d.ts.map +1 -1
- package/dest/prover-agent/memory-proving-queue.js +5 -5
- package/dest/prover-agent/prover-agent.d.ts +0 -2
- package/dest/prover-agent/prover-agent.d.ts.map +1 -1
- package/dest/prover-agent/prover-agent.js +7 -9
- package/dest/prover-client/factory.d.ts.map +1 -1
- package/dest/prover-client/factory.js +3 -3
- package/dest/prover-client/prover-client.d.ts +4 -2
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +16 -15
- package/dest/prover-client/server-epoch-prover.d.ts +25 -0
- package/dest/prover-client/server-epoch-prover.d.ts.map +1 -0
- package/dest/prover-client/server-epoch-prover.js +40 -0
- package/dest/proving_broker/broker_prover_facade.d.ts +19 -7
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +271 -49
- package/dest/proving_broker/config.d.ts +61 -0
- package/dest/proving_broker/config.d.ts.map +1 -0
- package/dest/proving_broker/config.js +83 -0
- package/dest/proving_broker/factory.d.ts +1 -1
- package/dest/proving_broker/factory.d.ts.map +1 -1
- package/dest/proving_broker/factory.js +4 -7
- package/dest/proving_broker/fixtures.d.ts +5 -0
- package/dest/proving_broker/fixtures.d.ts.map +1 -0
- package/dest/proving_broker/fixtures.js +12 -0
- package/dest/proving_broker/index.d.ts +2 -1
- package/dest/proving_broker/index.d.ts.map +1 -1
- package/dest/proving_broker/index.js +3 -2
- package/dest/proving_broker/proof_store/factory.d.ts +6 -0
- package/dest/proving_broker/proof_store/factory.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/factory.js +39 -0
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +13 -0
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/gcs_proof_store.js +46 -0
- package/dest/proving_broker/proof_store/index.d.ts +4 -0
- package/dest/proving_broker/proof_store/index.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/index.js +4 -0
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts +14 -0
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/inline_proof_store.js +37 -0
- package/dest/proving_broker/{proof_store.d.ts → proof_store/proof_store.d.ts} +1 -12
- package/dest/proving_broker/proof_store/proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/proof_store.js +2 -0
- package/dest/proving_broker/proving_agent.d.ts +4 -4
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +5 -5
- package/dest/proving_broker/proving_broker.d.ts +16 -12
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +307 -274
- package/dest/proving_broker/proving_broker_database/memory.d.ts +4 -2
- package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/memory.js +17 -4
- package/dest/proving_broker/proving_broker_database/persisted.d.ts +10 -6
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +106 -14
- package/dest/proving_broker/proving_broker_database.d.ts +7 -3
- package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +4 -4
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +4 -4
- package/dest/test/mock_prover.d.ts +8 -8
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +9 -10
- package/package.json +14 -12
- package/src/bin/get-proof-inputs.ts +60 -0
- package/src/block_builder/light.ts +7 -31
- package/src/config.ts +4 -4
- package/src/mocks/fixtures.ts +1 -1
- package/src/mocks/test_context.ts +9 -11
- package/src/orchestrator/block-building-helpers.ts +360 -402
- package/src/orchestrator/block-proving-state.ts +251 -121
- package/src/orchestrator/epoch-proving-state.ts +159 -88
- package/src/orchestrator/orchestrator.ts +262 -542
- package/src/orchestrator/tx-proving-state.ts +30 -18
- package/src/prover-agent/memory-proving-queue.ts +12 -16
- package/src/prover-agent/prover-agent.ts +14 -8
- package/src/prover-client/factory.ts +2 -3
- package/src/prover-client/prover-client.ts +17 -20
- package/src/prover-client/server-epoch-prover.ts +44 -0
- package/src/proving_broker/broker_prover_facade.ts +347 -67
- package/src/proving_broker/config.ts +93 -0
- package/src/proving_broker/factory.ts +11 -10
- package/src/proving_broker/fixtures.ts +14 -0
- package/src/proving_broker/index.ts +2 -1
- package/src/proving_broker/proof_store/factory.ts +42 -0
- package/src/proving_broker/proof_store/gcs_proof_store.ts +72 -0
- package/src/proving_broker/proof_store/index.ts +3 -0
- package/src/proving_broker/{proof_store.ts → proof_store/inline_proof_store.ts} +1 -44
- package/src/proving_broker/proof_store/proof_store.ts +54 -0
- package/src/proving_broker/proving_agent.ts +11 -5
- package/src/proving_broker/proving_broker.ts +122 -73
- package/src/proving_broker/proving_broker_database/memory.ts +24 -4
- package/src/proving_broker/proving_broker_database/persisted.ts +142 -20
- package/src/proving_broker/proving_broker_database.ts +8 -3
- package/src/proving_broker/proving_job_controller.ts +5 -5
- package/src/proving_broker/rpc.ts +2 -3
- package/src/test/mock_prover.ts +12 -18
- package/dest/proving_broker/proof_store.d.ts.map +0 -1
- package/dest/proving_broker/proof_store.js +0 -37
|
@@ -1,11 +1,20 @@
|
|
|
1
|
-
|
|
1
|
+
var _BlockProvingState_instances, _BlockProvingState_getEmptyBlockRootInputs, _BlockProvingState_getBlockRootRollupData, _BlockProvingState_getChildProofsForBlockRoot, _BlockProvingState_getPreviousRollupData, _BlockProvingState_getRootParityInputFromProvingOutput;
|
|
2
|
+
import { __classPrivateFieldGet } from "tslib";
|
|
3
|
+
import { BLOBS_PER_BLOCK, FIELDS_PER_BLOB, Fr, MembershipWitness, NUM_BASE_PARITY_PER_ROOT_PARITY, RootParityInput, RootParityInputs, StateReference, VK_TREE_HEIGHT, } from '@aztec/circuits.js';
|
|
2
4
|
import { SpongeBlob } from '@aztec/circuits.js/blobs';
|
|
5
|
+
import { BlockRootRollupData, BlockRootRollupInputs, ConstantRollupData, EmptyBlockRootRollupInputs, MergeRollupInputs, PreviousRollupData, SingleTxBlockRootRollupInputs, } from '@aztec/circuits.js/rollup';
|
|
6
|
+
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
7
|
+
import { UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
8
|
+
import { getVKIndex, getVKSiblingPath, getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vks';
|
|
9
|
+
import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
|
|
10
|
+
import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-helpers.js';
|
|
3
11
|
/**
|
|
4
12
|
* The current state of the proving schedule for a given block. Managed by ProvingState.
|
|
5
13
|
* Contains the raw inputs and intermediate state to generate every constituent proof in the tree.
|
|
6
14
|
*/
|
|
7
15
|
export class BlockProvingState {
|
|
8
|
-
constructor(index, globalVariables, newL1ToL2Messages, messageTreeSnapshot, messageTreeRootSiblingPath, messageTreeSnapshotAfterInsertion, archiveTreeSnapshot, archiveTreeRootSiblingPath, previousBlockHash, parentEpoch) {
|
|
16
|
+
constructor(index, globalVariables, newL1ToL2Messages, messageTreeSnapshot, messageTreeRootSiblingPath, messageTreeSnapshotAfterInsertion, archiveTreeSnapshot, archiveTreeRootSiblingPath, previousBlockHeader, previousBlockHash, parentEpoch) {
|
|
17
|
+
_BlockProvingState_instances.add(this);
|
|
9
18
|
this.index = index;
|
|
10
19
|
this.globalVariables = globalVariables;
|
|
11
20
|
this.newL1ToL2Messages = newL1ToL2Messages;
|
|
@@ -14,51 +23,23 @@ export class BlockProvingState {
|
|
|
14
23
|
this.messageTreeSnapshotAfterInsertion = messageTreeSnapshotAfterInsertion;
|
|
15
24
|
this.archiveTreeSnapshot = archiveTreeSnapshot;
|
|
16
25
|
this.archiveTreeRootSiblingPath = archiveTreeRootSiblingPath;
|
|
26
|
+
this.previousBlockHeader = previousBlockHeader;
|
|
17
27
|
this.previousBlockHash = previousBlockHash;
|
|
18
28
|
this.parentEpoch = parentEpoch;
|
|
19
|
-
this.
|
|
20
|
-
this.rootParityInputs = [];
|
|
29
|
+
this.baseOrMergeProvingOutputs = new UnbalancedTreeStore(0);
|
|
21
30
|
this.blockRootRollupStarted = false;
|
|
22
31
|
this.txs = [];
|
|
23
|
-
this.
|
|
32
|
+
this.baseParityProvingOutputs = Array.from({ length: NUM_BASE_PARITY_PER_ROOT_PARITY }).map(_ => undefined);
|
|
24
33
|
this.totalNumTxs = 0;
|
|
25
34
|
}
|
|
26
35
|
get blockNumber() {
|
|
27
36
|
return this.globalVariables.blockNumber.toNumber();
|
|
28
37
|
}
|
|
29
|
-
// Returns the number of levels of merge rollups
|
|
30
|
-
get numMergeLevels() {
|
|
31
|
-
return BigInt(Math.ceil(Math.log2(this.totalNumTxs)) - 1);
|
|
32
|
-
}
|
|
33
|
-
// Calculates the index and level of the parent rollup circuit
|
|
34
|
-
// Based on tree implementation in unbalanced_tree.ts -> batchInsert()
|
|
35
|
-
findMergeLevel(currentLevel, currentIndex) {
|
|
36
|
-
const moveUpMergeLevel = (levelSize, index, nodeToShift) => {
|
|
37
|
-
levelSize /= 2;
|
|
38
|
-
if (levelSize & 1) {
|
|
39
|
-
[levelSize, nodeToShift] = nodeToShift ? [levelSize + 1, false] : [levelSize - 1, true];
|
|
40
|
-
}
|
|
41
|
-
index >>= 1n;
|
|
42
|
-
return { thisLevelSize: levelSize, thisIndex: index, shiftUp: nodeToShift };
|
|
43
|
-
};
|
|
44
|
-
let [thisLevelSize, shiftUp] = this.totalNumTxs & 1 ? [this.totalNumTxs - 1, true] : [this.totalNumTxs, false];
|
|
45
|
-
const maxLevel = this.numMergeLevels + 1n;
|
|
46
|
-
let placeholder = currentIndex;
|
|
47
|
-
for (let i = 0; i < maxLevel - currentLevel; i++) {
|
|
48
|
-
({ thisLevelSize, thisIndex: placeholder, shiftUp } = moveUpMergeLevel(thisLevelSize, placeholder, shiftUp));
|
|
49
|
-
}
|
|
50
|
-
let thisIndex = currentIndex;
|
|
51
|
-
let mergeLevel = currentLevel;
|
|
52
|
-
while (thisIndex >= thisLevelSize && mergeLevel != 0n) {
|
|
53
|
-
mergeLevel -= 1n;
|
|
54
|
-
({ thisLevelSize, thisIndex, shiftUp } = moveUpMergeLevel(thisLevelSize, thisIndex, shiftUp));
|
|
55
|
-
}
|
|
56
|
-
return [mergeLevel - 1n, thisIndex >> 1n, thisIndex & 1n];
|
|
57
|
-
}
|
|
58
38
|
startNewBlock(numTxs, numBlobFields) {
|
|
59
39
|
if (this.spongeBlobState) {
|
|
60
40
|
throw new Error(`Block ${this.blockNumber} already initalised.`);
|
|
61
41
|
}
|
|
42
|
+
this.baseOrMergeProvingOutputs = new UnbalancedTreeStore(numTxs);
|
|
62
43
|
// Initialise the sponge which will eventually absorb all tx effects to be added to the blob.
|
|
63
44
|
// Like l1 to l2 messages, we need to know beforehand how many effects will be absorbed.
|
|
64
45
|
this.spongeBlobState = SpongeBlob.init(numBlobFields);
|
|
@@ -69,24 +50,28 @@ export class BlockProvingState {
|
|
|
69
50
|
if (!this.spongeBlobState) {
|
|
70
51
|
throw new Error(`Invalid block proving state, call startNewBlock before adding transactions.`);
|
|
71
52
|
}
|
|
72
|
-
this.txs.
|
|
73
|
-
|
|
53
|
+
const txIndex = this.txs.length;
|
|
54
|
+
this.txs[txIndex] = tx;
|
|
55
|
+
return txIndex;
|
|
56
|
+
}
|
|
57
|
+
setBaseRollupProof(txIndex, provingOutput) {
|
|
58
|
+
return this.baseOrMergeProvingOutputs.setLeaf(txIndex, provingOutput);
|
|
74
59
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
return this.txs.length;
|
|
60
|
+
setMergeRollupProof(location, provingOutput) {
|
|
61
|
+
this.baseOrMergeProvingOutputs.setNode(location, provingOutput);
|
|
78
62
|
}
|
|
79
|
-
//
|
|
80
|
-
|
|
81
|
-
|
|
63
|
+
// Stores a set of root parity inputs at the given index
|
|
64
|
+
setBaseParityProof(index, provingOutput) {
|
|
65
|
+
if (index >= NUM_BASE_PARITY_PER_ROOT_PARITY) {
|
|
66
|
+
throw new Error(`Unable to set a base parity proofs at index ${index}. Expected at most ${NUM_BASE_PARITY_PER_ROOT_PARITY} proofs.`);
|
|
67
|
+
}
|
|
68
|
+
this.baseParityProvingOutputs[index] = provingOutput;
|
|
82
69
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
this.finalRootParityInputs = input;
|
|
70
|
+
setRootParityProof(provingOutput) {
|
|
71
|
+
this.rootParityProvingOutput = provingOutput;
|
|
86
72
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
return this.rootParityInputs;
|
|
73
|
+
setBlockRootRollupProof(provingOutput) {
|
|
74
|
+
this.blockRootProvingOutput = provingOutput;
|
|
90
75
|
}
|
|
91
76
|
// Returns the complete set of transaction proving state objects
|
|
92
77
|
get allTxs() {
|
|
@@ -96,54 +81,85 @@ export class BlockProvingState {
|
|
|
96
81
|
get epochNumber() {
|
|
97
82
|
return this.parentEpoch.epochNumber;
|
|
98
83
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
84
|
+
getParentLocation(location) {
|
|
85
|
+
return this.baseOrMergeProvingOutputs.getParentLocation(location);
|
|
86
|
+
}
|
|
87
|
+
getMergeRollupInputs(mergeLocation) {
|
|
88
|
+
const [left, right] = this.baseOrMergeProvingOutputs.getChildren(mergeLocation);
|
|
89
|
+
if (!left || !right) {
|
|
90
|
+
throw new Error('At lease one child is not ready.');
|
|
91
|
+
}
|
|
92
|
+
return new MergeRollupInputs([__classPrivateFieldGet(this, _BlockProvingState_instances, "m", _BlockProvingState_getPreviousRollupData).call(this, left), __classPrivateFieldGet(this, _BlockProvingState_instances, "m", _BlockProvingState_getPreviousRollupData).call(this, right)]);
|
|
93
|
+
}
|
|
94
|
+
getBlockRootRollupTypeAndInputs(proverId) {
|
|
95
|
+
if (this.totalNumTxs === 0) {
|
|
96
|
+
return {
|
|
97
|
+
rollupType: 'empty-block-root-rollup',
|
|
98
|
+
inputs: __classPrivateFieldGet(this, _BlockProvingState_instances, "m", _BlockProvingState_getEmptyBlockRootInputs).call(this, proverId),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
const proofs = __classPrivateFieldGet(this, _BlockProvingState_instances, "m", _BlockProvingState_getChildProofsForBlockRoot).call(this);
|
|
102
|
+
const nonEmptyProofs = proofs.filter(p => !!p);
|
|
103
|
+
if (proofs.length !== nonEmptyProofs.length) {
|
|
104
|
+
throw new Error('At lease one child is not ready for the block root.');
|
|
105
|
+
}
|
|
106
|
+
const previousRollupData = nonEmptyProofs.map(p => __classPrivateFieldGet(this, _BlockProvingState_instances, "m", _BlockProvingState_getPreviousRollupData).call(this, p));
|
|
107
|
+
const data = __classPrivateFieldGet(this, _BlockProvingState_instances, "m", _BlockProvingState_getBlockRootRollupData).call(this, proverId);
|
|
108
|
+
if (previousRollupData.length === 1) {
|
|
109
|
+
return {
|
|
110
|
+
rollupType: 'single-tx-block-root-rollup',
|
|
111
|
+
inputs: new SingleTxBlockRootRollupInputs(previousRollupData, data),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
return {
|
|
116
|
+
rollupType: 'block-root-rollup',
|
|
117
|
+
inputs: new BlockRootRollupInputs(previousRollupData, data),
|
|
112
118
|
};
|
|
113
|
-
mergeInputData.inputs[indexWithinMerge] = mergeInputs[0];
|
|
114
|
-
mergeInputData.proofs[indexWithinMerge] = mergeInputs[1];
|
|
115
|
-
mergeInputData.verificationKeys[indexWithinMerge] = mergeInputs[2];
|
|
116
|
-
this.mergeRollupInputs[indexOfMerge] = mergeInputData;
|
|
117
|
-
return false;
|
|
118
119
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
120
|
+
}
|
|
121
|
+
getRootParityInputs() {
|
|
122
|
+
if (!this.baseParityProvingOutputs.every(p => !!p)) {
|
|
123
|
+
throw new Error('At lease one base parity is not ready.');
|
|
124
|
+
}
|
|
125
|
+
const children = this.baseParityProvingOutputs.map(p => __classPrivateFieldGet(this, _BlockProvingState_instances, "m", _BlockProvingState_getRootParityInputFromProvingOutput).call(this, p));
|
|
126
|
+
return new RootParityInputs(children);
|
|
127
|
+
}
|
|
128
|
+
getL1ToL2Roots() {
|
|
129
|
+
if (!this.rootParityProvingOutput) {
|
|
130
|
+
throw new Error('Root parity is not ready.');
|
|
131
|
+
}
|
|
132
|
+
return __classPrivateFieldGet(this, _BlockProvingState_instances, "m", _BlockProvingState_getRootParityInputFromProvingOutput).call(this, this.rootParityProvingOutput);
|
|
124
133
|
}
|
|
125
134
|
// Returns a specific transaction proving state
|
|
126
135
|
getTxProvingState(txIndex) {
|
|
127
136
|
return this.txs[txIndex];
|
|
128
137
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
138
|
+
buildHeaderFromProvingOutputs(logger) {
|
|
139
|
+
const previousRollupData = this.totalNumTxs === 0 ? [] : __classPrivateFieldGet(this, _BlockProvingState_instances, "m", _BlockProvingState_getChildProofsForBlockRoot).call(this).map(p => __classPrivateFieldGet(this, _BlockProvingState_instances, "m", _BlockProvingState_getPreviousRollupData).call(this, p));
|
|
140
|
+
let endPartialState = this.previousBlockHeader.state.partial;
|
|
141
|
+
if (this.totalNumTxs !== 0) {
|
|
142
|
+
const previousRollupData = __classPrivateFieldGet(this, _BlockProvingState_instances, "m", _BlockProvingState_getChildProofsForBlockRoot).call(this);
|
|
143
|
+
const lastRollup = previousRollupData[previousRollupData.length - 1];
|
|
144
|
+
if (!lastRollup) {
|
|
145
|
+
throw new Error('End state of the block is not available. Last rollup is not ready yet.');
|
|
146
|
+
}
|
|
147
|
+
endPartialState = lastRollup.inputs.end;
|
|
148
|
+
}
|
|
149
|
+
const endState = new StateReference(this.messageTreeSnapshotAfterInsertion, endPartialState);
|
|
150
|
+
return buildHeaderFromCircuitOutputs(previousRollupData.map(d => d.baseOrMergeRollupPublicInputs), this.rootParityProvingOutput.inputs, this.blockRootProvingOutput.inputs, endState, logger);
|
|
151
|
+
}
|
|
152
|
+
isReadyForMergeRollup(location) {
|
|
153
|
+
return this.baseOrMergeProvingOutputs.getSibling(location) !== undefined;
|
|
132
154
|
}
|
|
133
155
|
// Returns true if we have sufficient inputs to execute the block root rollup
|
|
134
156
|
isReadyForBlockRootRollup() {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
this.finalRootParityInput === undefined ||
|
|
138
|
-
this.mergeRollupInputs[0].inputs.findIndex(p => !p) !== -1);
|
|
139
|
-
}
|
|
140
|
-
// Stores a set of root parity inputs at the given index
|
|
141
|
-
setRootParityInputs(inputs, index) {
|
|
142
|
-
this.rootParityInputs[index] = inputs;
|
|
157
|
+
const childProofs = __classPrivateFieldGet(this, _BlockProvingState_instances, "m", _BlockProvingState_getChildProofsForBlockRoot).call(this);
|
|
158
|
+
return this.block !== undefined && this.rootParityProvingOutput !== undefined && childProofs.every(p => !!p);
|
|
143
159
|
}
|
|
144
160
|
// Returns true if we have sufficient root parity inputs to execute the root parity circuit
|
|
145
|
-
|
|
146
|
-
return this.
|
|
161
|
+
isReadyForRootParity() {
|
|
162
|
+
return this.baseParityProvingOutputs.every(p => !!p);
|
|
147
163
|
}
|
|
148
164
|
// Returns whether the proving state is still valid
|
|
149
165
|
verifyState() {
|
|
@@ -154,4 +170,52 @@ export class BlockProvingState {
|
|
|
154
170
|
this.parentEpoch.reject(reason);
|
|
155
171
|
}
|
|
156
172
|
}
|
|
157
|
-
|
|
173
|
+
_BlockProvingState_instances = new WeakSet(), _BlockProvingState_getEmptyBlockRootInputs = function _BlockProvingState_getEmptyBlockRootInputs(proverId) {
|
|
174
|
+
const l1ToL2Roots = this.getL1ToL2Roots();
|
|
175
|
+
const constants = ConstantRollupData.from({
|
|
176
|
+
lastArchive: this.archiveTreeSnapshot,
|
|
177
|
+
globalVariables: this.globalVariables,
|
|
178
|
+
vkTreeRoot: getVKTreeRoot(),
|
|
179
|
+
protocolContractTreeRoot,
|
|
180
|
+
});
|
|
181
|
+
return EmptyBlockRootRollupInputs.from({
|
|
182
|
+
l1ToL2Roots,
|
|
183
|
+
newL1ToL2MessageTreeRootSiblingPath: this.messageTreeRootSiblingPath,
|
|
184
|
+
startL1ToL2MessageTreeSnapshot: this.messageTreeSnapshot,
|
|
185
|
+
newArchiveSiblingPath: this.archiveTreeRootSiblingPath,
|
|
186
|
+
previousBlockHash: this.previousBlockHash,
|
|
187
|
+
previousPartialState: this.previousBlockHeader.state.partial,
|
|
188
|
+
constants,
|
|
189
|
+
proverId,
|
|
190
|
+
isPadding: false,
|
|
191
|
+
});
|
|
192
|
+
}, _BlockProvingState_getBlockRootRollupData = function _BlockProvingState_getBlockRootRollupData(proverId) {
|
|
193
|
+
const txEffects = this.txs.map(txProvingState => txProvingState.processedTx.txEffect);
|
|
194
|
+
const { blobFields, blobCommitments, blobsHash } = buildBlobHints(txEffects);
|
|
195
|
+
return BlockRootRollupData.from({
|
|
196
|
+
l1ToL2Roots: this.getL1ToL2Roots(),
|
|
197
|
+
newL1ToL2MessageTreeRootSiblingPath: this.messageTreeRootSiblingPath,
|
|
198
|
+
startL1ToL2MessageTreeSnapshot: this.messageTreeSnapshot,
|
|
199
|
+
newArchiveSiblingPath: this.archiveTreeRootSiblingPath,
|
|
200
|
+
previousBlockHash: this.previousBlockHash,
|
|
201
|
+
proverId,
|
|
202
|
+
blobFields: padArrayEnd(blobFields, Fr.ZERO, FIELDS_PER_BLOB * BLOBS_PER_BLOCK),
|
|
203
|
+
blobCommitments: padArrayEnd(blobCommitments, [Fr.ZERO, Fr.ZERO], BLOBS_PER_BLOCK),
|
|
204
|
+
blobsHash,
|
|
205
|
+
});
|
|
206
|
+
}, _BlockProvingState_getChildProofsForBlockRoot = function _BlockProvingState_getChildProofsForBlockRoot() {
|
|
207
|
+
if (this.totalNumTxs === 0) {
|
|
208
|
+
return [];
|
|
209
|
+
}
|
|
210
|
+
const rootLocation = { level: 0, index: 0 };
|
|
211
|
+
// If there's only 1 tx, its base rollup proof will be stored at the root.
|
|
212
|
+
return this.totalNumTxs === 1
|
|
213
|
+
? [this.baseOrMergeProvingOutputs.getNode(rootLocation)]
|
|
214
|
+
: this.baseOrMergeProvingOutputs.getChildren(rootLocation);
|
|
215
|
+
}, _BlockProvingState_getPreviousRollupData = function _BlockProvingState_getPreviousRollupData({ inputs, proof, verificationKey, }) {
|
|
216
|
+
const leafIndex = getVKIndex(verificationKey.keyAsFields);
|
|
217
|
+
return new PreviousRollupData(inputs, proof, verificationKey.keyAsFields, new MembershipWitness(VK_TREE_HEIGHT, BigInt(leafIndex), getVKSiblingPath(leafIndex)));
|
|
218
|
+
}, _BlockProvingState_getRootParityInputFromProvingOutput = function _BlockProvingState_getRootParityInputFromProvingOutput({ inputs, proof, verificationKey, }) {
|
|
219
|
+
return new RootParityInput(proof, verificationKey.keyAsFields, getVKSiblingPath(getVKIndex(verificationKey)), inputs);
|
|
220
|
+
};
|
|
221
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stcHJvdmluZy1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvYmxvY2stcHJvdmluZy1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLE9BQU8sRUFHTCxlQUFlLEVBRWYsZUFBZSxFQUNmLEVBQUUsRUFHRixpQkFBaUIsRUFHakIsK0JBQStCLEVBRy9CLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLGNBQWMsR0FDZixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBR0wsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsMEJBQTBCLEVBQzFCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsNkJBQTZCLEdBQzlCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRzNELE9BQU8sRUFBeUIsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxjQUFjLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQU01Rjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBZ0I1QixZQUNrQixLQUFhLEVBQ2IsZUFBZ0MsRUFDaEMsaUJBQXdFLEVBQ3ZFLG1CQUEyQyxFQUMzQywwQkFBc0YsRUFDdEYsaUNBQXlELEVBQ3pELG1CQUEyQyxFQUMzQywwQkFBNEQsRUFDNUQsbUJBQWdDLEVBQ2hDLGlCQUFxQixFQUNyQixXQUE4Qjs7UUFWL0IsVUFBSyxHQUFMLEtBQUss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
|
|
@@ -1,17 +1,10 @@
|
|
|
1
|
-
import { type MerkleTreeId } from '@aztec/circuit-types';
|
|
2
|
-
import {
|
|
3
|
-
import { type BlockRootOrBlockMergePublicInputs, type RootRollupPublicInputs } from '@aztec/circuits.js/rollup';
|
|
1
|
+
import { type MerkleTreeId, type ProofAndVerificationKey, type PublicInputsAndRecursiveProof } from '@aztec/circuit-types';
|
|
2
|
+
import { ARCHIVE_HEIGHT, AppendOnlyTreeSnapshot, type BlockHeader, Fr, type GlobalVariables, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, type NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/circuits.js';
|
|
3
|
+
import { BlockMergeRollupInputs, type BlockRootOrBlockMergePublicInputs, EmptyBlockRootRollupInputs, RootRollupInputs, type RootRollupPublicInputs } from '@aztec/circuits.js/rollup';
|
|
4
4
|
import { type Tuple } from '@aztec/foundation/serialize';
|
|
5
|
+
import { type TreeNodeLocation } from '@aztec/foundation/trees';
|
|
5
6
|
import { BlockProvingState } from './block-proving-state.js';
|
|
6
7
|
export type TreeSnapshots = Map<MerkleTreeId, AppendOnlyTreeSnapshot>;
|
|
7
|
-
export type BlockMergeRollupInputData = {
|
|
8
|
-
inputs: [BlockRootOrBlockMergePublicInputs | undefined, BlockRootOrBlockMergePublicInputs | undefined];
|
|
9
|
-
proofs: [
|
|
10
|
-
RecursiveProof<typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH> | undefined,
|
|
11
|
-
RecursiveProof<typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH> | undefined
|
|
12
|
-
];
|
|
13
|
-
verificationKeys: [VerificationKeyAsFields | undefined, VerificationKeyAsFields | undefined];
|
|
14
|
-
};
|
|
15
8
|
export type ProvingResult = {
|
|
16
9
|
status: 'success';
|
|
17
10
|
} | {
|
|
@@ -25,36 +18,36 @@ export type ProvingResult = {
|
|
|
25
18
|
* Captures resolve and reject callbacks to provide a promise base interface to the consumer of our proving.
|
|
26
19
|
*/
|
|
27
20
|
export declare class EpochProvingState {
|
|
21
|
+
#private;
|
|
28
22
|
readonly epochNumber: number;
|
|
29
23
|
readonly firstBlockNumber: number;
|
|
30
24
|
readonly totalNumBlocks: number;
|
|
31
25
|
private completionCallback;
|
|
32
26
|
private rejectionCallback;
|
|
27
|
+
private blockRootOrMergeProvingOutputs;
|
|
28
|
+
private paddingBlockRootProvingOutput;
|
|
29
|
+
private rootRollupProvingOutput;
|
|
33
30
|
private provingStateLifecycle;
|
|
34
|
-
|
|
35
|
-
rootRollupPublicInputs: RootRollupPublicInputs | undefined;
|
|
36
|
-
finalProof: Proof | undefined;
|
|
31
|
+
readonly cachedTubeProofs: Map<string, Promise<ProofAndVerificationKey<534>>>;
|
|
37
32
|
blocks: (BlockProvingState | undefined)[];
|
|
38
33
|
constructor(epochNumber: number, firstBlockNumber: number, totalNumBlocks: number, completionCallback: (result: ProvingResult) => void, rejectionCallback: (reason: string) => void);
|
|
39
|
-
|
|
40
|
-
findMergeLevel(currentLevel: bigint, currentIndex: bigint): bigint[];
|
|
41
|
-
startNewBlock(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): BlockProvingState;
|
|
34
|
+
startNewBlock(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>, previousBlockHeader: BlockHeader, previousBlockHash: Fr): BlockProvingState;
|
|
42
35
|
verifyState(): boolean;
|
|
43
36
|
isAcceptingBlocks(): boolean;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
BlockRootOrBlockMergePublicInputs,
|
|
53
|
-
RecursiveProof<typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>,
|
|
54
|
-
VerificationKeyAsFields
|
|
55
|
-
], indexWithinMerge: number, indexOfMerge: number): boolean;
|
|
37
|
+
setBlockRootRollupProof(blockIndex: number, proof: PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): TreeNodeLocation;
|
|
38
|
+
setBlockMergeRollupProof(location: TreeNodeLocation, proof: PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): void;
|
|
39
|
+
setRootRollupProof(proof: PublicInputsAndRecursiveProof<RootRollupPublicInputs>): void;
|
|
40
|
+
setPaddingBlockRootProof(proof: PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): void;
|
|
41
|
+
getParentLocation(location: TreeNodeLocation): TreeNodeLocation;
|
|
42
|
+
getBlockMergeRollupInputs(mergeLocation: TreeNodeLocation): BlockMergeRollupInputs;
|
|
43
|
+
getRootRollupInputs(proverId: Fr): RootRollupInputs;
|
|
44
|
+
getPaddingBlockRootInputs(proverId: Fr): EmptyBlockRootRollupInputs;
|
|
56
45
|
getBlockProvingStateByBlockNumber(blockNumber: number): BlockProvingState | undefined;
|
|
57
|
-
|
|
46
|
+
getEpochProofResult(): {
|
|
47
|
+
proof: import("@aztec/circuits.js").Proof;
|
|
48
|
+
publicInputs: RootRollupPublicInputs;
|
|
49
|
+
};
|
|
50
|
+
isReadyForBlockMerge(location: TreeNodeLocation): boolean;
|
|
58
51
|
isReadyForRootRollup(): boolean;
|
|
59
52
|
cancel(): void;
|
|
60
53
|
reject(reason: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"epoch-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-state.ts"],"names":[],"mappings":"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"}
|