@aztec/prover-client 0.0.1-commit.96bb3f7 → 0.0.1-commit.993d240
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 +1 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +16 -2
- package/dest/light/lightweight_checkpoint_builder.d.ts +16 -7
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
- package/dest/light/lightweight_checkpoint_builder.js +75 -27
- package/dest/mocks/fixtures.d.ts +1 -1
- package/dest/mocks/fixtures.d.ts.map +1 -1
- package/dest/mocks/fixtures.js +2 -1
- package/dest/mocks/test_context.d.ts +5 -2
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +23 -9
- package/dest/orchestrator/block-building-helpers.d.ts +5 -5
- package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
- package/dest/orchestrator/block-building-helpers.js +3 -3
- package/dest/orchestrator/block-proving-state.d.ts +4 -1
- package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/block-proving-state.js +7 -0
- package/dest/orchestrator/checkpoint-proving-state.d.ts +24 -4
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/checkpoint-proving-state.js +47 -5
- 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 +7 -6
- package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/epoch-proving-state.js +37 -1
- 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 +29 -24
- package/dest/orchestrator/orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/orchestrator.js +137 -225
- 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/prover-client/prover-client.d.ts +64 -5
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +64 -11
- package/dest/proving_broker/broker_prover_facade.d.ts +4 -3
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/proving_broker/broker_prover_facade.js +16 -22
- package/dest/proving_broker/config.d.ts +12 -64
- package/dest/proving_broker/config.d.ts.map +1 -1
- package/dest/proving_broker/config.js +22 -5
- 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 -2
- package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
- package/dest/proving_broker/proof_store/index.js +1 -1
- package/dest/proving_broker/proving_agent.d.ts +4 -3
- package/dest/proving_broker/proving_agent.d.ts.map +1 -1
- package/dest/proving_broker/proving_agent.js +4 -4
- package/dest/proving_broker/proving_broker.d.ts +8 -5
- package/dest/proving_broker/proving_broker.d.ts.map +1 -1
- package/dest/proving_broker/proving_broker.js +68 -11
- package/dest/proving_broker/proving_broker_database/persisted.js +2 -2
- 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 +18 -7
- package/dest/proving_broker/proving_job_controller.d.ts +4 -3
- package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
- package/dest/proving_broker/proving_job_controller.js +6 -3
- package/dest/proving_broker/rpc.d.ts +6 -2
- package/dest/proving_broker/rpc.d.ts.map +1 -1
- package/dest/proving_broker/rpc.js +87 -23
- 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 +4 -4
- package/package.json +19 -21
- package/src/config.ts +18 -2
- package/src/light/lightweight_checkpoint_builder.ts +107 -36
- package/src/mocks/fixtures.ts +2 -1
- package/src/mocks/test_context.ts +18 -10
- package/src/orchestrator/block-building-helpers.ts +3 -3
- package/src/orchestrator/block-proving-state.ts +9 -0
- package/src/orchestrator/checkpoint-proving-state.ts +65 -6
- 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 +59 -9
- package/src/orchestrator/index.ts +8 -0
- package/src/orchestrator/orchestrator.ts +161 -290
- 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/prover-client/prover-client.ts +155 -15
- package/src/proving_broker/broker_prover_facade.ts +23 -23
- package/src/proving_broker/config.ts +25 -2
- 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 -1
- package/src/proving_broker/proving_agent.ts +5 -2
- package/src/proving_broker/proving_broker.ts +64 -8
- package/src/proving_broker/proving_broker_database/persisted.ts +2 -2
- package/src/proving_broker/proving_broker_instrumentation.ts +19 -6
- package/src/proving_broker/proving_job_controller.ts +9 -3
- package/src/proving_broker/rpc.ts +46 -20
- package/dest/block-factory/index.d.ts +0 -2
- package/dest/block-factory/index.d.ts.map +0 -1
- package/dest/block-factory/index.js +0 -1
- package/dest/block-factory/light.d.ts +0 -38
- package/dest/block-factory/light.d.ts.map +0 -1
- package/dest/block-factory/light.js +0 -106
- 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 -52
- package/src/block-factory/index.ts +0 -1
- package/src/block-factory/light.ts +0 -136
- package/src/proving_broker/proof_store/gcs_proof_store.ts +0 -76
|
@@ -40,6 +40,7 @@ export declare class BlockProvingState {
|
|
|
40
40
|
private rootParityProof;
|
|
41
41
|
private blockRootProof;
|
|
42
42
|
private builtBlockHeader;
|
|
43
|
+
private builtArchive;
|
|
43
44
|
private endState;
|
|
44
45
|
private endSpongeBlob;
|
|
45
46
|
private txs;
|
|
@@ -63,6 +64,8 @@ export declare class BlockProvingState {
|
|
|
63
64
|
getBlockRootRollupOutput(): BlockRollupPublicInputs | undefined;
|
|
64
65
|
buildBlockHeader(): Promise<BlockHeader>;
|
|
65
66
|
getBuiltBlockHeader(): BlockHeader | undefined;
|
|
67
|
+
setBuiltArchive(archive: AppendOnlyTreeSnapshot): void;
|
|
68
|
+
getBuiltArchive(): AppendOnlyTreeSnapshot | undefined;
|
|
66
69
|
getStartSpongeBlob(): SpongeBlob;
|
|
67
70
|
setEndSpongeBlob(endSpongeBlob: SpongeBlob): void;
|
|
68
71
|
getEndSpongeBlob(): SpongeBlob | undefined;
|
|
@@ -95,4 +98,4 @@ export declare class BlockProvingState {
|
|
|
95
98
|
getError(): string | undefined;
|
|
96
99
|
reject(reason: string): void;
|
|
97
100
|
}
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stcHJvdmluZy1zdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yY2hlc3RyYXRvci9ibG9jay1wcm92aW5nLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGFBQWEsRUFBRSxLQUFLLGdCQUFnQixFQUFFLEtBQUssVUFBVSxFQUEwQixNQUFNLGlCQUFpQixDQUFDO0FBQ3JILE9BQU8sRUFDTCxLQUFLLGNBQWMsRUFDbkIsS0FBSyw2Q0FBNkMsRUFFbEQsS0FBSyx5Q0FBeUMsRUFFL0MsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEtBQUssRUFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBdUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRixPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEYsT0FBTyxFQUNMLHVCQUF1QixFQUN2Qix3Q0FBd0MsRUFFeEMsNEJBQTRCLEVBRTVCLG9DQUFvQyxFQUNwQyxzQkFBc0IsRUFDdEIsMEJBQTBCLEVBQzFCLEtBQUssb0JBQW9CLEVBQzFCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBbUIsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEYsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHbEQsT0FBTyxLQUFL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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,KAAK,UAAU,EAA0B,MAAM,iBAAiB,CAAC;AACrH,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,6CAA6C,EAElD,KAAK,yCAAyC,EAE/C,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,KAAK,KAAK,EAAgB,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AACrF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,KAAK,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAExF,OAAO,EACL,uBAAuB,EACvB,wCAAwC,EAExC,4BAA4B,EAE5B,oCAAoC,EACpC,sBAAsB,EACtB,0BAA0B,EAC1B,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAmB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,YAAY,SAAS,MAAM,IAAI;IACvD,aAAa,CAAC,EAAE,6BAA6B,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAC/D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,qBAAa,iBAAiB;;
|
|
1
|
+
{"version":3,"file":"block-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-proving-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ import { buildHeaderFromCircuitOutputs, toProofData } from './block-building-hel
|
|
|
29
29
|
rootParityProof;
|
|
30
30
|
blockRootProof;
|
|
31
31
|
builtBlockHeader;
|
|
32
|
+
builtArchive;
|
|
32
33
|
endState;
|
|
33
34
|
endSpongeBlob;
|
|
34
35
|
txs;
|
|
@@ -178,6 +179,12 @@ import { buildHeaderFromCircuitOutputs, toProofData } from './block-building-hel
|
|
|
178
179
|
getBuiltBlockHeader() {
|
|
179
180
|
return this.builtBlockHeader;
|
|
180
181
|
}
|
|
182
|
+
setBuiltArchive(archive) {
|
|
183
|
+
this.builtArchive = archive;
|
|
184
|
+
}
|
|
185
|
+
getBuiltArchive() {
|
|
186
|
+
return this.builtArchive;
|
|
187
|
+
}
|
|
181
188
|
getStartSpongeBlob() {
|
|
182
189
|
return this.startSpongeBlob;
|
|
183
190
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BatchedBlobAccumulator, type FinalBlobBatchingChallenges } from '@aztec/blob-lib';
|
|
2
|
-
import { type ARCHIVE_HEIGHT, type L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, type NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
|
|
2
|
+
import { type ARCHIVE_HEIGHT, type L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, type NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, OUT_HASH_TREE_HEIGHT } from '@aztec/constants';
|
|
3
3
|
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
4
4
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
5
|
import type { Tuple } from '@aztec/foundation/serialize';
|
|
@@ -13,6 +13,10 @@ import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
|
13
13
|
import type { UInt64 } from '@aztec/stdlib/types';
|
|
14
14
|
import { BlockProvingState } from './block-proving-state.js';
|
|
15
15
|
import type { EpochProvingState } from './epoch-proving-state.js';
|
|
16
|
+
type OutHashHint = {
|
|
17
|
+
treeSnapshot: AppendOnlyTreeSnapshot;
|
|
18
|
+
siblingPath: Tuple<Fr, typeof OUT_HASH_TREE_HEIGHT>;
|
|
19
|
+
};
|
|
16
20
|
export declare class CheckpointProvingState {
|
|
17
21
|
#private;
|
|
18
22
|
readonly index: number;
|
|
@@ -31,12 +35,15 @@ export declare class CheckpointProvingState {
|
|
|
31
35
|
private blockProofs;
|
|
32
36
|
private checkpointRootProof;
|
|
33
37
|
private blocks;
|
|
38
|
+
private previousOutHashHint;
|
|
39
|
+
private outHash;
|
|
40
|
+
private newOutHashHint;
|
|
34
41
|
private startBlobAccumulator;
|
|
35
42
|
private endBlobAccumulator;
|
|
36
43
|
private blobFields;
|
|
37
44
|
private error;
|
|
38
45
|
readonly firstBlockNumber: BlockNumber;
|
|
39
|
-
constructor(index: number, constants: CheckpointConstantData, totalNumBlocks: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges, headerOfLastBlockInPreviousCheckpoint: 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>, parentEpoch: EpochProvingState, onBlobAccumulatorSet: (checkpoint: CheckpointProvingState) => void);
|
|
46
|
+
constructor(index: number, constants: CheckpointConstantData, totalNumBlocks: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges, headerOfLastBlockInPreviousCheckpoint: 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>, parentEpoch: EpochProvingState, onBlobAccumulatorSet: (checkpoint: CheckpointProvingState) => Promise<void>);
|
|
40
47
|
get epochNumber(): number;
|
|
41
48
|
startNewBlock(blockNumber: BlockNumber, timestamp: UInt64, totalNumTxs: number, lastArchiveTreeSnapshot: AppendOnlyTreeSnapshot, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>): BlockProvingState;
|
|
42
49
|
isAcceptingBlocks(): boolean;
|
|
@@ -46,12 +53,17 @@ export declare class CheckpointProvingState {
|
|
|
46
53
|
tryStartProvingCheckpointRoot(): boolean;
|
|
47
54
|
setCheckpointRootRollupProof(provingOutput: PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): TreeNodeLocation;
|
|
48
55
|
getBaseParityInputs(baseParityIndex: number): ParityBasePrivateInputs;
|
|
56
|
+
setOutHashHint(hint: OutHashHint): void;
|
|
57
|
+
getOutHashHint(): OutHashHint | undefined;
|
|
58
|
+
accumulateBlockOutHashes(): Fr | undefined;
|
|
59
|
+
setOutHashHintForNextCheckpoint(hint: OutHashHint): void;
|
|
60
|
+
getOutHashHintForNextCheckpoint(): OutHashHint | undefined;
|
|
49
61
|
accumulateBlobs(startBlobAccumulator: BatchedBlobAccumulator): Promise<BatchedBlobAccumulator | undefined>;
|
|
50
62
|
getEndBlobAccumulator(): BatchedBlobAccumulator | undefined;
|
|
51
63
|
getParentLocation(location: TreeNodeLocation): TreeNodeLocation;
|
|
52
64
|
getBlockMergeRollupInputs(mergeLocation: TreeNodeLocation): BlockMergeRollupPrivateInputs;
|
|
53
65
|
getCheckpointRootRollupType(): CircuitName;
|
|
54
|
-
getCheckpointRootRollupInputs(): CheckpointRootRollupPrivateInputs | CheckpointRootSingleBlockRollupPrivateInputs
|
|
66
|
+
getCheckpointRootRollupInputs(): Promise<CheckpointRootRollupPrivateInputs | CheckpointRootSingleBlockRollupPrivateInputs>;
|
|
55
67
|
getBlockProvingStateByBlockNumber(blockNumber: BlockNumber): BlockProvingState | undefined;
|
|
56
68
|
isReadyForBlockMerge(location: TreeNodeLocation): boolean;
|
|
57
69
|
isReadyForCheckpointRoot(): boolean;
|
|
@@ -59,5 +71,13 @@ export declare class CheckpointProvingState {
|
|
|
59
71
|
getError(): string | undefined;
|
|
60
72
|
cancel(): void;
|
|
61
73
|
reject(reason: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* Returns the block-level proof outputs that feed into the checkpoint root rollup.
|
|
76
|
+
* Used by `CheckpointSubTreeOrchestrator` to surface its sub-tree result.
|
|
77
|
+
*/
|
|
78
|
+
getSubTreeOutputProofs(): (PublicInputsAndRecursiveProof<BlockRollupPublicInputs, 480> | undefined)[];
|
|
79
|
+
/** Sibling path of the archive tree captured before any block in this checkpoint landed. */
|
|
80
|
+
getLastArchiveSiblingPath(): [Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr, Fr];
|
|
62
81
|
}
|
|
63
|
-
|
|
82
|
+
export {};
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC1wcm92aW5nLXN0YXRlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JjaGVzdHJhdG9yL2NoZWNrcG9pbnQtcHJvdmluZy1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLEtBQUssMkJBQTJCLEVBR2pDLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLEtBQUssY0FBYyxFQUduQixLQUFLLDZDQUE2QyxFQUNsRCxLQUFLLHlDQUF5QyxFQUU5QyxvQkFBb0IsRUFDckIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUF1QixNQUFNLHlCQUF5QixDQUFDO0FBQ3JGLE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFckYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUNMLDZCQUE2QixFQUM3Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLDRCQUE0QixFQUU1QixpQ0FBaUMsRUFDakMsNENBQTRDLEVBQzdDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/checkpoint-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,2BAA2B,EAGjC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,6CAA6C,EAClD,KAAK,yCAAyC,
|
|
1
|
+
{"version":3,"file":"checkpoint-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/checkpoint-proving-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { padArrayEnd } from '@aztec/foundation/collection';
|
|
|
5
5
|
import { BLS12Point } from '@aztec/foundation/curves/bls12';
|
|
6
6
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
7
7
|
import { UnbalancedTreeStore } from '@aztec/foundation/trees';
|
|
8
|
+
import { computeCheckpointOutHash } from '@aztec/stdlib/messaging';
|
|
8
9
|
import { ParityBasePrivateInputs } from '@aztec/stdlib/parity';
|
|
9
10
|
import { BlockMergeRollupPrivateInputs, CheckpointRootRollupHints, CheckpointRootRollupPrivateInputs, CheckpointRootSingleBlockRollupPrivateInputs } from '@aztec/stdlib/rollup';
|
|
10
11
|
import { accumulateBlobs, buildBlobHints, toProofData } from './block-building-helpers.js';
|
|
@@ -26,6 +27,11 @@ export class CheckpointProvingState {
|
|
|
26
27
|
blockProofs;
|
|
27
28
|
checkpointRootProof;
|
|
28
29
|
blocks;
|
|
30
|
+
previousOutHashHint;
|
|
31
|
+
outHash;
|
|
32
|
+
// The snapshot and sibling path after the checkpoint's out hash is inserted.
|
|
33
|
+
// Stored here to be retrieved for the next checkpoint when it's added.
|
|
34
|
+
newOutHashHint;
|
|
29
35
|
startBlobAccumulator;
|
|
30
36
|
endBlobAccumulator;
|
|
31
37
|
blobFields;
|
|
@@ -114,7 +120,29 @@ export class CheckpointProvingState {
|
|
|
114
120
|
}
|
|
115
121
|
getBaseParityInputs(baseParityIndex) {
|
|
116
122
|
const messages = padArrayEnd(this.l1ToL2Messages.slice(baseParityIndex * NUM_MSGS_PER_BASE_PARITY, (baseParityIndex + 1) * NUM_MSGS_PER_BASE_PARITY), Fr.ZERO, NUM_MSGS_PER_BASE_PARITY);
|
|
117
|
-
return new ParityBasePrivateInputs(messages, this.constants.vkTreeRoot);
|
|
123
|
+
return new ParityBasePrivateInputs(messages, this.constants.vkTreeRoot, this.constants.proverId);
|
|
124
|
+
}
|
|
125
|
+
setOutHashHint(hint) {
|
|
126
|
+
this.previousOutHashHint = hint;
|
|
127
|
+
}
|
|
128
|
+
getOutHashHint() {
|
|
129
|
+
return this.previousOutHashHint;
|
|
130
|
+
}
|
|
131
|
+
accumulateBlockOutHashes() {
|
|
132
|
+
if (this.isAcceptingBlocks() || this.blocks.some((b)=>!b?.hasEndState())) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (!this.outHash) {
|
|
136
|
+
const messagesPerBlock = this.blocks.map((b)=>b.getTxEffects().map((tx)=>tx.l2ToL1Msgs));
|
|
137
|
+
this.outHash = computeCheckpointOutHash(messagesPerBlock);
|
|
138
|
+
}
|
|
139
|
+
return this.outHash;
|
|
140
|
+
}
|
|
141
|
+
setOutHashHintForNextCheckpoint(hint) {
|
|
142
|
+
this.newOutHashHint = hint;
|
|
143
|
+
}
|
|
144
|
+
getOutHashHintForNextCheckpoint() {
|
|
145
|
+
return this.newOutHashHint;
|
|
118
146
|
}
|
|
119
147
|
async accumulateBlobs(startBlobAccumulator) {
|
|
120
148
|
if (this.isAcceptingBlocks() || this.blocks.some((b)=>!b?.hasEndState())) {
|
|
@@ -123,7 +151,7 @@ export class CheckpointProvingState {
|
|
|
123
151
|
this.blobFields = encodeCheckpointBlobDataFromBlocks(this.blocks.map((b)=>b.getBlockBlobData()));
|
|
124
152
|
this.endBlobAccumulator = await accumulateBlobs(this.blobFields, startBlobAccumulator);
|
|
125
153
|
this.startBlobAccumulator = startBlobAccumulator;
|
|
126
|
-
this.onBlobAccumulatorSet(this);
|
|
154
|
+
await this.onBlobAccumulatorSet(this);
|
|
127
155
|
return this.endBlobAccumulator;
|
|
128
156
|
}
|
|
129
157
|
getEndBlobAccumulator() {
|
|
@@ -145,21 +173,26 @@ export class CheckpointProvingState {
|
|
|
145
173
|
getCheckpointRootRollupType() {
|
|
146
174
|
return this.totalNumBlocks === 1 ? 'rollup-checkpoint-root-single-block' : 'rollup-checkpoint-root';
|
|
147
175
|
}
|
|
148
|
-
getCheckpointRootRollupInputs() {
|
|
176
|
+
async getCheckpointRootRollupInputs() {
|
|
149
177
|
const proofs = this.#getChildProofsForRoot();
|
|
150
178
|
const nonEmptyProofs = proofs.filter((p)=>!!p);
|
|
151
179
|
if (proofs.length !== nonEmptyProofs.length) {
|
|
152
180
|
throw new Error('At least one child is not ready for the checkpoint root rollup.');
|
|
153
181
|
}
|
|
182
|
+
if (!this.previousOutHashHint) {
|
|
183
|
+
throw new Error('Out hash hint is not set.');
|
|
184
|
+
}
|
|
154
185
|
if (!this.startBlobAccumulator) {
|
|
155
186
|
throw new Error('Start blob accumulator is not set.');
|
|
156
187
|
}
|
|
157
188
|
// `blobFields` must've been set if `startBlobAccumulator` is set (in `accumulateBlobs`).
|
|
158
189
|
const blobFields = this.blobFields;
|
|
159
|
-
const { blobCommitments, blobsHash } = buildBlobHints(blobFields);
|
|
190
|
+
const { blobCommitments, blobsHash } = await buildBlobHints(blobFields);
|
|
160
191
|
const hints = CheckpointRootRollupHints.from({
|
|
161
192
|
previousBlockHeader: this.headerOfLastBlockInPreviousCheckpoint,
|
|
162
193
|
previousArchiveSiblingPath: this.lastArchiveSiblingPath,
|
|
194
|
+
previousOutHash: this.previousOutHashHint.treeSnapshot,
|
|
195
|
+
newOutHashSiblingPath: this.previousOutHashHint.siblingPath,
|
|
163
196
|
startBlobAccumulator: this.startBlobAccumulator.toBlobAccumulator(),
|
|
164
197
|
finalBlobChallenges: this.finalBlobBatchingChallenges,
|
|
165
198
|
blobFields: padArrayEnd(blobFields, Fr.ZERO, FIELDS_PER_BLOB * BLOBS_PER_CHECKPOINT),
|
|
@@ -181,7 +214,7 @@ export class CheckpointProvingState {
|
|
|
181
214
|
}
|
|
182
215
|
isReadyForCheckpointRoot() {
|
|
183
216
|
const allChildProofsReady = this.#getChildProofsForRoot().every((p)=>!!p);
|
|
184
|
-
return allChildProofsReady && !!this.startBlobAccumulator;
|
|
217
|
+
return allChildProofsReady && !!this.previousOutHashHint && !!this.startBlobAccumulator;
|
|
185
218
|
}
|
|
186
219
|
verifyState() {
|
|
187
220
|
return this.parentEpoch.verifyState();
|
|
@@ -207,4 +240,13 @@ export class CheckpointProvingState {
|
|
|
207
240
|
] // If there's only 1 block, its proof will be stored at the root.
|
|
208
241
|
: this.blockProofs.getChildren(rootLocation).map((c)=>c?.provingOutput);
|
|
209
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* Returns the block-level proof outputs that feed into the checkpoint root rollup.
|
|
245
|
+
* Used by `CheckpointSubTreeOrchestrator` to surface its sub-tree result.
|
|
246
|
+
*/ getSubTreeOutputProofs() {
|
|
247
|
+
return this.#getChildProofsForRoot();
|
|
248
|
+
}
|
|
249
|
+
/** Sibling path of the archive tree captured before any block in this checkpoint landed. */ getLastArchiveSiblingPath() {
|
|
250
|
+
return this.lastArchiveSiblingPath;
|
|
251
|
+
}
|
|
210
252
|
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { FinalBlobBatchingChallenges } from '@aztec/blob-lib';
|
|
2
|
+
import type { ARCHIVE_HEIGHT, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
|
|
3
|
+
import type { EpochNumber } from '@aztec/foundation/branded-types';
|
|
4
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
5
|
+
import type { LoggerBindings } from '@aztec/foundation/log';
|
|
6
|
+
import type { Tuple } from '@aztec/foundation/serialize';
|
|
7
|
+
import type { EthAddress } from '@aztec/stdlib/block';
|
|
8
|
+
import type { ForkMerkleTreeOperations, PublicInputsAndRecursiveProof, ReadonlyWorldStateAccess, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
9
|
+
import type { BlockRollupPublicInputs, CheckpointConstantData } from '@aztec/stdlib/rollup';
|
|
10
|
+
import type { BlockHeader, Tx } from '@aztec/stdlib/tx';
|
|
11
|
+
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
12
|
+
import type { BlockProvingState } from './block-proving-state.js';
|
|
13
|
+
import type { CheckpointProvingState } from './checkpoint-proving-state.js';
|
|
14
|
+
import type { EpochProvingContext } from './epoch-proving-context.js';
|
|
15
|
+
import { ProvingOrchestrator } from './orchestrator.js';
|
|
16
|
+
/**
|
|
17
|
+
* Result of proving a single checkpoint's block-level sub-tree.
|
|
18
|
+
*
|
|
19
|
+
* Contains the final block-rollup proof outputs that feed the checkpoint root rollup,
|
|
20
|
+
* plus the archive sibling path captured before any block in the checkpoint landed
|
|
21
|
+
* (the top-tree needs this to assemble the checkpoint root rollup hints).
|
|
22
|
+
*/
|
|
23
|
+
export type SubTreeResult = {
|
|
24
|
+
blockProofOutputs: PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>[];
|
|
25
|
+
previousArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Orchestrates block-level proving for a single checkpoint, stopping at the boundary
|
|
29
|
+
* where checkpoint root rollup would otherwise begin.
|
|
30
|
+
*
|
|
31
|
+
* Reuses every circuit driver in `ProvingOrchestrator` (chonk verifier, base, merge,
|
|
32
|
+
* block-root, parity, block-merge) but overrides the gating method that escalates to
|
|
33
|
+
* checkpoint root rollup. Instead of escalating, the orchestrator resolves
|
|
34
|
+
* `getSubTreeResult()` once every block-level proof in the checkpoint's tree is ready.
|
|
35
|
+
*
|
|
36
|
+
* Wiring: a single-checkpoint epoch is created in the constructor (epoch number sourced
|
|
37
|
+
* from the supplied `EpochProvingContext`). The canonical way to obtain a fully-started
|
|
38
|
+
* sub-tree is the `start` static factory, which also drives the single internal
|
|
39
|
+
* `startNewCheckpoint(0, ...)` call. The sub-tree never calls `finalizeEpochStructure`;
|
|
40
|
+
* the override of `checkAndEnqueueCheckpointRootRollup` resolves `getSubTreeResult` once
|
|
41
|
+
* block-level proving completes.
|
|
42
|
+
*/
|
|
43
|
+
export declare class CheckpointSubTreeOrchestrator extends ProvingOrchestrator {
|
|
44
|
+
/**
|
|
45
|
+
* Per-epoch shared chonk-verifier proof cache. Every chonk-verifier proof started
|
|
46
|
+
* by this sub-tree lives on the context and survives the sub-tree's cancellation,
|
|
47
|
+
* so a tx whose original checkpoint is reorged out and re-appears in a replacement
|
|
48
|
+
* checkpoint reuses the cached proof. The context's `epochNumber` is the epoch
|
|
49
|
+
* this sub-tree proves into.
|
|
50
|
+
*/
|
|
51
|
+
private readonly epochContext;
|
|
52
|
+
private readonly subTreeResult;
|
|
53
|
+
constructor(dbProvider: ReadonlyWorldStateAccess & ForkMerkleTreeOperations, prover: ServerCircuitProver, proverId: EthAddress,
|
|
54
|
+
/**
|
|
55
|
+
* Per-epoch shared chonk-verifier proof cache. Every chonk-verifier proof started
|
|
56
|
+
* by this sub-tree lives on the context and survives the sub-tree's cancellation,
|
|
57
|
+
* so a tx whose original checkpoint is reorged out and re-appears in a replacement
|
|
58
|
+
* checkpoint reuses the cached proof. The context's `epochNumber` is the epoch
|
|
59
|
+
* this sub-tree proves into.
|
|
60
|
+
*/
|
|
61
|
+
epochContext: EpochProvingContext, cancelJobsOnStop: boolean | undefined, enqueueConcurrency: number, telemetryClient?: TelemetryClient, bindings?: LoggerBindings);
|
|
62
|
+
/**
|
|
63
|
+
* Constructs and starts a sub-tree for a single checkpoint. The returned sub-tree
|
|
64
|
+
* has had its single internal `startNewCheckpoint(0, ...)` driven; callers proceed
|
|
65
|
+
* directly to per-block `startNewBlock` / `addTxs` / `setBlockCompleted`.
|
|
66
|
+
*
|
|
67
|
+
* If the internal `startNewCheckpoint` rejects, the partially-constructed sub-tree
|
|
68
|
+
* is stopped before the error propagates, so no broker resources leak.
|
|
69
|
+
*/
|
|
70
|
+
static start(dbProvider: ReadonlyWorldStateAccess & ForkMerkleTreeOperations, prover: ServerCircuitProver, proverId: EthAddress, epochContext: EpochProvingContext, cancelJobsOnStop: boolean, enqueueConcurrency: number, checkpointConstants: CheckpointConstantData, l1ToL2Messages: Fr[], totalNumBlocks: number, headerOfLastBlockInPreviousCheckpoint: BlockHeader, telemetryClient?: TelemetryClient, bindings?: LoggerBindings): Promise<CheckpointSubTreeOrchestrator>;
|
|
71
|
+
/** Returns a promise that resolves when block-level proving completes for the checkpoint. */
|
|
72
|
+
getSubTreeResult(): Promise<SubTreeResult>;
|
|
73
|
+
/**
|
|
74
|
+
* The epoch is started in the constructor.
|
|
75
|
+
*/
|
|
76
|
+
startNewEpoch(_epochNumber: EpochNumber, _totalNumCheckpoints: number, _finalBlobBatchingChallenges: FinalBlobBatchingChallenges): void;
|
|
77
|
+
/**
|
|
78
|
+
* The single internal checkpoint is started by the `start` factory
|
|
79
|
+
*/
|
|
80
|
+
startNewCheckpoint(_checkpointIndex: number, _constants: CheckpointConstantData, _l1ToL2Messages: Fr[], _totalNumBlocks: number, _headerOfLastBlockInPreviousCheckpoint: BlockHeader): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Returns the archive sibling path captured at the internal `startNewCheckpoint`.
|
|
83
|
+
* Available synchronously once `start` has resolved, before block-level proving
|
|
84
|
+
* completes. The top-tree consumer uses this to assemble checkpoint root rollup hints
|
|
85
|
+
* up-front so checkpoint root proofs can pipeline against in-flight sub-tree proving.
|
|
86
|
+
*/
|
|
87
|
+
getPreviousArchiveSiblingPath(): Tuple<Fr, typeof ARCHIVE_HEIGHT>;
|
|
88
|
+
/**
|
|
89
|
+
* Override the checkpoint-root boundary: instead of escalating to checkpoint root,
|
|
90
|
+
* resolve the sub-tree promise with the block-level proof outputs once they're all ready.
|
|
91
|
+
*/
|
|
92
|
+
protected checkAndEnqueueCheckpointRootRollup(provingState: CheckpointProvingState): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Kickstart chonk-verifier circuits via the shared `EpochProvingContext`. The context
|
|
95
|
+
* owns the broker job lifecycle, so the proof survives this sub-tree's `cancel()` —
|
|
96
|
+
* a tx that ends up in a replacement checkpoint after a reorg can pick the cached
|
|
97
|
+
* promise up and skip re-proving.
|
|
98
|
+
*/
|
|
99
|
+
startChonkVerifierCircuits(txs: Tx[]): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Route the tx's chonk-verifier dependency through the per-epoch context: read the
|
|
102
|
+
* cached promise (or enqueue if missing), then `.then(handleResult)` to progress to
|
|
103
|
+
* the base rollup once the proof lands.
|
|
104
|
+
*/
|
|
105
|
+
protected getOrEnqueueChonkVerifier(provingState: BlockProvingState, txIndex: number): void;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC1zdWItdHJlZS1vcmNoZXN0cmF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvY2hlY2twb2ludC1zdWItdHJlZS1vcmNoZXN0cmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEcsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUNWLHdCQUF3QixFQUN4Qiw2QkFBNkIsRUFDN0Isd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNwQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxFQUNWLHVCQUF1QixFQUN2QixzQkFBc0IsRUFFdkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBR25GLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEtBQUssRUFBRSxtQkFBbUIs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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint-sub-tree-orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/checkpoint-sub-tree-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { FinalBlobBatchingChallenges } from '@aztec/blob-lib';
|
|
2
|
+
import { promiseWithResolvers } from '@aztec/foundation/promise';
|
|
3
|
+
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
4
|
+
import { getPublicChonkVerifierPrivateInputsFromTx } from './block-building-helpers.js';
|
|
5
|
+
import { ProvingOrchestrator } from './orchestrator.js';
|
|
6
|
+
/**
|
|
7
|
+
* Orchestrates block-level proving for a single checkpoint, stopping at the boundary
|
|
8
|
+
* where checkpoint root rollup would otherwise begin.
|
|
9
|
+
*
|
|
10
|
+
* Reuses every circuit driver in `ProvingOrchestrator` (chonk verifier, base, merge,
|
|
11
|
+
* block-root, parity, block-merge) but overrides the gating method that escalates to
|
|
12
|
+
* checkpoint root rollup. Instead of escalating, the orchestrator resolves
|
|
13
|
+
* `getSubTreeResult()` once every block-level proof in the checkpoint's tree is ready.
|
|
14
|
+
*
|
|
15
|
+
* Wiring: a single-checkpoint epoch is created in the constructor (epoch number sourced
|
|
16
|
+
* from the supplied `EpochProvingContext`). The canonical way to obtain a fully-started
|
|
17
|
+
* sub-tree is the `start` static factory, which also drives the single internal
|
|
18
|
+
* `startNewCheckpoint(0, ...)` call. The sub-tree never calls `finalizeEpochStructure`;
|
|
19
|
+
* the override of `checkAndEnqueueCheckpointRootRollup` resolves `getSubTreeResult` once
|
|
20
|
+
* block-level proving completes.
|
|
21
|
+
*/ export class CheckpointSubTreeOrchestrator extends ProvingOrchestrator {
|
|
22
|
+
epochContext;
|
|
23
|
+
subTreeResult;
|
|
24
|
+
constructor(dbProvider, prover, proverId, /**
|
|
25
|
+
* Per-epoch shared chonk-verifier proof cache. Every chonk-verifier proof started
|
|
26
|
+
* by this sub-tree lives on the context and survives the sub-tree's cancellation,
|
|
27
|
+
* so a tx whose original checkpoint is reorged out and re-appears in a replacement
|
|
28
|
+
* checkpoint reuses the cached proof. The context's `epochNumber` is the epoch
|
|
29
|
+
* this sub-tree proves into.
|
|
30
|
+
*/ epochContext, cancelJobsOnStop = false, enqueueConcurrency, telemetryClient = getTelemetryClient(), bindings){
|
|
31
|
+
super(dbProvider, prover, proverId, cancelJobsOnStop, enqueueConcurrency, telemetryClient, bindings), this.epochContext = epochContext;
|
|
32
|
+
// Single-checkpoint mini-epoch by construction. The total/challenges supplied to
|
|
33
|
+
// `super.startNewEpoch` are never read, because the sub-tree overrides
|
|
34
|
+
// `checkAndEnqueueCheckpointRootRollup` to short-circuit before the parent's
|
|
35
|
+
// checkpoint-root / finalize machinery would consume them.
|
|
36
|
+
super.startNewEpoch(epochContext.epochNumber, 1, FinalBlobBatchingChallenges.empty());
|
|
37
|
+
this.subTreeResult = promiseWithResolvers();
|
|
38
|
+
// Mark the rejection branch as observed so a `cancel()` or proving failure does not
|
|
39
|
+
// surface an unhandled rejection when no consumer awaits getSubTreeResult().
|
|
40
|
+
this.subTreeResult.promise.catch(()=>{});
|
|
41
|
+
// If the parent's proving state ever rejects, surface the failure on the sub-tree promise.
|
|
42
|
+
void this.provingPromise.then((result)=>{
|
|
43
|
+
if (result.status === 'failure') {
|
|
44
|
+
this.subTreeResult.reject(new Error(result.reason));
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Constructs and starts a sub-tree for a single checkpoint. The returned sub-tree
|
|
50
|
+
* has had its single internal `startNewCheckpoint(0, ...)` driven; callers proceed
|
|
51
|
+
* directly to per-block `startNewBlock` / `addTxs` / `setBlockCompleted`.
|
|
52
|
+
*
|
|
53
|
+
* If the internal `startNewCheckpoint` rejects, the partially-constructed sub-tree
|
|
54
|
+
* is stopped before the error propagates, so no broker resources leak.
|
|
55
|
+
*/ static async start(dbProvider, prover, proverId, epochContext, cancelJobsOnStop, enqueueConcurrency, checkpointConstants, l1ToL2Messages, totalNumBlocks, headerOfLastBlockInPreviousCheckpoint, telemetryClient = getTelemetryClient(), bindings) {
|
|
56
|
+
const subTree = new CheckpointSubTreeOrchestrator(dbProvider, prover, proverId, epochContext, cancelJobsOnStop, enqueueConcurrency, telemetryClient, bindings);
|
|
57
|
+
try {
|
|
58
|
+
await ProvingOrchestrator.prototype.startNewCheckpoint.call(subTree, 0, checkpointConstants, l1ToL2Messages, totalNumBlocks, headerOfLastBlockInPreviousCheckpoint);
|
|
59
|
+
return subTree;
|
|
60
|
+
} catch (err) {
|
|
61
|
+
await subTree.stop().catch(()=>{});
|
|
62
|
+
throw err;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/** Returns a promise that resolves when block-level proving completes for the checkpoint. */ getSubTreeResult() {
|
|
66
|
+
return this.subTreeResult.promise;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The epoch is started in the constructor.
|
|
70
|
+
*/ startNewEpoch(_epochNumber, _totalNumCheckpoints, _finalBlobBatchingChallenges) {
|
|
71
|
+
throw new Error('CheckpointSubTreeOrchestrator starts its epoch in the constructor; do not call startNewEpoch.');
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The single internal checkpoint is started by the `start` factory
|
|
75
|
+
*/ startNewCheckpoint(_checkpointIndex, _constants, _l1ToL2Messages, _totalNumBlocks, _headerOfLastBlockInPreviousCheckpoint) {
|
|
76
|
+
return Promise.reject(new Error('CheckpointSubTreeOrchestrator drives its single checkpoint in `start`; do not call startNewCheckpoint.'));
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Returns the archive sibling path captured at the internal `startNewCheckpoint`.
|
|
80
|
+
* Available synchronously once `start` has resolved, before block-level proving
|
|
81
|
+
* completes. The top-tree consumer uses this to assemble checkpoint root rollup hints
|
|
82
|
+
* up-front so checkpoint root proofs can pipeline against in-flight sub-tree proving.
|
|
83
|
+
*/ getPreviousArchiveSiblingPath() {
|
|
84
|
+
const checkpoint = this.provingState.getCheckpointProvingState(0);
|
|
85
|
+
if (!checkpoint) {
|
|
86
|
+
throw new Error('Checkpoint not started; call CheckpointSubTreeOrchestrator.start first.');
|
|
87
|
+
}
|
|
88
|
+
return checkpoint.getLastArchiveSiblingPath();
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Override the checkpoint-root boundary: instead of escalating to checkpoint root,
|
|
92
|
+
* resolve the sub-tree promise with the block-level proof outputs once they're all ready.
|
|
93
|
+
*/ // eslint-disable-next-line require-await
|
|
94
|
+
async checkAndEnqueueCheckpointRootRollup(provingState) {
|
|
95
|
+
const proofs = provingState.getSubTreeOutputProofs();
|
|
96
|
+
const nonEmpty = proofs.filter((p)=>!!p);
|
|
97
|
+
if (proofs.length !== nonEmpty.length) {
|
|
98
|
+
// Block merge tree not fully resolved yet — will be retried as more block proofs land.
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
this.subTreeResult.resolve({
|
|
102
|
+
blockProofOutputs: nonEmpty,
|
|
103
|
+
previousArchiveSiblingPath: provingState.getLastArchiveSiblingPath()
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Kickstart chonk-verifier circuits via the shared `EpochProvingContext`. The context
|
|
108
|
+
* owns the broker job lifecycle, so the proof survives this sub-tree's `cancel()` —
|
|
109
|
+
* a tx that ends up in a replacement checkpoint after a reorg can pick the cached
|
|
110
|
+
* promise up and skip re-proving.
|
|
111
|
+
*/ startChonkVerifierCircuits(txs) {
|
|
112
|
+
if (!this.provingState?.verifyState()) {
|
|
113
|
+
return Promise.reject(new Error('Sub-tree proving state is not active.'));
|
|
114
|
+
}
|
|
115
|
+
const publicTxs = txs.filter((tx)=>tx.data.forPublic);
|
|
116
|
+
for (const tx of publicTxs){
|
|
117
|
+
const txHash = tx.getTxHash().toString();
|
|
118
|
+
const inputs = getPublicChonkVerifierPrivateInputsFromTx(tx, this.getProverId().toField());
|
|
119
|
+
// Fire and forget — getOrEnqueueChonkVerifier later picks up the cached promise
|
|
120
|
+
// when the tx is processed inside its block.
|
|
121
|
+
void this.epochContext.enqueue(txHash, inputs);
|
|
122
|
+
}
|
|
123
|
+
return Promise.resolve();
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Route the tx's chonk-verifier dependency through the per-epoch context: read the
|
|
127
|
+
* cached promise (or enqueue if missing), then `.then(handleResult)` to progress to
|
|
128
|
+
* the base rollup once the proof lands.
|
|
129
|
+
*/ getOrEnqueueChonkVerifier(provingState, txIndex) {
|
|
130
|
+
if (!provingState.verifyState()) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const txProvingState = provingState.getTxProvingState(txIndex);
|
|
134
|
+
const txHash = txProvingState.processedTx.hash.toString();
|
|
135
|
+
const handleResult = (result)=>{
|
|
136
|
+
if (!provingState.verifyState()) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
txProvingState.setPublicChonkVerifierProof(result);
|
|
140
|
+
this.checkAndEnqueueBaseRollup(provingState, txIndex);
|
|
141
|
+
};
|
|
142
|
+
let promise = this.epochContext.getCached(txHash);
|
|
143
|
+
if (!promise) {
|
|
144
|
+
promise = this.epochContext.enqueue(txHash, txProvingState.getPublicChonkVerifierPrivateInputs());
|
|
145
|
+
}
|
|
146
|
+
void promise.then(handleResult).catch(()=>{
|
|
147
|
+
// The context self-cleans on rejection; a future call (replacement sub-tree
|
|
148
|
+
// for this tx) will see the miss and re-enqueue. No action needed here.
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
|
|
2
|
+
import type { EpochNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { type LoggerBindings } from '@aztec/foundation/log';
|
|
4
|
+
import type { PublicInputsAndRecursiveProof, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
5
|
+
import type { PublicChonkVerifierPrivateInputs, PublicChonkVerifierPublicInputs } from '@aztec/stdlib/rollup';
|
|
6
|
+
/**
|
|
7
|
+
* Result of a chonk-verifier proof, cached per tx hash on `EpochProvingContext`.
|
|
8
|
+
*/
|
|
9
|
+
export type ChonkVerifierProofResult = PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>;
|
|
10
|
+
/**
|
|
11
|
+
* Per-epoch state shared across every `CheckpointSubTreeOrchestrator` constructed for
|
|
12
|
+
* the same epoch. Owns the chonk-verifier proof cache so a tx whose checkpoint is
|
|
13
|
+
* reorged out and re-appears in a replacement checkpoint does not have to re-prove
|
|
14
|
+
* its chonk circuit.
|
|
15
|
+
*
|
|
16
|
+
* The context's chonk-verifier broker jobs are deliberately submitted **outside** the
|
|
17
|
+
* sub-tree's deferred-proving queue. The sub-tree's `cancel()` therefore does not abort
|
|
18
|
+
* them — by design, because their result is tx-scoped, not sub-tree-scoped, and a
|
|
19
|
+
* replacement sub-tree should be able to consume the cached proof.
|
|
20
|
+
*
|
|
21
|
+
* Callers (`EpochProvingJob`, or unit tests) construct one context per epoch and pass
|
|
22
|
+
* it into every sub-tree they create. `stop()` aborts every in-flight chonk job.
|
|
23
|
+
*/
|
|
24
|
+
export declare class EpochProvingContext {
|
|
25
|
+
private readonly prover;
|
|
26
|
+
readonly epochNumber: EpochNumber;
|
|
27
|
+
private readonly cache;
|
|
28
|
+
/** Abort controllers for in-flight chonk jobs, keyed by tx hash. */
|
|
29
|
+
private readonly pending;
|
|
30
|
+
private readonly log;
|
|
31
|
+
private stopped;
|
|
32
|
+
constructor(prover: ServerCircuitProver, epochNumber: EpochNumber, bindings?: LoggerBindings);
|
|
33
|
+
/**
|
|
34
|
+
* Returns the cached chonk-verifier proof promise for the given tx hash, or
|
|
35
|
+
* `undefined` if none has been enqueued yet. Non-mutating.
|
|
36
|
+
*/
|
|
37
|
+
getCached(txHash: string): Promise<ChonkVerifierProofResult> | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Enqueues a chonk-verifier proof for the given tx hash, returning the promise (or
|
|
40
|
+
* the already-cached one if already enqueued). The promise resolves when the broker
|
|
41
|
+
* delivers the result; on rejection (including `stop()`), the cache entry is removed
|
|
42
|
+
* so a subsequent caller can re-enqueue.
|
|
43
|
+
*/
|
|
44
|
+
enqueue(txHash: string, inputs: PublicChonkVerifierPrivateInputs): Promise<ChonkVerifierProofResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Aborts every in-flight chonk-verifier broker job and clears the cache. Called by
|
|
47
|
+
* the owning `EpochProvingJob` when the job stops.
|
|
48
|
+
*/
|
|
49
|
+
stop(): void;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtcHJvdmluZy1jb250ZXh0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JjaGVzdHJhdG9yL2Vwb2NoLXByb3ZpbmctY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xGLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFHLE9BQU8sS0FBSyxFQUFFLGdDQUFnQyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFOUc7O0dBRUc7QUFDSCxNQUFNLE1BQU0sd0JBQXdCLEdBQUcsNkJBQTZCLENBQ2xFLCtCQUErQixFQUMvQixPQUFPLHlDQUF5QyxDQUNqRCxDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILHFCQUFhLG1CQUFtQjtJQVE1QixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07YUFDUCxXQUFXLEVBQUUsV0FBVztJQVIxQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBd0Q7SUFDOUUsb0VBQW9FO0lBQ3BFLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFzQztJQUM5RCxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBUztJQUM3QixPQUFPLENBQUMsT0FBTyxDQUFTO0lBRXhCLFlBQ21CLE1BQU0sRUFBRSxtQkFBbUIsRUFDNUIsV0FBVyxFQUFFLFdBQVcsRUFDeEMsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUcxQjtJQUVEOzs7T0FHRztJQUNJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLFNBQVMsQ0FFOUU7SUFFRDs7Ozs7T0FLRztJQUNJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxnQ0FBZ0MsR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0E2QjFHO0lBRUQ7OztPQUdHO0lBQ0ksSUFBSSxTQU9WO0NBQ0YifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"epoch-proving-context.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yCAAyC,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC1G,OAAO,KAAK,EAAE,gCAAgC,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAE9G;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,6BAA6B,CAClE,+BAA+B,EAC/B,OAAO,yCAAyC,CACjD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,qBAAa,mBAAmB;IAQ5B,OAAO,CAAC,QAAQ,CAAC,MAAM;aACP,WAAW,EAAE,WAAW;IAR1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwD;IAC9E,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;IAExB,YACmB,MAAM,EAAE,mBAAmB,EAC5B,WAAW,EAAE,WAAW,EACxC,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAED;;;OAGG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAE9E;IAED;;;;;OAKG;IACI,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gCAAgC,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA6B1G;IAED;;;OAGG;IACI,IAAI,SAOV;CACF"}
|