@aztec/prover-client 3.0.0-devnet.5 → 3.0.0-devnet.6-patch.1
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/block-factory/index.d.ts +1 -1
- package/dest/block-factory/light.d.ts +8 -8
- package/dest/block-factory/light.d.ts.map +1 -1
- package/dest/block-factory/light.js +37 -23
- package/dest/config.d.ts +1 -1
- package/dest/config.js +1 -1
- package/dest/index.d.ts +1 -1
- package/dest/light/lightweight_checkpoint_builder.d.ts +29 -0
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
- package/dest/light/lightweight_checkpoint_builder.js +108 -0
- package/dest/mocks/fixtures.d.ts +1 -4
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +7 -17
- package/dest/mocks/test_context.d.ts +27 -46
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +102 -116
- package/dest/orchestrator/block-building-helpers.d.ts +19 -21
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +93 -118
- package/dest/orchestrator/block-proving-state.d.ts +17 -11
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +81 -20
- package/dest/orchestrator/checkpoint-proving-state.d.ts +8 -8
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/checkpoint-proving-state.js +15 -16
- package/dest/orchestrator/epoch-proving-state.d.ts +10 -9
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +6 -6
- package/dest/orchestrator/index.d.ts +1 -1
- package/dest/orchestrator/orchestrator.d.ts +13 -13
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +54 -60
- package/dest/orchestrator/orchestrator_metrics.d.ts +1 -1
- package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.d.ts +6 -6
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.js +14 -23
- package/dest/prover-client/factory.d.ts +1 -1
- package/dest/prover-client/index.d.ts +1 -1
- package/dest/prover-client/prover-client.d.ts +1 -1
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/server-epoch-prover.d.ts +9 -8
- package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
- package/dest/prover-client/server-epoch-prover.js +4 -4
- package/dest/proving_broker/broker_prover_facade.d.ts +21 -21
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +7 -6
- package/dest/proving_broker/config.d.ts +12 -8
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +8 -2
- package/dest/proving_broker/factory.d.ts +1 -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 +1 -1
- package/dest/proving_broker/proof_store/factory.d.ts +2 -2
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +1 -1
- package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/index.d.ts +1 -1
- 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 +1 -1
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent_instrumentation.d.ts +1 -1
- package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.d.ts +2 -2
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +4 -3
- 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/persisted.d.ts +3 -2
- package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker_database/persisted.js +3 -2
- 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 +1 -1
- package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.d.ts +3 -2
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +3 -3
- package/dest/proving_broker/rpc.d.ts +4 -4
- package/dest/test/mock_proof_store.d.ts +3 -3
- package/dest/test/mock_proof_store.d.ts.map +1 -1
- package/dest/test/mock_prover.d.ts +5 -6
- package/dest/test/mock_prover.d.ts.map +1 -1
- package/dest/test/mock_prover.js +3 -3
- package/package.json +18 -17
- package/src/block-factory/light.ts +40 -43
- package/src/config.ts +1 -1
- package/src/light/lightweight_checkpoint_builder.ts +144 -0
- package/src/mocks/fixtures.ts +7 -30
- package/src/mocks/test_context.ts +145 -177
- package/src/orchestrator/block-building-helpers.ts +133 -215
- package/src/orchestrator/block-proving-state.ts +103 -25
- package/src/orchestrator/checkpoint-proving-state.ts +24 -20
- package/src/orchestrator/epoch-proving-state.ts +15 -11
- package/src/orchestrator/orchestrator.ts +76 -74
- package/src/orchestrator/tx-proving-state.ts +24 -33
- package/src/prover-client/server-epoch-prover.ts +8 -9
- package/src/proving_broker/broker_prover_facade.ts +32 -29
- package/src/proving_broker/config.ts +8 -1
- package/src/proving_broker/fixtures.ts +8 -3
- package/src/proving_broker/proving_broker.ts +4 -3
- package/src/proving_broker/proving_broker_database/memory.ts +2 -1
- package/src/proving_broker/proving_broker_database/persisted.ts +5 -4
- package/src/proving_broker/proving_broker_database.ts +2 -1
- package/src/proving_broker/proving_job_controller.ts +5 -4
- package/src/test/mock_prover.ts +9 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/checkpoint-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"checkpoint-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/checkpoint-proving-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { SpongeBlob } from '@aztec/blob-lib';
|
|
2
|
-
import {
|
|
1
|
+
import { SpongeBlob, encodeCheckpointBlobDataFromBlocks } from '@aztec/blob-lib';
|
|
2
|
+
import { BLOBS_PER_CHECKPOINT, FIELDS_PER_BLOB, NUM_MSGS_PER_BASE_PARITY } from '@aztec/constants';
|
|
3
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
3
4
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
4
|
-
import { BLS12Point
|
|
5
|
+
import { BLS12Point } from '@aztec/foundation/curves/bls12';
|
|
6
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
7
|
import { UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
6
|
-
import { getCheckpointBlobFields } from '@aztec/stdlib/checkpoint';
|
|
7
8
|
import { ParityBasePrivateInputs } from '@aztec/stdlib/parity';
|
|
8
9
|
import { BlockMergeRollupPrivateInputs, CheckpointRootRollupHints, CheckpointRootRollupPrivateInputs, CheckpointRootSingleBlockRollupPrivateInputs } from '@aztec/stdlib/rollup';
|
|
9
10
|
import { accumulateBlobs, buildBlobHints, toProofData } from './block-building-helpers.js';
|
|
@@ -12,7 +13,6 @@ export class CheckpointProvingState {
|
|
|
12
13
|
index;
|
|
13
14
|
constants;
|
|
14
15
|
totalNumBlocks;
|
|
15
|
-
totalNumBlobFields;
|
|
16
16
|
finalBlobBatchingChallenges;
|
|
17
17
|
headerOfLastBlockInPreviousCheckpoint;
|
|
18
18
|
lastArchiveSiblingPath;
|
|
@@ -31,13 +31,12 @@ export class CheckpointProvingState {
|
|
|
31
31
|
blobFields;
|
|
32
32
|
error;
|
|
33
33
|
firstBlockNumber;
|
|
34
|
-
constructor(index, constants, totalNumBlocks,
|
|
34
|
+
constructor(index, constants, totalNumBlocks, finalBlobBatchingChallenges, headerOfLastBlockInPreviousCheckpoint, lastArchiveSiblingPath, l1ToL2Messages, // The snapshot and sibling path before the new l1 to l2 message subtree is inserted.
|
|
35
35
|
lastL1ToL2MessageTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath, // The snapshot and sibling path after the new l1 to l2 message subtree is inserted.
|
|
36
36
|
newL1ToL2MessageTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath, parentEpoch, onBlobAccumulatorSet){
|
|
37
37
|
this.index = index;
|
|
38
38
|
this.constants = constants;
|
|
39
39
|
this.totalNumBlocks = totalNumBlocks;
|
|
40
|
-
this.totalNumBlobFields = totalNumBlobFields;
|
|
41
40
|
this.finalBlobBatchingChallenges = finalBlobBatchingChallenges;
|
|
42
41
|
this.headerOfLastBlockInPreviousCheckpoint = headerOfLastBlockInPreviousCheckpoint;
|
|
43
42
|
this.lastArchiveSiblingPath = lastArchiveSiblingPath;
|
|
@@ -50,13 +49,13 @@ export class CheckpointProvingState {
|
|
|
50
49
|
this.onBlobAccumulatorSet = onBlobAccumulatorSet;
|
|
51
50
|
this.blocks = [];
|
|
52
51
|
this.blockProofs = new UnbalancedTreeStore(totalNumBlocks);
|
|
53
|
-
this.firstBlockNumber = headerOfLastBlockInPreviousCheckpoint.globalVariables.blockNumber + 1;
|
|
52
|
+
this.firstBlockNumber = BlockNumber(headerOfLastBlockInPreviousCheckpoint.globalVariables.blockNumber + 1);
|
|
54
53
|
}
|
|
55
54
|
get epochNumber() {
|
|
56
55
|
return this.parentEpoch.epochNumber;
|
|
57
56
|
}
|
|
58
|
-
|
|
59
|
-
const index = blockNumber - this.firstBlockNumber;
|
|
57
|
+
startNewBlock(blockNumber, timestamp, totalNumTxs, lastArchiveTreeSnapshot, lastArchiveSiblingPath) {
|
|
58
|
+
const index = Number(blockNumber) - Number(this.firstBlockNumber);
|
|
60
59
|
if (index >= this.totalNumBlocks) {
|
|
61
60
|
throw new Error(`Unable to start a new block at index ${index}. Expected at most ${this.totalNumBlocks} blocks.`);
|
|
62
61
|
}
|
|
@@ -65,7 +64,7 @@ export class CheckpointProvingState {
|
|
|
65
64
|
// happen in the first block.
|
|
66
65
|
const lastL1ToL2MessageTreeSnapshot = index === 0 ? this.lastL1ToL2MessageTreeSnapshot : this.newL1ToL2MessageTreeSnapshot;
|
|
67
66
|
const lastL1ToL2MessageSubtreeRootSiblingPath = index === 0 ? this.lastL1ToL2MessageSubtreeRootSiblingPath : this.newL1ToL2MessageSubtreeRootSiblingPath;
|
|
68
|
-
const startSpongeBlob = index === 0 ?
|
|
67
|
+
const startSpongeBlob = index === 0 ? SpongeBlob.init() : this.blocks[index - 1]?.getEndSpongeBlob();
|
|
69
68
|
if (!startSpongeBlob) {
|
|
70
69
|
throw new Error('Cannot start a new block before the trees have progressed from the tx effects in the previous block.');
|
|
71
70
|
}
|
|
@@ -118,10 +117,10 @@ export class CheckpointProvingState {
|
|
|
118
117
|
return new ParityBasePrivateInputs(messages, this.constants.vkTreeRoot);
|
|
119
118
|
}
|
|
120
119
|
async accumulateBlobs(startBlobAccumulator) {
|
|
121
|
-
if (this.isAcceptingBlocks() || this.blocks.some((b)
|
|
120
|
+
if (this.isAcceptingBlocks() || this.blocks.some((b)=>!b?.hasEndState())) {
|
|
122
121
|
return;
|
|
123
122
|
}
|
|
124
|
-
this.blobFields =
|
|
123
|
+
this.blobFields = encodeCheckpointBlobDataFromBlocks(this.blocks.map((b)=>b.getBlockBlobData()));
|
|
125
124
|
this.endBlobAccumulator = await accumulateBlobs(this.blobFields, startBlobAccumulator);
|
|
126
125
|
this.startBlobAccumulator = startBlobAccumulator;
|
|
127
126
|
this.onBlobAccumulatorSet(this);
|
|
@@ -163,8 +162,8 @@ export class CheckpointProvingState {
|
|
|
163
162
|
previousArchiveSiblingPath: this.lastArchiveSiblingPath,
|
|
164
163
|
startBlobAccumulator: this.startBlobAccumulator.toBlobAccumulator(),
|
|
165
164
|
finalBlobChallenges: this.finalBlobBatchingChallenges,
|
|
166
|
-
blobFields: padArrayEnd(blobFields, Fr.ZERO, FIELDS_PER_BLOB *
|
|
167
|
-
blobCommitments: padArrayEnd(blobCommitments, BLS12Point.ZERO,
|
|
165
|
+
blobFields: padArrayEnd(blobFields, Fr.ZERO, FIELDS_PER_BLOB * BLOBS_PER_CHECKPOINT),
|
|
166
|
+
blobCommitments: padArrayEnd(blobCommitments, BLS12Point.ZERO, BLOBS_PER_CHECKPOINT),
|
|
168
167
|
blobsHash
|
|
169
168
|
});
|
|
170
169
|
const [left, right] = nonEmptyProofs.map((p)=>toProofData(p));
|
|
@@ -174,7 +173,7 @@ export class CheckpointProvingState {
|
|
|
174
173
|
], hints);
|
|
175
174
|
}
|
|
176
175
|
getBlockProvingStateByBlockNumber(blockNumber) {
|
|
177
|
-
const index = blockNumber - this.firstBlockNumber;
|
|
176
|
+
const index = Number(blockNumber) - Number(this.firstBlockNumber);
|
|
178
177
|
return this.blocks[index];
|
|
179
178
|
}
|
|
180
179
|
isReadyForBlockMerge(location) {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { BatchedBlob, type FinalBlobBatchingChallenges } from '@aztec/blob-lib';
|
|
2
2
|
import type { ARCHIVE_HEIGHT, L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
|
|
3
|
-
import
|
|
3
|
+
import { BlockNumber, EpochNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
5
|
import type { Tuple } from '@aztec/foundation/serialize';
|
|
5
6
|
import { type TreeNodeLocation } from '@aztec/foundation/trees';
|
|
6
7
|
import type { PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
7
8
|
import type { Proof } from '@aztec/stdlib/proofs';
|
|
8
|
-
import { CheckpointConstantData, CheckpointMergeRollupPrivateInputs, CheckpointPaddingRollupPrivateInputs, CheckpointRollupPublicInputs,
|
|
9
|
+
import { CheckpointConstantData, CheckpointMergeRollupPrivateInputs, CheckpointPaddingRollupPrivateInputs, CheckpointRollupPublicInputs, PublicChonkVerifierPublicInputs, RootRollupPrivateInputs, type RootRollupPublicInputs } from '@aztec/stdlib/rollup';
|
|
9
10
|
import type { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
|
|
10
11
|
import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
11
12
|
import { CheckpointProvingState } from './checkpoint-proving-state.js';
|
|
@@ -24,7 +25,7 @@ export type ProvingResult = {
|
|
|
24
25
|
*/
|
|
25
26
|
export declare class EpochProvingState {
|
|
26
27
|
#private;
|
|
27
|
-
readonly epochNumber:
|
|
28
|
+
readonly epochNumber: EpochNumber;
|
|
28
29
|
readonly totalNumCheckpoints: number;
|
|
29
30
|
private readonly finalBlobBatchingChallenges;
|
|
30
31
|
private onCheckpointBlobAccumulatorSet;
|
|
@@ -38,12 +39,12 @@ export declare class EpochProvingState {
|
|
|
38
39
|
private endBlobAccumulator;
|
|
39
40
|
private finalBatchedBlob;
|
|
40
41
|
private provingStateLifecycle;
|
|
41
|
-
readonly
|
|
42
|
-
constructor(epochNumber:
|
|
43
|
-
startNewCheckpoint(checkpointIndex: number, constants: CheckpointConstantData, totalNumBlocks: number,
|
|
42
|
+
readonly cachedChonkVerifierProofs: Map<string, Promise<PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, 531>>>;
|
|
43
|
+
constructor(epochNumber: EpochNumber, totalNumCheckpoints: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges, onCheckpointBlobAccumulatorSet: (checkpoint: CheckpointProvingState) => void, completionCallback: (result: ProvingResult) => void, rejectionCallback: (reason: string) => void);
|
|
44
|
+
startNewCheckpoint(checkpointIndex: number, constants: CheckpointConstantData, totalNumBlocks: number, previousBlockHeader: BlockHeader, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, l1ToL2Messages: Fr[], lastL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>, newL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>): CheckpointProvingState;
|
|
44
45
|
getCheckpointProvingState(index: number): CheckpointProvingState | undefined;
|
|
45
|
-
getCheckpointProvingStateByBlockNumber(blockNumber:
|
|
46
|
-
getBlockProvingStateByBlockNumber(blockNumber:
|
|
46
|
+
getCheckpointProvingStateByBlockNumber(blockNumber: BlockNumber): CheckpointProvingState | undefined;
|
|
47
|
+
getBlockProvingStateByBlockNumber(blockNumber: BlockNumber): import("./block-proving-state.js").BlockProvingState | undefined;
|
|
47
48
|
verifyState(): boolean;
|
|
48
49
|
isAcceptingCheckpoints(): boolean;
|
|
49
50
|
setCheckpointRootRollupProof(checkpointIndex: number, provingOutput: PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): TreeNodeLocation;
|
|
@@ -70,4 +71,4 @@ export declare class EpochProvingState {
|
|
|
70
71
|
reject(reason: string): void;
|
|
71
72
|
resolve(result: ProvingResult): void;
|
|
72
73
|
}
|
|
73
|
-
//# sourceMappingURL=
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtcHJvdmluZy1zdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yY2hlc3RyYXRvci9lcG9jaC1wcm92aW5nLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQTBCLEtBQUssMkJBQTJCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RyxPQUFPLEtBQUssRUFDVixjQUFjLEVBQ2QsNkNBQTZDLEVBRTdDLHlDQUF5QyxFQUMxQyxNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0UsT0FBTyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQXVCLE1BQU0seUJBQXlCLENBQUM7QUFDckYsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGtDQUFrQyxFQUNsQyxvQ0FBb0MsRUFDcEMsNEJBQTRCLEVBQzVCLCtCQUErQixFQUMvQix1QkFBdUIsRUFDdkIsS0FBSyxzQkFBc0IsRUFDNUIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlwRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV2RSxNQUFNLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxZQUFZ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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA0B,KAAK,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACxG,OAAO,KAAK,EACV,cAAc,EACd,6CAA6C,EAE7C,yCAAyC,EAC1C,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"epoch-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,8 +30,8 @@ var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
|
|
|
30
30
|
endBlobAccumulator;
|
|
31
31
|
finalBatchedBlob;
|
|
32
32
|
provingStateLifecycle;
|
|
33
|
-
// Map from tx hash to
|
|
34
|
-
|
|
33
|
+
// Map from tx hash to chonk verifier proof promise. Used when kickstarting chonk verifier proofs before tx processing.
|
|
34
|
+
cachedChonkVerifierProofs;
|
|
35
35
|
constructor(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges, onCheckpointBlobAccumulatorSet, completionCallback, rejectionCallback){
|
|
36
36
|
this.epochNumber = epochNumber;
|
|
37
37
|
this.totalNumCheckpoints = totalNumCheckpoints;
|
|
@@ -41,17 +41,17 @@ var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
|
|
|
41
41
|
this.rejectionCallback = rejectionCallback;
|
|
42
42
|
this.checkpoints = [];
|
|
43
43
|
this.provingStateLifecycle = 0;
|
|
44
|
-
this.
|
|
44
|
+
this.cachedChonkVerifierProofs = new Map();
|
|
45
45
|
this.checkpointProofs = new UnbalancedTreeStore(totalNumCheckpoints);
|
|
46
46
|
this.startBlobAccumulator = BatchedBlobAccumulator.newWithChallenges(finalBlobBatchingChallenges);
|
|
47
47
|
}
|
|
48
48
|
// Adds a block to the proving state, returns its index
|
|
49
49
|
// Will update the proving life cycle if this is the last block
|
|
50
|
-
startNewCheckpoint(checkpointIndex, constants, totalNumBlocks,
|
|
50
|
+
startNewCheckpoint(checkpointIndex, constants, totalNumBlocks, previousBlockHeader, lastArchiveSiblingPath, l1ToL2Messages, lastL1ToL2MessageTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath, newL1ToL2MessageTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath) {
|
|
51
51
|
if (checkpointIndex >= this.totalNumCheckpoints) {
|
|
52
52
|
throw new Error(`Unable to start a new checkpoint at index ${checkpointIndex}. Expected at most ${this.totalNumCheckpoints} checkpoints.`);
|
|
53
53
|
}
|
|
54
|
-
const checkpoint = new CheckpointProvingState(checkpointIndex, constants, totalNumBlocks,
|
|
54
|
+
const checkpoint = new CheckpointProvingState(checkpointIndex, constants, totalNumBlocks, this.finalBlobBatchingChallenges, previousBlockHeader, lastArchiveSiblingPath, l1ToL2Messages, lastL1ToL2MessageTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath, newL1ToL2MessageTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath, this, this.onCheckpointBlobAccumulatorSet);
|
|
55
55
|
this.checkpoints[checkpointIndex] = checkpoint;
|
|
56
56
|
if (this.checkpoints.filter((c)=>!!c).length === this.totalNumCheckpoints) {
|
|
57
57
|
this.provingStateLifecycle = 1;
|
|
@@ -62,7 +62,7 @@ var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
|
|
|
62
62
|
return this.checkpoints[index];
|
|
63
63
|
}
|
|
64
64
|
getCheckpointProvingStateByBlockNumber(blockNumber) {
|
|
65
|
-
return this.checkpoints.find((c)=>c && blockNumber >= c.firstBlockNumber && blockNumber < c.firstBlockNumber + c.totalNumBlocks);
|
|
65
|
+
return this.checkpoints.find((c)=>c && Number(blockNumber) >= Number(c.firstBlockNumber) && Number(blockNumber) < Number(c.firstBlockNumber) + c.totalNumBlocks);
|
|
66
66
|
}
|
|
67
67
|
getBlockProvingStateByBlockNumber(blockNumber) {
|
|
68
68
|
return this.getCheckpointProvingStateByBlockNumber(blockNumber)?.getBlockProvingStateByBlockNumber(blockNumber);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { ProvingOrchestrator } from './orchestrator.js';
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUMifQ==
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { BatchedBlob, FinalBlobBatchingChallenges } from '@aztec/blob-lib';
|
|
2
|
-
import {
|
|
1
|
+
import { BatchedBlob, FinalBlobBatchingChallenges } from '@aztec/blob-lib/types';
|
|
2
|
+
import { BlockNumber, EpochNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
4
|
import { EthAddress } from '@aztec/stdlib/block';
|
|
4
5
|
import type { EpochProver, ForkMerkleTreeOperations, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
5
6
|
import type { Proof } from '@aztec/stdlib/proofs';
|
|
@@ -34,8 +35,8 @@ export declare class ProvingOrchestrator implements EpochProver {
|
|
|
34
35
|
get tracer(): Tracer;
|
|
35
36
|
getProverId(): EthAddress;
|
|
36
37
|
stop(): Promise<void>;
|
|
37
|
-
startNewEpoch(epochNumber:
|
|
38
|
-
startNewCheckpoint(checkpointIndex: number, constants: CheckpointConstantData, l1ToL2Messages: Fr[], totalNumBlocks: number,
|
|
38
|
+
startNewEpoch(epochNumber: EpochNumber, totalNumCheckpoints: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges): void;
|
|
39
|
+
startNewCheckpoint(checkpointIndex: number, constants: CheckpointConstantData, l1ToL2Messages: Fr[], totalNumBlocks: number, headerOfLastBlockInPreviousCheckpoint: BlockHeader): Promise<void>;
|
|
39
40
|
/**
|
|
40
41
|
* Starts off a new block
|
|
41
42
|
* @param blockNumber - The block number
|
|
@@ -43,23 +44,22 @@ export declare class ProvingOrchestrator implements EpochProver {
|
|
|
43
44
|
* block that doesn't have any txs.
|
|
44
45
|
* @param totalNumTxs - The total number of txs in the block
|
|
45
46
|
*/
|
|
46
|
-
startNewBlock(blockNumber:
|
|
47
|
+
startNewBlock(blockNumber: BlockNumber, timestamp: UInt64, totalNumTxs: number): Promise<void>;
|
|
47
48
|
/**
|
|
48
49
|
* The interface to add simulated transactions to the scheduler. This can only be called once per block.
|
|
49
50
|
* @param txs - The transactions to be proven
|
|
50
51
|
*/
|
|
51
52
|
addTxs(txs: ProcessedTx[]): Promise<void>;
|
|
52
53
|
/**
|
|
53
|
-
* Kickstarts
|
|
54
|
-
* Note that if the
|
|
54
|
+
* Kickstarts chonk verifier circuits for the specified txs. These will be used during epoch proving.
|
|
55
|
+
* Note that if the chonk verifier circuits are not started this way, they will be started nontheless after processing.
|
|
55
56
|
*/
|
|
56
|
-
|
|
57
|
+
startChonkVerifierCircuits(txs: Tx[]): Promise<void>;
|
|
57
58
|
/**
|
|
58
59
|
* Marks the block as completed.
|
|
59
60
|
* Computes the block header and updates the archive tree.
|
|
60
61
|
*/
|
|
61
|
-
setBlockCompleted(blockNumber:
|
|
62
|
-
private buildL2BlockHeader;
|
|
62
|
+
setBlockCompleted(blockNumber: BlockNumber, expectedHeader?: BlockHeader): Promise<BlockHeader>;
|
|
63
63
|
protected verifyBuiltBlockAgainstSyncedState(provingState: BlockProvingState): Promise<void>;
|
|
64
64
|
/**
|
|
65
65
|
* Cancel any further proving
|
|
@@ -83,8 +83,8 @@ export declare class ProvingOrchestrator implements EpochProver {
|
|
|
83
83
|
private updateL1ToL2MessageTree;
|
|
84
84
|
private prepareBaseRollupInputs;
|
|
85
85
|
private enqueueBaseRollup;
|
|
86
|
-
private
|
|
87
|
-
private
|
|
86
|
+
private getOrEnqueueChonkVerifier;
|
|
87
|
+
private doEnqueueChonkVerifier;
|
|
88
88
|
private enqueueMergeRollup;
|
|
89
89
|
private enqueueBlockRootRollup;
|
|
90
90
|
private enqueueBaseParityCircuit;
|
|
@@ -110,4 +110,4 @@ export declare class ProvingOrchestrator implements EpochProver {
|
|
|
110
110
|
private enqueueVM;
|
|
111
111
|
private checkAndEnqueueBaseRollup;
|
|
112
112
|
}
|
|
113
|
-
//# sourceMappingURL=
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JjaGVzdHJhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JjaGVzdHJhdG9yL29yY2hlc3RyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFjLE1BQU0sdUJBQXVCLENBQUM7QUFRN0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUzRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFTcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUNWLFdBQVcsRUFDWCx3QkFBd0IsRUFHeEIsbUJBQW1CLEVBQ3BCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQU1MLHNCQUFzQixFQUt0QixzQkFBc0IsRUFDdkIsTUFBTSxzQkFBc0IsQ0FBQztBQUc5QixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JFLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFFTCxLQUFLLGVBQWUsRUFDcEIsS0FBSyxNQUFNLEVBSVosTUFBTSx5QkFBeUIsQ0FBQztBQWVqQyxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBUWxFOzs7Ozs7Ozs7R0FTRztBQUVIOztHQUVHO0FBQ0gscUJBQWEsbUJBQW9CLFlBQVcsV0FBVztJQVVuRCxPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUTtJQVgzQixPQUFPLENBQUMsWUFBWSxDQUE0QztJQUNoRSxP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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAc,MAAM,
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,21 +5,21 @@ function _ts_decorate(decorators, target, key, desc) {
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
}
|
|
7
7
|
import { L1_TO_L2_MSG_SUBTREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants';
|
|
8
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
8
9
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
10
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
9
11
|
import { AbortError } from '@aztec/foundation/error';
|
|
10
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
11
12
|
import { createLogger } from '@aztec/foundation/log';
|
|
12
13
|
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
13
14
|
import { assertLength } from '@aztec/foundation/serialize';
|
|
14
15
|
import { pushTestData } from '@aztec/foundation/testing';
|
|
15
16
|
import { elapsed } from '@aztec/foundation/timer';
|
|
16
17
|
import { readAvmMinimalPublicTxInputsFromFile } from '@aztec/simulator/public/fixtures';
|
|
17
|
-
import { createBlockEndMarker } from '@aztec/stdlib/block';
|
|
18
18
|
import { BlockRootEmptyTxFirstRollupPrivateInputs, BlockRootFirstRollupPrivateInputs, BlockRootSingleTxFirstRollupPrivateInputs, BlockRootSingleTxRollupPrivateInputs, CheckpointRootSingleBlockRollupPrivateInputs, PrivateTxBaseRollupPrivateInputs } from '@aztec/stdlib/rollup';
|
|
19
19
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
20
20
|
import { Attributes, getTelemetryClient, trackSpan, wrapCallbackInSpan } from '@aztec/telemetry-client';
|
|
21
21
|
import { inspect } from 'util';
|
|
22
|
-
import {
|
|
22
|
+
import { buildHeaderFromCircuitOutputs, getLastSiblingPath, getPublicChonkVerifierPrivateInputsFromTx, getRootTreeSiblingPath, getSubtreeSiblingPath, getTreeSnapshot, insertSideEffectsAndBuildBaseRollupHints, validatePartialState, validateTx } from './block-building-helpers.js';
|
|
23
23
|
import { EpochProvingState } from './epoch-proving-state.js';
|
|
24
24
|
import { ProvingOrchestratorMetrics } from './orchestrator_metrics.js';
|
|
25
25
|
import { TxProvingState } from './tx-proving-state.js';
|
|
@@ -43,6 +43,7 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
43
43
|
pendingProvingJobs;
|
|
44
44
|
provingPromise;
|
|
45
45
|
metrics;
|
|
46
|
+
// eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
|
|
46
47
|
dbs;
|
|
47
48
|
constructor(dbProvider, prover, proverId, telemetryClient = getTelemetryClient()){
|
|
48
49
|
this.dbProvider = dbProvider;
|
|
@@ -77,7 +78,7 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
77
78
|
this.provingState = new EpochProvingState(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges, (provingState)=>this.checkAndEnqueueCheckpointRootRollup(provingState), resolve, reject);
|
|
78
79
|
this.provingPromise = promise;
|
|
79
80
|
}
|
|
80
|
-
async startNewCheckpoint(checkpointIndex, constants, l1ToL2Messages, totalNumBlocks,
|
|
81
|
+
async startNewCheckpoint(checkpointIndex, constants, l1ToL2Messages, totalNumBlocks, headerOfLastBlockInPreviousCheckpoint) {
|
|
81
82
|
if (!this.provingState) {
|
|
82
83
|
throw new Error('Empty epoch proving state. Call startNewEpoch before starting a checkpoint.');
|
|
83
84
|
}
|
|
@@ -87,13 +88,13 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
87
88
|
// Fork world state at the end of the immediately previous block.
|
|
88
89
|
const lastBlockNumber = headerOfLastBlockInPreviousCheckpoint.globalVariables.blockNumber;
|
|
89
90
|
const db = await this.dbProvider.fork(lastBlockNumber);
|
|
90
|
-
const firstBlockNumber = lastBlockNumber + 1;
|
|
91
|
+
const firstBlockNumber = BlockNumber(lastBlockNumber + 1);
|
|
91
92
|
this.dbs.set(firstBlockNumber, db);
|
|
92
93
|
// Get archive sibling path before any block in this checkpoint lands.
|
|
93
94
|
const lastArchiveSiblingPath = await getLastSiblingPath(MerkleTreeId.ARCHIVE, db);
|
|
94
95
|
// Insert all the l1 to l2 messages into the db. And get the states before and after the insertion.
|
|
95
96
|
const { lastL1ToL2MessageTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath, newL1ToL2MessageTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath } = await this.updateL1ToL2MessageTree(l1ToL2Messages, db);
|
|
96
|
-
this.provingState.startNewCheckpoint(checkpointIndex, constants, totalNumBlocks,
|
|
97
|
+
this.provingState.startNewCheckpoint(checkpointIndex, constants, totalNumBlocks, headerOfLastBlockInPreviousCheckpoint, lastArchiveSiblingPath, l1ToL2Messages, lastL1ToL2MessageTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath, newL1ToL2MessageTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath);
|
|
97
98
|
}
|
|
98
99
|
/**
|
|
99
100
|
* Starts off a new block
|
|
@@ -113,18 +114,18 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
113
114
|
throw new Error(`Checkpoint not accepting further blocks.`);
|
|
114
115
|
}
|
|
115
116
|
const constants = checkpointProvingState.constants;
|
|
116
|
-
logger.info(`Starting block ${blockNumber} for slot ${constants.slotNumber
|
|
117
|
+
logger.info(`Starting block ${blockNumber} for slot ${constants.slotNumber}.`);
|
|
117
118
|
// Fork the db only when it's not already set. The db for the first block is set in `startNewCheckpoint`.
|
|
118
119
|
if (!this.dbs.has(blockNumber)) {
|
|
119
120
|
// Fork world state at the end of the immediately previous block
|
|
120
|
-
const db = await this.dbProvider.fork(blockNumber - 1);
|
|
121
|
+
const db = await this.dbProvider.fork(BlockNumber(blockNumber - 1));
|
|
121
122
|
this.dbs.set(blockNumber, db);
|
|
122
123
|
}
|
|
123
124
|
const db = this.dbs.get(blockNumber);
|
|
124
125
|
// Get archive snapshot and sibling path before any txs in this block lands.
|
|
125
126
|
const lastArchiveTreeSnapshot = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
|
|
126
127
|
const lastArchiveSiblingPath = await getRootTreeSiblingPath(MerkleTreeId.ARCHIVE, db);
|
|
127
|
-
const blockProvingState =
|
|
128
|
+
const blockProvingState = checkpointProvingState.startNewBlock(blockNumber, timestamp, totalNumTxs, lastArchiveTreeSnapshot, lastArchiveSiblingPath);
|
|
128
129
|
// Enqueue base parity circuits for the first block in the checkpoint.
|
|
129
130
|
if (blockProvingState.index === 0) {
|
|
130
131
|
for(let i = 0; i < NUM_BASE_PARITY_PER_ROOT_PARITY; i++){
|
|
@@ -134,10 +135,11 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
134
135
|
// Because `addTxs` won't be called for a block without txs, and that's where the sponge blob state is computed.
|
|
135
136
|
// We need to set its end sponge blob here, which will become the start sponge blob for the next block.
|
|
136
137
|
if (totalNumTxs === 0) {
|
|
138
|
+
const endState = await db.getStateReference();
|
|
139
|
+
blockProvingState.setEndState(endState);
|
|
137
140
|
const endSpongeBlob = blockProvingState.getStartSpongeBlob().clone();
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
]);
|
|
141
|
+
const blockEndBlobFields = blockProvingState.getBlockEndBlobFields();
|
|
142
|
+
await endSpongeBlob.absorb(blockEndBlobFields);
|
|
141
143
|
blockProvingState.setEndSpongeBlob(endSpongeBlob);
|
|
142
144
|
// And also try to accumulate the blobs as far as we can:
|
|
143
145
|
await this.provingState.setBlobAccumulators();
|
|
@@ -156,7 +158,7 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
156
158
|
logger.warn(`Provided no txs to orchestrator addTxs.`);
|
|
157
159
|
return;
|
|
158
160
|
}
|
|
159
|
-
const blockNumber = txs[0].globalVariables.blockNumber;
|
|
161
|
+
const blockNumber = BlockNumber(txs[0].globalVariables.blockNumber);
|
|
160
162
|
const provingState = this.provingState.getBlockProvingStateByBlockNumber(blockNumber);
|
|
161
163
|
if (!provingState) {
|
|
162
164
|
throw new Error(`Proving state for block ${blockNumber} not found. Call startNewBlock first.`);
|
|
@@ -188,7 +190,7 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
188
190
|
const txProvingState = new TxProvingState(tx, hints, treeSnapshots, this.proverId.toField());
|
|
189
191
|
const txIndex = provingState.addNewTx(txProvingState);
|
|
190
192
|
if (txProvingState.requireAvmProof) {
|
|
191
|
-
this.
|
|
193
|
+
this.getOrEnqueueChonkVerifier(provingState, txIndex);
|
|
192
194
|
logger.debug(`Enqueueing public VM for tx ${txIndex}`);
|
|
193
195
|
this.enqueueVM(provingState, txIndex);
|
|
194
196
|
} else {
|
|
@@ -201,30 +203,31 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
201
203
|
});
|
|
202
204
|
}
|
|
203
205
|
}
|
|
204
|
-
await
|
|
205
|
-
|
|
206
|
-
|
|
206
|
+
const endState = await db.getStateReference();
|
|
207
|
+
provingState.setEndState(endState);
|
|
208
|
+
const blockEndBlobFields = provingState.getBlockEndBlobFields();
|
|
209
|
+
await spongeBlobState.absorb(blockEndBlobFields);
|
|
207
210
|
provingState.setEndSpongeBlob(spongeBlobState);
|
|
208
211
|
// Txs have been added to the block. Now try to accumulate the blobs as far as we can:
|
|
209
212
|
await this.provingState.setBlobAccumulators();
|
|
210
213
|
}
|
|
211
214
|
/**
|
|
212
|
-
* Kickstarts
|
|
213
|
-
* Note that if the
|
|
214
|
-
*/
|
|
215
|
+
* Kickstarts chonk verifier circuits for the specified txs. These will be used during epoch proving.
|
|
216
|
+
* Note that if the chonk verifier circuits are not started this way, they will be started nontheless after processing.
|
|
217
|
+
*/ startChonkVerifierCircuits(txs) {
|
|
215
218
|
if (!this.provingState?.verifyState()) {
|
|
216
|
-
throw new Error(`Empty epoch proving state. call startNewEpoch before starting
|
|
219
|
+
throw new Error(`Empty epoch proving state. call startNewEpoch before starting chonk verifier circuits.`);
|
|
217
220
|
}
|
|
218
221
|
const publicTxs = txs.filter((tx)=>tx.data.forPublic);
|
|
219
222
|
for (const tx of publicTxs){
|
|
220
223
|
const txHash = tx.getTxHash().toString();
|
|
221
|
-
const privateInputs =
|
|
224
|
+
const privateInputs = getPublicChonkVerifierPrivateInputsFromTx(tx, this.proverId.toField());
|
|
222
225
|
const tubeProof = promiseWithResolvers();
|
|
223
|
-
logger.debug(`Starting
|
|
224
|
-
this.
|
|
226
|
+
logger.debug(`Starting chonk verifier circuit for tx ${txHash}`);
|
|
227
|
+
this.doEnqueueChonkVerifier(txHash, privateInputs, (proof)=>{
|
|
225
228
|
tubeProof.resolve(proof);
|
|
226
229
|
});
|
|
227
|
-
this.provingState.
|
|
230
|
+
this.provingState.cachedChonkVerifierProofs.set(txHash, tubeProof.promise);
|
|
228
231
|
}
|
|
229
232
|
return Promise.resolve();
|
|
230
233
|
}
|
|
@@ -248,28 +251,19 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
248
251
|
if (provingState.isAcceptingTxs()) {
|
|
249
252
|
throw new Error(`Block ${blockNumber} is still accepting txs. Call setBlockCompleted after all txs have been added.`);
|
|
250
253
|
}
|
|
251
|
-
//
|
|
254
|
+
// Given we've applied every change from this block, now assemble the block header:
|
|
252
255
|
logger.verbose(`Block ${blockNumber} completed. Assembling header.`);
|
|
253
|
-
const header = await
|
|
254
|
-
await this.verifyBuiltBlockAgainstSyncedState(provingState);
|
|
255
|
-
return header;
|
|
256
|
-
}
|
|
257
|
-
async buildL2BlockHeader(provingState, expectedHeader) {
|
|
258
|
-
// Collect all txs in this block to build the header. The function calling this has made sure that all txs have been added.
|
|
259
|
-
const txs = provingState.getProcessedTxs();
|
|
260
|
-
const startSpongeBlob = provingState.getStartSpongeBlob();
|
|
261
|
-
// Get db for this block
|
|
262
|
-
const db = this.dbs.get(provingState.blockNumber);
|
|
263
|
-
// Given we've applied every change from this block, now assemble the block header
|
|
264
|
-
// and update the archive tree, so we're ready to start processing the next block
|
|
265
|
-
const header = await buildBlockHeaderFromTxs(txs, provingState.getGlobalVariables(), startSpongeBlob, db);
|
|
256
|
+
const header = await provingState.buildBlockHeader();
|
|
266
257
|
if (expectedHeader && !header.equals(expectedHeader)) {
|
|
267
258
|
logger.error(`Block header mismatch: header=${header} expectedHeader=${expectedHeader}`);
|
|
268
259
|
throw new Error('Block header mismatch');
|
|
269
260
|
}
|
|
261
|
+
// Get db for this block
|
|
262
|
+
const db = this.dbs.get(provingState.blockNumber);
|
|
263
|
+
// Update the archive tree, so we're ready to start processing the next block:
|
|
270
264
|
logger.verbose(`Updating archive tree with block ${provingState.blockNumber} header ${(await header.hash()).toString()}`);
|
|
271
265
|
await db.updateArchive(header);
|
|
272
|
-
|
|
266
|
+
await this.verifyBuiltBlockAgainstSyncedState(provingState);
|
|
273
267
|
return header;
|
|
274
268
|
}
|
|
275
269
|
// Flagged as protected to disable in certain unit tests
|
|
@@ -406,7 +400,7 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
406
400
|
// Updates the merkle trees for a transaction. The first enqueued job for a transaction
|
|
407
401
|
async prepareBaseRollupInputs(tx, lastArchive, newL1ToL2MessageTreeSnapshot, startSpongeBlob, db) {
|
|
408
402
|
// We build the base rollup inputs using a mock proof and verification key.
|
|
409
|
-
// These will be overwritten later once we have proven the
|
|
403
|
+
// These will be overwritten later once we have proven the chonk verifier circuit and any public kernels
|
|
410
404
|
const [ms, hints] = await elapsed(insertSideEffectsAndBuildBaseRollupHints(tx, lastArchive, newL1ToL2MessageTreeSnapshot, startSpongeBlob, this.proverId.toField(), db));
|
|
411
405
|
this.metrics.recordBaseRollupInputs(ms);
|
|
412
406
|
const promises = [
|
|
@@ -463,43 +457,43 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
463
457
|
}
|
|
464
458
|
});
|
|
465
459
|
}
|
|
466
|
-
// Enqueues the public
|
|
460
|
+
// Enqueues the public chonk verifier circuit for a given transaction index, or reuses the one already enqueued.
|
|
467
461
|
// Once completed, will enqueue the the public tx base rollup.
|
|
468
|
-
|
|
462
|
+
getOrEnqueueChonkVerifier(provingState, txIndex) {
|
|
469
463
|
if (!provingState.verifyState()) {
|
|
470
|
-
logger.debug('Not running
|
|
464
|
+
logger.debug('Not running chonk verifier circuit, state invalid');
|
|
471
465
|
return;
|
|
472
466
|
}
|
|
473
467
|
const txProvingState = provingState.getTxProvingState(txIndex);
|
|
474
468
|
const txHash = txProvingState.processedTx.hash.toString();
|
|
475
469
|
NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH;
|
|
476
470
|
const handleResult = (result)=>{
|
|
477
|
-
logger.debug(`Got
|
|
471
|
+
logger.debug(`Got chonk verifier proof for tx index: ${txIndex}`, {
|
|
478
472
|
txHash
|
|
479
473
|
});
|
|
480
|
-
txProvingState.
|
|
481
|
-
this.provingState?.
|
|
474
|
+
txProvingState.setPublicChonkVerifierProof(result);
|
|
475
|
+
this.provingState?.cachedChonkVerifierProofs.delete(txHash);
|
|
482
476
|
this.checkAndEnqueueBaseRollup(provingState, txIndex);
|
|
483
477
|
};
|
|
484
|
-
if (this.provingState?.
|
|
485
|
-
logger.debug(`
|
|
478
|
+
if (this.provingState?.cachedChonkVerifierProofs.has(txHash)) {
|
|
479
|
+
logger.debug(`Chonk verifier proof already enqueued for tx index: ${txIndex}`, {
|
|
486
480
|
txHash
|
|
487
481
|
});
|
|
488
|
-
void this.provingState.
|
|
482
|
+
void this.provingState.cachedChonkVerifierProofs.get(txHash).then(handleResult);
|
|
489
483
|
return;
|
|
490
484
|
}
|
|
491
|
-
logger.debug(`Enqueuing
|
|
492
|
-
this.
|
|
485
|
+
logger.debug(`Enqueuing chonk verifier circuit for tx index: ${txIndex}`);
|
|
486
|
+
this.doEnqueueChonkVerifier(txHash, txProvingState.getPublicChonkVerifierPrivateInputs(), handleResult);
|
|
493
487
|
}
|
|
494
|
-
|
|
488
|
+
doEnqueueChonkVerifier(txHash, inputs, handler, provingState = this.provingState) {
|
|
495
489
|
if (!provingState.verifyState()) {
|
|
496
|
-
logger.debug('Not running
|
|
490
|
+
logger.debug('Not running chonk verifier circuit, state invalid');
|
|
497
491
|
return;
|
|
498
492
|
}
|
|
499
|
-
this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.
|
|
493
|
+
this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getPublicChonkVerifierProof', {
|
|
500
494
|
[Attributes.TX_HASH]: txHash,
|
|
501
|
-
[Attributes.PROTOCOL_CIRCUIT_NAME]: '
|
|
502
|
-
}, (signal)=>this.prover.
|
|
495
|
+
[Attributes.PROTOCOL_CIRCUIT_NAME]: 'chonk-verifier-public'
|
|
496
|
+
}, (signal)=>this.prover.getPublicChonkVerifierProof(inputs, signal, provingState.epochNumber)), handler);
|
|
503
497
|
}
|
|
504
498
|
// Executes the merge rollup circuit and stored the output as intermediate state for the parent merge/block root circuit
|
|
505
499
|
// Enqueues the next level of merge if all inputs are available
|
|
@@ -818,7 +812,7 @@ const logger = createLogger('prover-client:orchestrator');
|
|
|
818
812
|
if (!txProvingState.ready()) {
|
|
819
813
|
return;
|
|
820
814
|
}
|
|
821
|
-
// We must have completed all proving (
|
|
815
|
+
// We must have completed all proving (chonk verifier proof and (if required) vm proof are generated), we now move to the base rollup.
|
|
822
816
|
logger.debug(`Public functions completed for tx ${txIndex} enqueueing base rollup`);
|
|
823
817
|
this.enqueueBaseRollup(provingState, txIndex);
|
|
824
818
|
}
|
|
@@ -834,8 +828,8 @@ _ts_decorate([
|
|
|
834
828
|
}))
|
|
835
829
|
], ProvingOrchestrator.prototype, "addTxs", null);
|
|
836
830
|
_ts_decorate([
|
|
837
|
-
trackSpan('ProvingOrchestrator.
|
|
838
|
-
], ProvingOrchestrator.prototype, "
|
|
831
|
+
trackSpan('ProvingOrchestrator.startChonkVerifierCircuits')
|
|
832
|
+
], ProvingOrchestrator.prototype, "startChonkVerifierCircuits", null);
|
|
839
833
|
_ts_decorate([
|
|
840
834
|
trackSpan('ProvingOrchestrator.setBlockCompleted', (blockNumber)=>({
|
|
841
835
|
[Attributes.BLOCK_NUMBER]: blockNumber
|