@aztec/prover-client 0.0.0-test.1 → 0.0.1-commit.017a351
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/config.d.ts +8 -8
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +26 -2
- package/dest/index.d.ts +1 -1
- package/dest/light/index.d.ts +2 -0
- package/dest/light/index.d.ts.map +1 -0
- package/dest/light/index.js +1 -0
- package/dest/light/lightweight_checkpoint_builder.d.ts +52 -0
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
- package/dest/light/lightweight_checkpoint_builder.js +231 -0
- package/dest/mocks/fixtures.d.ts +8 -8
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +36 -17
- package/dest/mocks/test_context.d.ts +45 -32
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +162 -90
- package/dest/orchestrator/block-building-helpers.d.ts +36 -29
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +170 -189
- package/dest/orchestrator/block-proving-state.d.ts +73 -48
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +289 -177
- package/dest/orchestrator/checkpoint-proving-state.d.ts +83 -0
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/checkpoint-proving-state.js +252 -0
- package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts +107 -0
- package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts.map +1 -0
- package/dest/orchestrator/checkpoint-sub-tree-orchestrator.js +151 -0
- package/dest/orchestrator/epoch-proving-context.d.ts +51 -0
- package/dest/orchestrator/epoch-proving-context.d.ts.map +1 -0
- package/dest/orchestrator/epoch-proving-context.js +81 -0
- package/dest/orchestrator/epoch-proving-state.d.ts +43 -28
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +179 -73
- package/dest/orchestrator/index.d.ts +4 -1
- package/dest/orchestrator/index.d.ts.map +1 -1
- package/dest/orchestrator/index.js +3 -0
- package/dest/orchestrator/orchestrator.d.ts +59 -51
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +808 -385
- package/dest/orchestrator/orchestrator_metrics.d.ts +1 -1
- package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator_metrics.js +2 -6
- package/dest/orchestrator/proving-scheduler.d.ts +72 -0
- package/dest/orchestrator/proving-scheduler.d.ts.map +1 -0
- package/dest/orchestrator/proving-scheduler.js +117 -0
- package/dest/orchestrator/top-tree-orchestrator.d.ts +83 -0
- package/dest/orchestrator/top-tree-orchestrator.d.ts.map +1 -0
- package/dest/orchestrator/top-tree-orchestrator.js +182 -0
- package/dest/orchestrator/top-tree-proving-scheduler.d.ts +62 -0
- package/dest/orchestrator/top-tree-proving-scheduler.d.ts.map +1 -0
- package/dest/orchestrator/top-tree-proving-scheduler.js +73 -0
- package/dest/orchestrator/top-tree-proving-state.d.ts +61 -0
- package/dest/orchestrator/top-tree-proving-state.d.ts.map +1 -0
- package/dest/orchestrator/top-tree-proving-state.js +185 -0
- package/dest/orchestrator/tx-proving-state.d.ts +15 -12
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +27 -44
- package/dest/prover-client/factory.d.ts +3 -3
- package/dest/prover-client/factory.d.ts.map +1 -1
- package/dest/prover-client/index.d.ts +1 -1
- package/dest/prover-client/prover-client.d.ts +68 -9
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +68 -14
- package/dest/prover-client/server-epoch-prover.d.ts +16 -12
- package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
- package/dest/prover-client/server-epoch-prover.js +11 -11
- package/dest/proving_broker/broker_prover_facade.d.ts +28 -19
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +74 -61
- package/dest/proving_broker/config.d.ts +18 -61
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +43 -9
- package/dest/proving_broker/factory.d.ts +2 -2
- package/dest/proving_broker/factory.d.ts.map +1 -1
- package/dest/proving_broker/factory.js +5 -1
- package/dest/proving_broker/fixtures.d.ts +3 -2
- package/dest/proving_broker/fixtures.d.ts.map +1 -1
- package/dest/proving_broker/fixtures.js +3 -2
- 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 +1 -0
- package/dest/proving_broker/proof_store/factory.d.ts +2 -5
- package/dest/proving_broker/proof_store/factory.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/factory.js +7 -30
- package/dest/proving_broker/proof_store/file_store_proof_store.d.ts +18 -0
- package/dest/proving_broker/proof_store/file_store_proof_store.d.ts.map +1 -0
- package/dest/proving_broker/proof_store/file_store_proof_store.js +60 -0
- package/dest/proving_broker/proof_store/index.d.ts +2 -1
- package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/index.js +1 -0
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts +1 -1
- package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/proof_store.d.ts +1 -1
- package/dest/proving_broker/proving_agent.d.ts +8 -12
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +86 -65
- package/dest/proving_broker/proving_broker.d.ts +18 -6
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +108 -44
- package/dest/proving_broker/proving_broker_database/memory.d.ts +3 -2
- package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/memory.js +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.d.ts +5 -3
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +401 -11
- package/dest/proving_broker/proving_broker_database.d.ts +3 -2
- package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.d.ts +3 -1
- package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.js +22 -35
- package/dest/proving_broker/proving_job_controller.d.ts +11 -10
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +92 -62
- package/dest/proving_broker/rpc.d.ts +9 -7
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +88 -27
- package/dest/test/mock_proof_store.d.ts +9 -0
- package/dest/test/mock_proof_store.d.ts.map +1 -0
- package/dest/test/mock_proof_store.js +10 -0
- package/dest/test/mock_prover.d.ts +23 -17
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +38 -20
- package/package.json +34 -33
- package/src/config.ts +41 -9
- package/src/light/index.ts +1 -0
- package/src/light/lightweight_checkpoint_builder.ts +320 -0
- package/src/mocks/fixtures.ts +46 -40
- package/src/mocks/test_context.ts +231 -120
- package/src/orchestrator/block-building-helpers.ts +258 -334
- package/src/orchestrator/block-proving-state.ts +334 -231
- package/src/orchestrator/checkpoint-proving-state.ts +362 -0
- package/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +271 -0
- package/src/orchestrator/epoch-proving-context.ts +101 -0
- package/src/orchestrator/epoch-proving-state.ts +239 -111
- package/src/orchestrator/index.ts +8 -0
- package/src/orchestrator/orchestrator.ts +591 -451
- package/src/orchestrator/orchestrator_metrics.ts +2 -6
- package/src/orchestrator/proving-scheduler.ts +156 -0
- package/src/orchestrator/top-tree-orchestrator.ts +314 -0
- package/src/orchestrator/top-tree-proving-scheduler.ts +154 -0
- package/src/orchestrator/top-tree-proving-state.ts +220 -0
- package/src/orchestrator/tx-proving-state.ts +48 -66
- package/src/prover-client/factory.ts +6 -2
- package/src/prover-client/prover-client.ts +173 -38
- package/src/prover-client/server-epoch-prover.ts +40 -22
- package/src/proving_broker/broker_prover_facade.ts +227 -149
- package/src/proving_broker/config.ts +49 -8
- package/src/proving_broker/factory.ts +2 -1
- package/src/proving_broker/fixtures.ts +8 -3
- package/src/proving_broker/index.ts +1 -0
- package/src/proving_broker/proof_store/factory.ts +10 -32
- package/src/proving_broker/proof_store/file_store_proof_store.ts +78 -0
- package/src/proving_broker/proof_store/index.ts +1 -0
- package/src/proving_broker/proof_store/inline_proof_store.ts +1 -1
- package/src/proving_broker/proving_agent.ts +95 -66
- package/src/proving_broker/proving_broker.ts +121 -49
- package/src/proving_broker/proving_broker_database/memory.ts +3 -2
- package/src/proving_broker/proving_broker_database/persisted.ts +31 -15
- package/src/proving_broker/proving_broker_database.ts +2 -1
- package/src/proving_broker/proving_broker_instrumentation.ts +23 -35
- package/src/proving_broker/proving_job_controller.ts +100 -83
- package/src/proving_broker/rpc.ts +46 -25
- package/src/test/mock_proof_store.ts +14 -0
- package/src/test/mock_prover.ts +156 -64
- package/dest/bin/get-proof-inputs.d.ts +0 -2
- package/dest/bin/get-proof-inputs.d.ts.map +0 -1
- package/dest/bin/get-proof-inputs.js +0 -51
- package/dest/block_builder/index.d.ts +0 -6
- package/dest/block_builder/index.d.ts.map +0 -1
- package/dest/block_builder/index.js +0 -1
- package/dest/block_builder/light.d.ts +0 -33
- package/dest/block_builder/light.d.ts.map +0 -1
- package/dest/block_builder/light.js +0 -82
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +0 -14
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +0 -1
- package/dest/proving_broker/proof_store/gcs_proof_store.js +0 -51
- package/dest/proving_broker/proving_agent_instrumentation.d.ts +0 -8
- package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +0 -1
- package/dest/proving_broker/proving_agent_instrumentation.js +0 -16
- package/src/bin/get-proof-inputs.ts +0 -59
- package/src/block_builder/index.ts +0 -6
- package/src/block_builder/light.ts +0 -101
- package/src/proving_broker/proof_store/gcs_proof_store.ts +0 -72
- package/src/proving_broker/proving_agent_instrumentation.ts +0 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"block-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-proving-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,252 +1,349 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { StateReference } from '@aztec/stdlib/tx';
|
|
11
|
-
import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-helpers.js';
|
|
1
|
+
import { encodeBlockEndBlobData } from '@aztec/blob-lib';
|
|
2
|
+
import { NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
|
+
import { assertLength } from '@aztec/foundation/serialize';
|
|
5
|
+
import { UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
6
|
+
import { ParityRootPrivateInputs } from '@aztec/stdlib/parity';
|
|
7
|
+
import { BlockRootEmptyTxFirstRollupPrivateInputs, BlockRootFirstRollupPrivateInputs, BlockRootRollupPrivateInputs, BlockRootSingleTxFirstRollupPrivateInputs, BlockRootSingleTxRollupPrivateInputs, TxMergeRollupPrivateInputs } from '@aztec/stdlib/rollup';
|
|
8
|
+
import { BlockHeader, GlobalVariables } from '@aztec/stdlib/tx';
|
|
9
|
+
import { buildHeaderFromCircuitOutputs, toProofData } from './block-building-helpers.js';
|
|
12
10
|
/**
|
|
13
11
|
* The current state of the proving schedule for a given block. Managed by ProvingState.
|
|
14
12
|
* Contains the raw inputs and intermediate state to generate every constituent proof in the tree.
|
|
15
13
|
*/ export class BlockProvingState {
|
|
16
14
|
index;
|
|
17
|
-
|
|
18
|
-
newL1ToL2Messages;
|
|
19
|
-
l1ToL2MessageSubtreeSiblingPath;
|
|
20
|
-
l1ToL2MessageTreeSnapshotAfterInsertion;
|
|
21
|
-
lastArchiveSnapshot;
|
|
22
|
-
newArchiveSiblingPath;
|
|
23
|
-
previousBlockHeader;
|
|
24
|
-
parentEpoch;
|
|
25
|
-
baseOrMergeProvingOutputs;
|
|
26
|
-
baseParityProvingOutputs;
|
|
27
|
-
rootParityProvingOutput;
|
|
28
|
-
blockRootProvingOutput;
|
|
29
|
-
blockRootRollupStarted;
|
|
30
|
-
block;
|
|
31
|
-
spongeBlobState;
|
|
15
|
+
blockNumber;
|
|
32
16
|
totalNumTxs;
|
|
17
|
+
constants;
|
|
18
|
+
timestamp;
|
|
19
|
+
lastArchiveTreeSnapshot;
|
|
20
|
+
lastArchiveSiblingPath;
|
|
21
|
+
lastL1ToL2MessageTreeSnapshot;
|
|
22
|
+
lastL1ToL2MessageSubtreeRootSiblingPath;
|
|
23
|
+
newL1ToL2MessageTreeSnapshot;
|
|
24
|
+
headerOfLastBlockInPreviousCheckpoint;
|
|
25
|
+
startSpongeBlob;
|
|
26
|
+
parentCheckpoint;
|
|
27
|
+
baseOrMergeProofs;
|
|
28
|
+
baseParityProofs;
|
|
29
|
+
rootParityProof;
|
|
30
|
+
blockRootProof;
|
|
31
|
+
builtBlockHeader;
|
|
32
|
+
builtArchive;
|
|
33
|
+
endState;
|
|
34
|
+
endSpongeBlob;
|
|
33
35
|
txs;
|
|
36
|
+
isFirstBlock;
|
|
34
37
|
error;
|
|
35
|
-
constructor(index,
|
|
38
|
+
constructor(index, blockNumber, totalNumTxs, constants, timestamp, lastArchiveTreeSnapshot, lastArchiveSiblingPath, lastL1ToL2MessageTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath, newL1ToL2MessageTreeSnapshot, headerOfLastBlockInPreviousCheckpoint, startSpongeBlob, parentCheckpoint){
|
|
36
39
|
this.index = index;
|
|
37
|
-
this.
|
|
38
|
-
this.
|
|
39
|
-
this.
|
|
40
|
-
this.
|
|
41
|
-
this.
|
|
42
|
-
this.
|
|
43
|
-
this.
|
|
44
|
-
this.
|
|
45
|
-
this.
|
|
46
|
-
this.
|
|
47
|
-
this.
|
|
48
|
-
this.
|
|
40
|
+
this.blockNumber = blockNumber;
|
|
41
|
+
this.totalNumTxs = totalNumTxs;
|
|
42
|
+
this.constants = constants;
|
|
43
|
+
this.timestamp = timestamp;
|
|
44
|
+
this.lastArchiveTreeSnapshot = lastArchiveTreeSnapshot;
|
|
45
|
+
this.lastArchiveSiblingPath = lastArchiveSiblingPath;
|
|
46
|
+
this.lastL1ToL2MessageTreeSnapshot = lastL1ToL2MessageTreeSnapshot;
|
|
47
|
+
this.lastL1ToL2MessageSubtreeRootSiblingPath = lastL1ToL2MessageSubtreeRootSiblingPath;
|
|
48
|
+
this.newL1ToL2MessageTreeSnapshot = newL1ToL2MessageTreeSnapshot;
|
|
49
|
+
this.headerOfLastBlockInPreviousCheckpoint = headerOfLastBlockInPreviousCheckpoint;
|
|
50
|
+
this.startSpongeBlob = startSpongeBlob;
|
|
51
|
+
this.parentCheckpoint = parentCheckpoint;
|
|
52
|
+
this.baseOrMergeProofs = new UnbalancedTreeStore(0);
|
|
53
|
+
this.baseParityProofs = Array.from({
|
|
49
54
|
length: NUM_BASE_PARITY_PER_ROOT_PARITY
|
|
50
55
|
}).map((_)=>undefined);
|
|
51
|
-
this.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
startNewBlock(numTxs, numBlobFields) {
|
|
57
|
-
if (this.spongeBlobState) {
|
|
58
|
-
throw new Error(`Block ${this.blockNumber} already initalised.`);
|
|
56
|
+
this.txs = [];
|
|
57
|
+
this.isFirstBlock = index === 0;
|
|
58
|
+
if (!totalNumTxs && !this.isFirstBlock) {
|
|
59
|
+
throw new Error(`Cannot create a block with 0 txs, unless it's the first block.`);
|
|
59
60
|
}
|
|
60
|
-
this.
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
this.
|
|
64
|
-
this.totalNumTxs = numTxs;
|
|
61
|
+
this.baseOrMergeProofs = new UnbalancedTreeStore(totalNumTxs);
|
|
62
|
+
}
|
|
63
|
+
get epochNumber() {
|
|
64
|
+
return this.parentCheckpoint.epochNumber;
|
|
65
65
|
}
|
|
66
66
|
// Adds a transaction to the proving state, returns it's index
|
|
67
67
|
addNewTx(tx) {
|
|
68
|
-
if (!this.
|
|
69
|
-
throw new Error(`
|
|
68
|
+
if (!this.isAcceptingTxs()) {
|
|
69
|
+
throw new Error(`Cannot add more txs to block ${this.blockNumber}.`);
|
|
70
70
|
}
|
|
71
71
|
const txIndex = this.txs.length;
|
|
72
72
|
this.txs[txIndex] = tx;
|
|
73
73
|
return txIndex;
|
|
74
74
|
}
|
|
75
|
+
isAcceptingTxs() {
|
|
76
|
+
return this.txs.length < this.totalNumTxs;
|
|
77
|
+
}
|
|
78
|
+
getProcessedTxs() {
|
|
79
|
+
return this.txs.map((t)=>t.processedTx);
|
|
80
|
+
}
|
|
81
|
+
tryStartProvingBase(txIndex) {
|
|
82
|
+
if (this.baseOrMergeProofs.getLeaf(txIndex)?.isProving) {
|
|
83
|
+
return false;
|
|
84
|
+
} else {
|
|
85
|
+
this.baseOrMergeProofs.setLeaf(txIndex, {
|
|
86
|
+
isProving: true
|
|
87
|
+
});
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
75
91
|
setBaseRollupProof(txIndex, provingOutput) {
|
|
76
|
-
return this.
|
|
92
|
+
return this.baseOrMergeProofs.setLeaf(txIndex, {
|
|
93
|
+
provingOutput
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
tryStartProvingMerge(location) {
|
|
97
|
+
if (this.baseOrMergeProofs.getNode(location)?.isProving) {
|
|
98
|
+
return false;
|
|
99
|
+
} else {
|
|
100
|
+
this.baseOrMergeProofs.setNode(location, {
|
|
101
|
+
isProving: true
|
|
102
|
+
});
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
77
105
|
}
|
|
78
106
|
setMergeRollupProof(location, provingOutput) {
|
|
79
|
-
this.
|
|
107
|
+
this.baseOrMergeProofs.setNode(location, {
|
|
108
|
+
provingOutput
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
tryStartProvingBaseParity(index) {
|
|
112
|
+
if (this.baseParityProofs[index]?.isProving) {
|
|
113
|
+
return false;
|
|
114
|
+
} else {
|
|
115
|
+
this.baseParityProofs[index] = {
|
|
116
|
+
isProving: true
|
|
117
|
+
};
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
80
120
|
}
|
|
81
121
|
// Stores a set of root parity inputs at the given index
|
|
82
122
|
setBaseParityProof(index, provingOutput) {
|
|
83
123
|
if (index >= NUM_BASE_PARITY_PER_ROOT_PARITY) {
|
|
84
124
|
throw new Error(`Unable to set a base parity proofs at index ${index}. Expected at most ${NUM_BASE_PARITY_PER_ROOT_PARITY} proofs.`);
|
|
85
125
|
}
|
|
86
|
-
this.
|
|
126
|
+
this.baseParityProofs[index] = {
|
|
127
|
+
provingOutput
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
tryStartProvingRootParity() {
|
|
131
|
+
if (this.rootParityProof?.isProving) {
|
|
132
|
+
return false;
|
|
133
|
+
} else {
|
|
134
|
+
this.rootParityProof = {
|
|
135
|
+
isProving: true
|
|
136
|
+
};
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
87
139
|
}
|
|
88
140
|
setRootParityProof(provingOutput) {
|
|
89
|
-
this.
|
|
141
|
+
this.rootParityProof = {
|
|
142
|
+
provingOutput
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
tryStartProvingBlockRoot() {
|
|
146
|
+
if (this.blockRootProof?.isProving) {
|
|
147
|
+
return false;
|
|
148
|
+
} else {
|
|
149
|
+
this.blockRootProof = {
|
|
150
|
+
isProving: true
|
|
151
|
+
};
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
90
154
|
}
|
|
91
155
|
setBlockRootRollupProof(provingOutput) {
|
|
92
|
-
this.
|
|
156
|
+
this.blockRootProof = {
|
|
157
|
+
provingOutput
|
|
158
|
+
};
|
|
159
|
+
return this.parentCheckpoint.setBlockRootRollupProof(this.index, provingOutput);
|
|
160
|
+
}
|
|
161
|
+
getBlockRootRollupOutput() {
|
|
162
|
+
return this.blockRootProof?.provingOutput?.inputs;
|
|
163
|
+
}
|
|
164
|
+
async buildBlockHeader() {
|
|
165
|
+
if (this.isAcceptingTxs()) {
|
|
166
|
+
throw new Error('All txs must be added to the block before building the header.');
|
|
167
|
+
}
|
|
168
|
+
if (!this.endState) {
|
|
169
|
+
throw new Error('Call `setEndState` first.');
|
|
170
|
+
}
|
|
171
|
+
if (!this.endSpongeBlob) {
|
|
172
|
+
throw new Error('Call `setEndSpongeBlob` first.');
|
|
173
|
+
}
|
|
174
|
+
const endSpongeBlob = this.endSpongeBlob.clone();
|
|
175
|
+
const endSpongeBlobHash = await endSpongeBlob.squeeze();
|
|
176
|
+
this.builtBlockHeader = new BlockHeader(this.lastArchiveTreeSnapshot, this.endState, endSpongeBlobHash, this.#getGlobalVariables(), this.#getTotalFees(), new Fr(this.#getTotalManaUsed()));
|
|
177
|
+
return this.builtBlockHeader;
|
|
93
178
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
return this.txs;
|
|
179
|
+
getBuiltBlockHeader() {
|
|
180
|
+
return this.builtBlockHeader;
|
|
97
181
|
}
|
|
98
|
-
|
|
99
|
-
|
|
182
|
+
setBuiltArchive(archive) {
|
|
183
|
+
this.builtArchive = archive;
|
|
184
|
+
}
|
|
185
|
+
getBuiltArchive() {
|
|
186
|
+
return this.builtArchive;
|
|
187
|
+
}
|
|
188
|
+
getStartSpongeBlob() {
|
|
189
|
+
return this.startSpongeBlob;
|
|
190
|
+
}
|
|
191
|
+
setEndSpongeBlob(endSpongeBlob) {
|
|
192
|
+
this.endSpongeBlob = endSpongeBlob;
|
|
193
|
+
}
|
|
194
|
+
getEndSpongeBlob() {
|
|
195
|
+
return this.endSpongeBlob;
|
|
196
|
+
}
|
|
197
|
+
setEndState(endState) {
|
|
198
|
+
this.endState = endState;
|
|
199
|
+
}
|
|
200
|
+
hasEndState() {
|
|
201
|
+
return !!this.endState;
|
|
202
|
+
}
|
|
203
|
+
getBlockEndBlobFields() {
|
|
204
|
+
return encodeBlockEndBlobData(this.getBlockEndBlobData());
|
|
205
|
+
}
|
|
206
|
+
getBlockEndBlobData() {
|
|
207
|
+
if (!this.endState) {
|
|
208
|
+
throw new Error('Call `setEndState` first.');
|
|
209
|
+
}
|
|
210
|
+
const partial = this.endState.partial;
|
|
211
|
+
return {
|
|
212
|
+
blockEndMarker: {
|
|
213
|
+
numTxs: this.totalNumTxs,
|
|
214
|
+
timestamp: this.timestamp,
|
|
215
|
+
blockNumber: this.blockNumber
|
|
216
|
+
},
|
|
217
|
+
blockEndStateField: {
|
|
218
|
+
l1ToL2MessageNextAvailableLeafIndex: this.newL1ToL2MessageTreeSnapshot.nextAvailableLeafIndex,
|
|
219
|
+
noteHashNextAvailableLeafIndex: partial.noteHashTree.nextAvailableLeafIndex,
|
|
220
|
+
nullifierNextAvailableLeafIndex: partial.nullifierTree.nextAvailableLeafIndex,
|
|
221
|
+
publicDataNextAvailableLeafIndex: partial.publicDataTree.nextAvailableLeafIndex,
|
|
222
|
+
totalManaUsed: this.#getTotalManaUsed()
|
|
223
|
+
},
|
|
224
|
+
lastArchiveRoot: this.lastArchiveTreeSnapshot.root,
|
|
225
|
+
noteHashRoot: partial.noteHashTree.root,
|
|
226
|
+
nullifierRoot: partial.nullifierTree.root,
|
|
227
|
+
publicDataRoot: partial.publicDataTree.root,
|
|
228
|
+
l1ToL2MessageRoot: this.isFirstBlock ? this.newL1ToL2MessageTreeSnapshot.root : undefined
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
getBlockBlobData() {
|
|
232
|
+
return {
|
|
233
|
+
...this.getBlockEndBlobData(),
|
|
234
|
+
txs: this.getTxEffects().map((t)=>t.toTxBlobData())
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
getTxEffects() {
|
|
238
|
+
return this.txs.map((t)=>t.processedTx.txEffect);
|
|
100
239
|
}
|
|
101
240
|
getParentLocation(location) {
|
|
102
|
-
return this.
|
|
241
|
+
return this.baseOrMergeProofs.getParentLocation(location);
|
|
103
242
|
}
|
|
104
243
|
getMergeRollupInputs(mergeLocation) {
|
|
105
|
-
const [left, right] = this.
|
|
244
|
+
const [left, right] = this.baseOrMergeProofs.getChildren(mergeLocation).map((c)=>c?.provingOutput);
|
|
106
245
|
if (!left || !right) {
|
|
107
|
-
throw new Error('At
|
|
246
|
+
throw new Error('At least one child is not ready for the merge rollup.');
|
|
108
247
|
}
|
|
109
|
-
return new
|
|
110
|
-
|
|
111
|
-
|
|
248
|
+
return new TxMergeRollupPrivateInputs([
|
|
249
|
+
toProofData(left),
|
|
250
|
+
toProofData(right)
|
|
112
251
|
]);
|
|
113
252
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
const proofs = this.#getChildProofsForBlockRoot();
|
|
119
|
-
const nonEmptyProofs = proofs.filter((p)=>!!p);
|
|
120
|
-
if (proofs.length !== nonEmptyProofs.length) {
|
|
121
|
-
throw new Error('At lease one child is not ready for the block root.');
|
|
253
|
+
getBlockRootRollupTypeAndInputs() {
|
|
254
|
+
const provingOutputs = this.#getChildProvingOutputsForBlockRoot();
|
|
255
|
+
if (!provingOutputs.every((p)=>!!p)) {
|
|
256
|
+
throw new Error('At least one child is not ready for the block root rollup.');
|
|
122
257
|
}
|
|
123
|
-
const
|
|
124
|
-
if (this.
|
|
125
|
-
|
|
126
|
-
lastArchive: this.lastArchiveSnapshot,
|
|
127
|
-
globalVariables: this.globalVariables,
|
|
128
|
-
vkTreeRoot: getVKTreeRoot(),
|
|
129
|
-
protocolContractTreeRoot
|
|
130
|
-
});
|
|
131
|
-
return {
|
|
132
|
-
rollupType: 'empty-block-root-rollup',
|
|
133
|
-
inputs: EmptyBlockRootRollupInputs.from({
|
|
134
|
-
data,
|
|
135
|
-
constants,
|
|
136
|
-
isPadding: false
|
|
137
|
-
})
|
|
138
|
-
};
|
|
258
|
+
const previousRollups = provingOutputs.map((p)=>toProofData(p));
|
|
259
|
+
if (this.isFirstBlock) {
|
|
260
|
+
return this.#getFirstBlockRootRollupTypeAndInputs(previousRollups);
|
|
139
261
|
}
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
if (previousRollupData.length === 1) {
|
|
262
|
+
const [leftRollup, rightRollup] = previousRollups;
|
|
263
|
+
if (!rightRollup) {
|
|
143
264
|
return {
|
|
144
|
-
rollupType: '
|
|
145
|
-
inputs: new
|
|
265
|
+
rollupType: 'rollup-block-root-single-tx',
|
|
266
|
+
inputs: new BlockRootSingleTxRollupPrivateInputs(leftRollup, this.lastArchiveSiblingPath)
|
|
146
267
|
};
|
|
147
268
|
} else {
|
|
148
269
|
return {
|
|
149
|
-
rollupType: 'block-root
|
|
150
|
-
inputs: new
|
|
270
|
+
rollupType: 'rollup-block-root',
|
|
271
|
+
inputs: new BlockRootRollupPrivateInputs([
|
|
272
|
+
leftRollup,
|
|
273
|
+
rightRollup
|
|
274
|
+
], this.lastArchiveSiblingPath)
|
|
151
275
|
};
|
|
152
276
|
}
|
|
153
277
|
}
|
|
154
|
-
|
|
155
|
-
if (!this.
|
|
278
|
+
#getFirstBlockRootRollupTypeAndInputs([leftRollup, rightRollup]) {
|
|
279
|
+
if (!this.rootParityProof?.provingOutput) {
|
|
156
280
|
throw new Error('Root parity is not ready.');
|
|
157
281
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
});
|
|
282
|
+
const l1ToL2Roots = toProofData(this.rootParityProof.provingOutput);
|
|
283
|
+
if (!leftRollup) {
|
|
284
|
+
return {
|
|
285
|
+
rollupType: 'rollup-block-root-first-empty-tx',
|
|
286
|
+
inputs: new BlockRootEmptyTxFirstRollupPrivateInputs(l1ToL2Roots, this.lastArchiveTreeSnapshot, this.headerOfLastBlockInPreviousCheckpoint.state, this.constants, this.timestamp, this.lastL1ToL2MessageSubtreeRootSiblingPath, this.lastArchiveSiblingPath)
|
|
287
|
+
};
|
|
288
|
+
} else if (!rightRollup) {
|
|
289
|
+
return {
|
|
290
|
+
rollupType: 'rollup-block-root-first-single-tx',
|
|
291
|
+
inputs: new BlockRootSingleTxFirstRollupPrivateInputs(l1ToL2Roots, leftRollup, this.lastL1ToL2MessageTreeSnapshot, this.lastL1ToL2MessageSubtreeRootSiblingPath, this.lastArchiveSiblingPath)
|
|
292
|
+
};
|
|
293
|
+
} else {
|
|
294
|
+
return {
|
|
295
|
+
rollupType: 'rollup-block-root-first',
|
|
296
|
+
inputs: new BlockRootFirstRollupPrivateInputs(l1ToL2Roots, [
|
|
297
|
+
leftRollup,
|
|
298
|
+
rightRollup
|
|
299
|
+
], this.lastL1ToL2MessageTreeSnapshot, this.lastL1ToL2MessageSubtreeRootSiblingPath, this.lastArchiveSiblingPath)
|
|
300
|
+
};
|
|
301
|
+
}
|
|
179
302
|
}
|
|
180
|
-
|
|
181
|
-
|
|
303
|
+
getParityRootInputs() {
|
|
304
|
+
const baseParityProvingOutputs = this.baseParityProofs.filter((p)=>!!p?.provingOutput).map((p)=>p.provingOutput);
|
|
305
|
+
if (baseParityProvingOutputs.length !== this.baseParityProofs.length) {
|
|
182
306
|
throw new Error('At lease one base parity is not ready.');
|
|
183
307
|
}
|
|
184
|
-
const children =
|
|
185
|
-
return new
|
|
308
|
+
const children = baseParityProvingOutputs.map((p)=>toProofData(p));
|
|
309
|
+
return new ParityRootPrivateInputs(assertLength(children, NUM_BASE_PARITY_PER_ROOT_PARITY));
|
|
186
310
|
}
|
|
187
311
|
// Returns a specific transaction proving state
|
|
188
312
|
getTxProvingState(txIndex) {
|
|
189
313
|
return this.txs[txIndex];
|
|
190
314
|
}
|
|
191
|
-
async buildHeaderFromProvingOutputs(
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
if (this.totalNumTxs !== 0) {
|
|
195
|
-
const previousRollupData = this.#getChildProofsForBlockRoot();
|
|
196
|
-
const lastRollup = previousRollupData[previousRollupData.length - 1];
|
|
197
|
-
if (!lastRollup) {
|
|
198
|
-
throw new Error('End state of the block is not available. Last rollup is not ready yet.');
|
|
199
|
-
}
|
|
200
|
-
endPartialState = lastRollup.inputs.end;
|
|
315
|
+
async buildHeaderFromProvingOutputs() {
|
|
316
|
+
if (!this.blockRootProof?.provingOutput) {
|
|
317
|
+
throw new Error('Block root rollup is not ready.');
|
|
201
318
|
}
|
|
202
|
-
|
|
203
|
-
return buildHeaderFromCircuitOutputs(previousRollupData.map((d)=>d.baseOrMergeRollupPublicInputs), this.rootParityProvingOutput.inputs, this.blockRootProvingOutput.inputs, endState, logger);
|
|
319
|
+
return await buildHeaderFromCircuitOutputs(this.blockRootProof.provingOutput.inputs);
|
|
204
320
|
}
|
|
205
321
|
isReadyForMergeRollup(location) {
|
|
206
|
-
return this.
|
|
322
|
+
return !!this.baseOrMergeProofs.getSibling(location)?.provingOutput;
|
|
207
323
|
}
|
|
208
324
|
// Returns true if we have sufficient inputs to execute the block root rollup
|
|
209
325
|
isReadyForBlockRootRollup() {
|
|
210
|
-
const childProofs = this.#
|
|
211
|
-
return this.
|
|
326
|
+
const childProofs = this.#getChildProvingOutputsForBlockRoot();
|
|
327
|
+
return (!this.isFirstBlock || !!this.rootParityProof?.provingOutput) && childProofs.every((p)=>!!p);
|
|
212
328
|
}
|
|
213
329
|
// Returns true if we have sufficient root parity inputs to execute the root parity circuit
|
|
214
330
|
isReadyForRootParity() {
|
|
215
|
-
return this.
|
|
331
|
+
return this.baseParityProofs.every((p)=>!!p?.provingOutput);
|
|
216
332
|
}
|
|
217
333
|
isComplete() {
|
|
218
|
-
return !!this.
|
|
334
|
+
return !!this.blockRootProof;
|
|
219
335
|
}
|
|
220
|
-
// Returns whether the proving state is still valid
|
|
221
336
|
verifyState() {
|
|
222
|
-
return this.
|
|
337
|
+
return this.parentCheckpoint.verifyState();
|
|
338
|
+
}
|
|
339
|
+
getError() {
|
|
340
|
+
return this.error;
|
|
223
341
|
}
|
|
224
342
|
reject(reason) {
|
|
225
343
|
this.error = reason;
|
|
226
|
-
this.
|
|
227
|
-
}
|
|
228
|
-
#getBlockRootRollupData(proverId) {
|
|
229
|
-
return BlockRootRollupData.from({
|
|
230
|
-
l1ToL2Roots: this.#getRootParityData(this.rootParityProvingOutput),
|
|
231
|
-
l1ToL2MessageSubtreeSiblingPath: this.l1ToL2MessageSubtreeSiblingPath,
|
|
232
|
-
newArchiveSiblingPath: this.newArchiveSiblingPath,
|
|
233
|
-
previousBlockHeader: this.previousBlockHeader,
|
|
234
|
-
proverId
|
|
235
|
-
});
|
|
344
|
+
this.parentCheckpoint.reject(reason);
|
|
236
345
|
}
|
|
237
|
-
|
|
238
|
-
const txEffects = this.txs.map((txProvingState)=>txProvingState.processedTx.txEffect);
|
|
239
|
-
const { blobFields, blobCommitments, blobsHash } = await buildBlobHints(txEffects);
|
|
240
|
-
return BlockRootRollupBlobData.from({
|
|
241
|
-
blobFields: padArrayEnd(blobFields, Fr.ZERO, FIELDS_PER_BLOB * BLOBS_PER_BLOCK),
|
|
242
|
-
blobCommitments: padArrayEnd(blobCommitments, [
|
|
243
|
-
Fr.ZERO,
|
|
244
|
-
Fr.ZERO
|
|
245
|
-
], BLOBS_PER_BLOCK),
|
|
246
|
-
blobsHash
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
#getChildProofsForBlockRoot() {
|
|
346
|
+
#getChildProvingOutputsForBlockRoot() {
|
|
250
347
|
if (this.totalNumTxs === 0) {
|
|
251
348
|
return [];
|
|
252
349
|
}
|
|
@@ -256,14 +353,29 @@ import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-
|
|
|
256
353
|
};
|
|
257
354
|
// If there's only 1 tx, its base rollup proof will be stored at the root.
|
|
258
355
|
return this.totalNumTxs === 1 ? [
|
|
259
|
-
this.
|
|
260
|
-
] : this.
|
|
356
|
+
this.baseOrMergeProofs.getNode(rootLocation)?.provingOutput
|
|
357
|
+
] : this.baseOrMergeProofs.getChildren(rootLocation).map((c)=>c?.provingOutput);
|
|
358
|
+
}
|
|
359
|
+
#getGlobalVariables() {
|
|
360
|
+
if (this.txs.length) {
|
|
361
|
+
return this.txs[0].processedTx.globalVariables;
|
|
362
|
+
}
|
|
363
|
+
const constants = this.constants;
|
|
364
|
+
return GlobalVariables.from({
|
|
365
|
+
chainId: constants.chainId,
|
|
366
|
+
version: constants.version,
|
|
367
|
+
blockNumber: this.blockNumber,
|
|
368
|
+
slotNumber: constants.slotNumber,
|
|
369
|
+
timestamp: this.timestamp,
|
|
370
|
+
coinbase: constants.coinbase,
|
|
371
|
+
feeRecipient: constants.feeRecipient,
|
|
372
|
+
gasFees: constants.gasFees
|
|
373
|
+
});
|
|
261
374
|
}
|
|
262
|
-
#
|
|
263
|
-
|
|
264
|
-
return new PreviousRollupData(inputs, proof, verificationKey.keyAsFields, new MembershipWitness(VK_TREE_HEIGHT, BigInt(leafIndex), getVKSiblingPath(leafIndex)));
|
|
375
|
+
#getTotalFees() {
|
|
376
|
+
return this.txs.reduce((acc, tx)=>acc.add(tx.processedTx.txEffect.transactionFee), Fr.ZERO);
|
|
265
377
|
}
|
|
266
|
-
#
|
|
267
|
-
return
|
|
378
|
+
#getTotalManaUsed() {
|
|
379
|
+
return this.txs.reduce((acc, tx)=>acc + BigInt(tx.processedTx.gasUsed.billedGas.l2Gas), 0n);
|
|
268
380
|
}
|
|
269
381
|
}
|