@aztec/prover-node 0.0.1-commit.3469e52 → 0.0.1-commit.350e0a4d
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/README.md +518 -0
- package/dest/actions/download-epoch-proving-job.js +1 -1
- package/dest/actions/rerun-epoch-proving-job.d.ts +6 -4
- package/dest/actions/rerun-epoch-proving-job.d.ts.map +1 -1
- package/dest/actions/rerun-epoch-proving-job.js +187 -27
- package/dest/actions/upload-epoch-proof-failure.d.ts +2 -2
- package/dest/actions/upload-epoch-proof-failure.d.ts.map +1 -1
- package/dest/bin/run-failed-epoch.js +6 -5
- package/dest/checkpoint-store.d.ts +87 -0
- package/dest/checkpoint-store.d.ts.map +1 -0
- package/dest/checkpoint-store.js +186 -0
- package/dest/config.d.ts +7 -8
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +24 -20
- package/dest/factory.d.ts +19 -13
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +41 -69
- package/dest/index.d.ts +2 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/job/checkpoint-prover.d.ts +134 -0
- package/dest/job/checkpoint-prover.d.ts.map +1 -0
- package/dest/job/checkpoint-prover.js +353 -0
- package/dest/job/epoch-session.d.ts +146 -0
- package/dest/job/epoch-session.d.ts.map +1 -0
- package/dest/job/{epoch-proving-job.js → epoch-session.js} +277 -295
- package/dest/job/top-tree-job.d.ts +82 -0
- package/dest/job/top-tree-job.d.ts.map +1 -0
- package/dest/job/top-tree-job.js +152 -0
- package/dest/metrics.d.ts +40 -3
- package/dest/metrics.d.ts.map +1 -1
- package/dest/metrics.js +112 -7
- package/dest/monitors/epoch-monitor.d.ts +1 -1
- package/dest/monitors/epoch-monitor.d.ts.map +1 -1
- package/dest/monitors/epoch-monitor.js +11 -9
- package/dest/proof-publishing-service.d.ts +161 -0
- package/dest/proof-publishing-service.d.ts.map +1 -0
- package/dest/proof-publishing-service.js +335 -0
- package/dest/prover-node-publisher.d.ts +28 -17
- package/dest/prover-node-publisher.d.ts.map +1 -1
- package/dest/prover-node-publisher.js +205 -65
- package/dest/prover-node.d.ts +118 -70
- package/dest/prover-node.d.ts.map +1 -1
- package/dest/prover-node.js +489 -226
- package/dest/prover-publisher-factory.d.ts +9 -5
- package/dest/prover-publisher-factory.d.ts.map +1 -1
- package/dest/prover-publisher-factory.js +8 -5
- package/dest/session-manager.d.ts +158 -0
- package/dest/session-manager.d.ts.map +1 -0
- package/dest/session-manager.js +452 -0
- package/dest/test/index.d.ts +7 -6
- package/dest/test/index.d.ts.map +1 -1
- package/package.json +23 -22
- package/src/actions/download-epoch-proving-job.ts +1 -1
- package/src/actions/rerun-epoch-proving-job.ts +117 -29
- package/src/actions/upload-epoch-proof-failure.ts +1 -1
- package/src/bin/run-failed-epoch.ts +5 -3
- package/src/checkpoint-store.ts +218 -0
- package/src/config.ts +35 -32
- package/src/factory.ts +69 -112
- package/src/index.ts +1 -0
- package/src/job/checkpoint-prover.ts +468 -0
- package/src/job/epoch-session.ts +436 -0
- package/src/job/top-tree-job.ts +227 -0
- package/src/metrics.ts +129 -12
- package/src/monitors/epoch-monitor.ts +5 -6
- package/src/proof-publishing-service.ts +427 -0
- package/src/prover-node-publisher.ts +241 -81
- package/src/prover-node.ts +563 -254
- package/src/prover-publisher-factory.ts +19 -10
- package/src/session-manager.ts +552 -0
- package/src/test/index.ts +6 -6
- package/dest/job/epoch-proving-job.d.ts +0 -62
- package/dest/job/epoch-proving-job.d.ts.map +0 -1
- package/src/job/epoch-proving-job.ts +0 -427
package/dest/config.js
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
|
|
4
|
-
import { dataConfigMappings } from '@aztec/kv-store/config';
|
|
1
|
+
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, pickConfigMappings } from '@aztec/foundation/config';
|
|
2
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
3
|
import { keyStoreConfigMappings } from '@aztec/node-keystore/config';
|
|
6
4
|
import { ethPrivateKeySchema } from '@aztec/node-keystore/schemas';
|
|
7
5
|
import { sharedNodeConfigMappings } from '@aztec/node-lib/config';
|
|
8
|
-
import { p2pConfigMappings } from '@aztec/p2p/config';
|
|
9
6
|
import { proverAgentConfigMappings, proverBrokerConfigMappings } from '@aztec/prover-client/broker/config';
|
|
10
7
|
import { bbConfigMappings, proverClientConfigMappings } from '@aztec/prover-client/config';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
const specificProverNodeConfigMappings = {
|
|
8
|
+
import { proverPublisherConfigMappings, proverTxSenderConfigMappings } from '@aztec/sequencer-client/config';
|
|
9
|
+
import { dataConfigMappings } from '@aztec/stdlib/kv-store';
|
|
10
|
+
export const specificProverNodeConfigMappings = {
|
|
14
11
|
proverNodeMaxPendingJobs: {
|
|
15
12
|
env: 'PROVER_NODE_MAX_PENDING_JOBS',
|
|
16
13
|
description: 'The maximum number of pending jobs for the prover node',
|
|
@@ -24,7 +21,7 @@ const specificProverNodeConfigMappings = {
|
|
|
24
21
|
proverNodeMaxParallelBlocksPerEpoch: {
|
|
25
22
|
env: 'PROVER_NODE_MAX_PARALLEL_BLOCKS_PER_EPOCH',
|
|
26
23
|
description: 'The Maximum number of blocks to process in parallel while proving an epoch',
|
|
27
|
-
...numberConfigHelper(
|
|
24
|
+
...numberConfigHelper(0)
|
|
28
25
|
},
|
|
29
26
|
proverNodeFailedEpochStore: {
|
|
30
27
|
env: 'PROVER_NODE_FAILED_EPOCH_STORE',
|
|
@@ -32,7 +29,7 @@ const specificProverNodeConfigMappings = {
|
|
|
32
29
|
defaultValue: undefined
|
|
33
30
|
},
|
|
34
31
|
proverNodeEpochProvingDelayMs: {
|
|
35
|
-
description: 'Optional delay in milliseconds to wait before proving
|
|
32
|
+
description: 'Optional delay in milliseconds to wait for late-arriving events (e.g. reorgs) to settle before starting top-tree proving for an epoch',
|
|
36
33
|
defaultValue: undefined
|
|
37
34
|
},
|
|
38
35
|
txGatheringIntervalMs: {
|
|
@@ -59,20 +56,24 @@ const specificProverNodeConfigMappings = {
|
|
|
59
56
|
env: 'PROVER_NODE_DISABLE_PROOF_PUBLISH',
|
|
60
57
|
description: 'Whether the prover node skips publishing proofs to L1',
|
|
61
58
|
...booleanConfigHelper(false)
|
|
59
|
+
},
|
|
60
|
+
proofSubmissionTargetAddress: {
|
|
61
|
+
env: 'PROVER_NODE_PROOF_SUBMISSION_TARGET_ADDRESS',
|
|
62
|
+
description: 'Optional L1 address the submitEpochRootProof tx is sent to. Must expose the identical submitEpochRootProof ABI ' + 'and forward to the rollup. Defaults to the rollup address.',
|
|
63
|
+
parseEnv: (val)=>EthAddress.fromString(val),
|
|
64
|
+
defaultValue: undefined
|
|
62
65
|
}
|
|
63
66
|
};
|
|
64
67
|
export const proverNodeConfigMappings = {
|
|
65
68
|
...dataConfigMappings,
|
|
66
69
|
...keyStoreConfigMappings,
|
|
67
|
-
...archiverConfigMappings,
|
|
68
70
|
...proverClientConfigMappings,
|
|
69
|
-
...
|
|
70
|
-
...
|
|
71
|
-
...getPublisherConfigMappings('PROVER'),
|
|
72
|
-
...getTxSenderConfigMappings('PROVER'),
|
|
71
|
+
...proverPublisherConfigMappings,
|
|
72
|
+
...proverTxSenderConfigMappings,
|
|
73
73
|
...specificProverNodeConfigMappings,
|
|
74
|
-
...
|
|
75
|
-
|
|
74
|
+
...pickConfigMappings(sharedNodeConfigMappings, [
|
|
75
|
+
'web3SignerUrl'
|
|
76
|
+
])
|
|
76
77
|
};
|
|
77
78
|
export function getProverNodeConfigFromEnv() {
|
|
78
79
|
return getConfigFromMappings(proverNodeConfigMappings);
|
|
@@ -94,7 +95,7 @@ function createKeyStoreFromWeb3Signer(config) {
|
|
|
94
95
|
return undefined;
|
|
95
96
|
}
|
|
96
97
|
// Also, we need at least one publisher address.
|
|
97
|
-
const publishers = config.
|
|
98
|
+
const publishers = config.proverPublisherAddresses ?? [];
|
|
98
99
|
if (publishers.length === 0) {
|
|
99
100
|
return undefined;
|
|
100
101
|
}
|
|
@@ -112,7 +113,7 @@ function createKeyStoreFromWeb3Signer(config) {
|
|
|
112
113
|
}
|
|
113
114
|
function createKeyStoreFromPublisherKeys(config) {
|
|
114
115
|
// Extract the publisher keys from the provided config.
|
|
115
|
-
const publisherKeys = config.
|
|
116
|
+
const publisherKeys = config.proverPublisherPrivateKeys ? config.proverPublisherPrivateKeys.map((k)=>ethPrivateKeySchema.parse(k.getValue())) : [];
|
|
116
117
|
// There must be at least 1.
|
|
117
118
|
if (publisherKeys.length === 0) {
|
|
118
119
|
return undefined;
|
|
@@ -133,7 +134,10 @@ function createKeyStoreFromPublisherKeys(config) {
|
|
|
133
134
|
}
|
|
134
135
|
export function createKeyStoreForProver(config) {
|
|
135
136
|
if (config.web3SignerUrl !== undefined && config.web3SignerUrl.length > 0) {
|
|
136
|
-
|
|
137
|
+
const keyStore = createKeyStoreFromWeb3Signer(config);
|
|
138
|
+
if (keyStore) {
|
|
139
|
+
return keyStore;
|
|
140
|
+
}
|
|
137
141
|
}
|
|
138
142
|
return createKeyStoreFromPublisherKeys(config);
|
|
139
143
|
}
|
package/dest/factory.d.ts
CHANGED
|
@@ -1,27 +1,33 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Archiver } from '@aztec/archiver';
|
|
2
|
+
import type { BlobClientInterface } from '@aztec/blob-client/client';
|
|
3
|
+
import type { EpochCacheInterface } from '@aztec/epoch-cache';
|
|
2
4
|
import { L1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
3
5
|
import { type Logger } from '@aztec/foundation/log';
|
|
4
6
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
5
|
-
import
|
|
6
|
-
import { type
|
|
7
|
-
import type
|
|
8
|
-
import type {
|
|
7
|
+
import { KeystoreManager } from '@aztec/node-keystore';
|
|
8
|
+
import { type ProverClientUserConfig } from '@aztec/prover-client';
|
|
9
|
+
import { type ProverPublisherConfig, type ProverTxSenderConfig } from '@aztec/sequencer-client';
|
|
10
|
+
import type { ITxProvider, ProverConfig, ProvingJobBroker, Service, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
9
11
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
10
|
-
import {
|
|
12
|
+
import type { SpecificProverNodeConfig } from './config.js';
|
|
11
13
|
import { ProverNode } from './prover-node.js';
|
|
12
14
|
import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
13
15
|
export type ProverNodeDeps = {
|
|
14
16
|
telemetry?: TelemetryClient;
|
|
15
17
|
log?: Logger;
|
|
16
|
-
|
|
17
|
-
archiver?: Archiver;
|
|
18
|
+
archiver: Archiver;
|
|
18
19
|
publisherFactory?: ProverPublisherFactory;
|
|
19
20
|
broker?: ProvingJobBroker;
|
|
20
21
|
l1TxUtils?: L1TxUtils;
|
|
21
22
|
dateProvider?: DateProvider;
|
|
23
|
+
worldStateSynchronizer: WorldStateSynchronizer;
|
|
24
|
+
p2pClient: {
|
|
25
|
+
getTxProvider(): ITxProvider;
|
|
26
|
+
} & Partial<Service>;
|
|
27
|
+
epochCache: EpochCacheInterface;
|
|
28
|
+
blobClient: BlobClientInterface;
|
|
29
|
+
keyStoreManager?: KeystoreManager;
|
|
22
30
|
};
|
|
23
|
-
/** Creates a new prover node given a config
|
|
24
|
-
export declare function createProverNode(userConfig:
|
|
25
|
-
|
|
26
|
-
}): Promise<ProverNode>;
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFrQixNQUFNLGlCQUFpQixDQUFDO0FBTWhFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBa0QsTUFBTSxzQkFBc0IsQ0FBQztBQVMzRyxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVuRixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlELE9BQU8sRUFBYSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUs5RixPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBMkIsTUFBTSxhQUFhLENBQUM7QUFFN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXZFLE1BQU0sTUFBTSxjQUFjLEdBQUc7SUFDM0IsU0FBUyxDQUFDLEVBQUUsZUFBZSxDQUFDO0lBQzVCLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNiLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN0RCxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUM7SUFDcEIsZ0JBQWdCLENBQUMsRUFBRSxzQkFBc0IsQ0FBQztJQUMxQyxNQUFNLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztJQUMxQixTQUFTLENBQUMsRUFBRSxTQUFTLENBQUM7SUFDdEIsWUFBWSxDQUFDLEVBQUUsWUFBWSxDQUFDO0NBQzdCLENBQUM7QUFFRixnREFBZ0Q7QUFDaEQsd0JBQXNCLGdCQUFnQixDQUNwQyxVQUFVLEVBQUUsZ0JBQWdCLEdBQUcsZUFBZSxHQUFHLGNBQWMsRUFDL0QsSUFBSSxHQUFFLGNBQW1CLEVBQ3pCLE9BQU8sR0FBRTtJQUNQLG1CQUFtQixDQUFDLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztDQUN2Qyx1QkFrTFAifQ==
|
|
31
|
+
/** Creates a new prover node subsystem given a config and dependencies */
|
|
32
|
+
export declare function createProverNode(userConfig: SpecificProverNodeConfig & ProverConfig & ProverClientUserConfig & ProverPublisherConfig & ProverTxSenderConfig, deps: ProverNodeDeps): Promise<ProverNode>;
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxPQUFPLEVBQTJCLEtBQUssc0JBQXNCLEVBQXNCLE1BQU0sc0JBQXNCLENBQUM7QUFFaEgsT0FBTyxFQUNMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssb0JBQW9CLEVBRTFCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxLQUFLLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLHNCQUFzQixFQUN2QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUk5RixPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdkUsTUFBTSxNQUFNLGNBQWMsR0FBRztJQUMzQixTQUFTLENBQUMsRUFBRSxlQUFlLENBQUM7SUFDNUIsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2IsUUFBUSxFQUFFLFFBQVEsQ0FBQztJQUNuQixnQkFBZ0IsQ0FBQyxFQUFFLHNCQUFzQixDQUFDO0lBQzFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixDQUFDO0lBQzFCLFNBQVMsQ0FBQyxFQUFFLFNBQVMsQ0FBQztJQUN0QixZQUFZLENBQUMsRUFBRSxZQUFZLENBQUM7SUFDNUIsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUM7SUFDL0MsU0FBUyxFQUFFO1FBQUUsYUFBYSxJQUFJLFdBQVcsQ0FBQTtLQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELFVBQVUsRUFBRSxtQkFBbUIsQ0FBQztJQUNoQyxVQUFVLEVBQUUsbUJBQW1CLENBQUM7SUFDaEMsZUFBZSxDQUFDLEVBQUUsZUFBZSxDQUFDO0NBQ25DLENBQUM7QUFFRiwwRUFBMEU7QUFDMUUsd0JBQXNCLGdCQUFnQixDQUNwQyxVQUFVLEVBQUUsd0JBQXdCLEdBQ2xDLFlBQVksR0FDWixzQkFBc0IsR0FDdEIscUJBQXFCLEdBQ3JCLG9CQUFvQixFQUN0QixJQUFJLEVBQUUsY0FBYyx1QkFpSXJCIn0=
|
package/dest/factory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAA2B,KAAK,sBAAsB,EAAsB,MAAM,sBAAsB,CAAC;AAEhH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAE1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAa,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAI9F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,SAAS,EAAE;QAAE,aAAa,IAAI,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,UAAU,EAAE,mBAAmB,CAAC;IAChC,UAAU,EAAE,mBAAmB,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AAEF,0EAA0E;AAC1E,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,wBAAwB,GAClC,YAAY,GACZ,sBAAsB,GACtB,qBAAqB,GACrB,oBAAoB,EACtB,IAAI,EAAE,cAAc,uBAiIrB"}
|
package/dest/factory.js
CHANGED
|
@@ -1,57 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { BBCircuitVerifier, QueuedIVCVerifier, TestCircuitVerifier } from '@aztec/bb-prover';
|
|
3
|
-
import { createBlobClientWithFileStores } from '@aztec/blob-client/client';
|
|
4
|
-
import { EpochCache } from '@aztec/epoch-cache';
|
|
1
|
+
import { Blob } from '@aztec/blob-lib';
|
|
5
2
|
import { createEthereumChain } from '@aztec/ethereum/chain';
|
|
3
|
+
import { makeL1HttpTransport } from '@aztec/ethereum/client';
|
|
6
4
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
7
5
|
import { PublisherManager } from '@aztec/ethereum/publisher-manager';
|
|
8
6
|
import { pick } from '@aztec/foundation/collection';
|
|
9
7
|
import { createLogger } from '@aztec/foundation/log';
|
|
10
8
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
11
|
-
import {
|
|
12
|
-
import { trySnapshotSync } from '@aztec/node-lib/actions';
|
|
13
|
-
import { createForwarderL1TxUtilsFromEthSigner, createL1TxUtilsFromEthSignerWithStore } from '@aztec/node-lib/factories';
|
|
14
|
-
import { NodeRpcTxSource, createP2PClient } from '@aztec/p2p';
|
|
9
|
+
import { createForwarderL1TxUtilsFromSigners, createL1TxUtilsFromSigners } from '@aztec/node-lib/factories';
|
|
15
10
|
import { createProverClient } from '@aztec/prover-client';
|
|
16
11
|
import { createAndStartProvingBroker } from '@aztec/prover-client/broker';
|
|
17
|
-
import {
|
|
18
|
-
import { getPackageVersion } from '@aztec/stdlib/update-checker';
|
|
12
|
+
import { getPublisherConfigFromProverConfig } from '@aztec/sequencer-client';
|
|
19
13
|
import { L1Metrics, getTelemetryClient } from '@aztec/telemetry-client';
|
|
20
|
-
import {
|
|
21
|
-
import { createPublicClient, fallback, http } from 'viem';
|
|
22
|
-
import { createKeyStoreForProver } from './config.js';
|
|
23
|
-
import { EpochMonitor } from './monitors/epoch-monitor.js';
|
|
14
|
+
import { createPublicClient } from 'viem';
|
|
24
15
|
import { ProverNode } from './prover-node.js';
|
|
25
16
|
import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
26
|
-
/** Creates a new prover node given a config
|
|
17
|
+
/** Creates a new prover node subsystem given a config and dependencies */ export async function createProverNode(userConfig, deps) {
|
|
27
18
|
const config = {
|
|
28
19
|
...userConfig
|
|
29
20
|
};
|
|
30
21
|
const telemetry = deps.telemetry ?? getTelemetryClient();
|
|
31
22
|
const dateProvider = deps.dateProvider ?? new DateProvider();
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
// Build a key store from file if given or from environment otherwise
|
|
35
|
-
let keyStoreManager;
|
|
36
|
-
const keyStoreProvided = config.keyStoreDirectory !== undefined && config.keyStoreDirectory.length > 0;
|
|
37
|
-
if (keyStoreProvided) {
|
|
38
|
-
const keyStores = loadKeystores(config.keyStoreDirectory);
|
|
39
|
-
keyStoreManager = new KeystoreManager(mergeKeystores(keyStores));
|
|
40
|
-
} else {
|
|
41
|
-
const keyStore = createKeyStoreForProver(config);
|
|
42
|
-
if (keyStore) {
|
|
43
|
-
keyStoreManager = new KeystoreManager(keyStore);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
await keyStoreManager?.validateSigners();
|
|
23
|
+
const log = deps.log ?? createLogger('prover');
|
|
24
|
+
const { p2pClient, archiver, keyStoreManager, worldStateSynchronizer } = deps;
|
|
47
25
|
// Extract the prover signers from the key store and verify that we have one.
|
|
26
|
+
await keyStoreManager?.validateSigners();
|
|
48
27
|
const proverSigners = keyStoreManager?.createProverSigners();
|
|
49
28
|
if (proverSigners === undefined) {
|
|
50
29
|
throw new Error('Failed to create prover key store configuration');
|
|
51
30
|
} else if (proverSigners.signers.length === 0) {
|
|
52
31
|
throw new Error('No prover signers found in the key store');
|
|
53
|
-
} else if (!keyStoreProvided) {
|
|
54
|
-
log.warn('KEY STORE CREATED FROM ENVIRONMENT, IT IS RECOMMENDED TO USE A FILE-BASED KEY STORE IN PRODUCTION ENVIRONMENTS');
|
|
55
32
|
}
|
|
56
33
|
log.info(`Creating prover with publishers ${proverSigners.signers.map((signer)=>signer.address.toString()).join()}`);
|
|
57
34
|
// Only consider user provided config if it is valid
|
|
@@ -63,45 +40,29 @@ import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
|
63
40
|
...config,
|
|
64
41
|
proverId
|
|
65
42
|
};
|
|
66
|
-
await trySnapshotSync(config, log);
|
|
67
|
-
const epochCache = await EpochCache.create(config.l1Contracts.rollupAddress, config);
|
|
68
|
-
const archiver = deps.archiver ?? await createArchiver(config, {
|
|
69
|
-
blobClient,
|
|
70
|
-
epochCache,
|
|
71
|
-
telemetry,
|
|
72
|
-
dateProvider
|
|
73
|
-
}, {
|
|
74
|
-
blockUntilSync: true
|
|
75
|
-
});
|
|
76
|
-
log.verbose(`Created archiver and synced to block ${await archiver.getBlockNumber()}`);
|
|
77
|
-
const worldStateConfig = {
|
|
78
|
-
...config,
|
|
79
|
-
worldStateProvenBlocksOnly: false
|
|
80
|
-
};
|
|
81
|
-
const worldStateSynchronizer = await createWorldStateSynchronizer(worldStateConfig, archiver, options.prefilledPublicData, telemetry);
|
|
82
|
-
await worldStateSynchronizer.start();
|
|
83
43
|
const broker = deps.broker ?? await createAndStartProvingBroker(config, telemetry);
|
|
84
44
|
const prover = await createProverClient(proverClientConfig, worldStateSynchronizer, broker, telemetry);
|
|
85
45
|
const { l1RpcUrls: rpcUrls, l1ChainId: chainId } = config;
|
|
86
46
|
const chain = createEthereumChain(rpcUrls, chainId);
|
|
87
47
|
const publicClient = createPublicClient({
|
|
88
48
|
chain: chain.chainInfo,
|
|
89
|
-
transport:
|
|
90
|
-
|
|
91
|
-
|
|
49
|
+
transport: makeL1HttpTransport(config.l1RpcUrls, {
|
|
50
|
+
timeout: config.l1HttpTimeoutMS
|
|
51
|
+
}),
|
|
92
52
|
pollingInterval: config.viemPollingIntervalMS
|
|
93
53
|
});
|
|
94
|
-
const rollupContract = new RollupContract(publicClient, config.
|
|
54
|
+
const rollupContract = new RollupContract(publicClient, config.rollupAddress.toString());
|
|
95
55
|
const l1TxUtils = deps.l1TxUtils ? [
|
|
96
56
|
deps.l1TxUtils
|
|
97
|
-
] : config.
|
|
57
|
+
] : config.proverPublisherForwarderAddress ? await createForwarderL1TxUtilsFromSigners(publicClient, proverSigners.signers, config.proverPublisherForwarderAddress, {
|
|
98
58
|
...config,
|
|
99
59
|
scope: 'prover'
|
|
100
60
|
}, {
|
|
101
61
|
telemetry,
|
|
102
62
|
logger: log.createChild('l1-tx-utils'),
|
|
103
|
-
dateProvider
|
|
104
|
-
|
|
63
|
+
dateProvider,
|
|
64
|
+
kzg: Blob.getViemKzgInstance()
|
|
65
|
+
}) : await createL1TxUtilsFromSigners(publicClient, proverSigners.signers, {
|
|
105
66
|
...config,
|
|
106
67
|
scope: 'prover'
|
|
107
68
|
}, {
|
|
@@ -109,25 +70,36 @@ import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
|
109
70
|
logger: log.createChild('l1-tx-utils'),
|
|
110
71
|
dateProvider
|
|
111
72
|
});
|
|
73
|
+
// Create a funder L1TxUtils from the keystore funding account (if configured)
|
|
74
|
+
const fundingSigner = keyStoreManager?.createFundingSigner();
|
|
75
|
+
let funderL1TxUtils;
|
|
76
|
+
if (fundingSigner) {
|
|
77
|
+
const [funder] = await createL1TxUtilsFromSigners(publicClient, [
|
|
78
|
+
fundingSigner
|
|
79
|
+
], {
|
|
80
|
+
...config,
|
|
81
|
+
scope: 'prover'
|
|
82
|
+
}, {
|
|
83
|
+
telemetry,
|
|
84
|
+
logger: log.createChild('l1-tx-utils:funder'),
|
|
85
|
+
dateProvider
|
|
86
|
+
});
|
|
87
|
+
funderL1TxUtils = funder;
|
|
88
|
+
}
|
|
112
89
|
const publisherFactory = deps.publisherFactory ?? new ProverPublisherFactory(config, {
|
|
113
90
|
rollupContract,
|
|
114
|
-
|
|
91
|
+
proofSubmissionTarget: config.proofSubmissionTargetAddress,
|
|
92
|
+
publisherManager: new PublisherManager(l1TxUtils, getPublisherConfigFromProverConfig(config), {
|
|
93
|
+
bindings: log.getBindings(),
|
|
94
|
+
funder: funderL1TxUtils
|
|
95
|
+
}),
|
|
115
96
|
telemetry
|
|
116
97
|
});
|
|
117
|
-
const proofVerifier = new QueuedIVCVerifier(config, config.realProofs || config.debugForceTxProofVerification ? await BBCircuitVerifier.new(config) : new TestCircuitVerifier(config.proverTestVerificationDelayMs));
|
|
118
|
-
const p2pClient = await createP2PClient(P2PClientType.Prover, config, archiver, proofVerifier, worldStateSynchronizer, epochCache, getPackageVersion() ?? '', dateProvider, telemetry, {
|
|
119
|
-
txCollectionNodeSources: deps.aztecNodeTxProvider ? [
|
|
120
|
-
new NodeRpcTxSource(deps.aztecNodeTxProvider, 'TestNode')
|
|
121
|
-
] : []
|
|
122
|
-
});
|
|
123
|
-
await p2pClient.start();
|
|
124
98
|
const proverNodeConfig = {
|
|
125
99
|
...pick(config, 'proverNodeMaxPendingJobs', 'proverNodeMaxParallelBlocksPerEpoch', 'proverNodePollingIntervalMs', 'proverNodeEpochProvingDelayMs', 'txGatheringMaxParallelRequests', 'txGatheringIntervalMs', 'txGatheringTimeoutMs', 'proverNodeFailedEpochStore', 'proverNodeDisableProofPublish', 'dataDirectory', 'l1ChainId', 'rollupVersion')
|
|
126
100
|
};
|
|
127
|
-
const epochMonitor = await EpochMonitor.create(archiver, {
|
|
128
|
-
pollingIntervalMs: config.proverNodePollingIntervalMs,
|
|
129
|
-
provingDelayMs: config.proverNodeEpochProvingDelayMs
|
|
130
|
-
}, telemetry);
|
|
131
101
|
const l1Metrics = new L1Metrics(telemetry.getMeter('ProverNodeL1Metrics'), publicClient, l1TxUtils.map((utils)=>utils.getSenderAddress()));
|
|
132
|
-
|
|
102
|
+
// Extract the shared delayer from the first L1TxUtils instance (all instances share the same delayer)
|
|
103
|
+
const delayer = l1TxUtils[0]?.delayer;
|
|
104
|
+
return new ProverNode(prover, publisherFactory, archiver, archiver, archiver, worldStateSynchronizer, p2pClient, rollupContract, l1Metrics, proverNodeConfig, telemetry, delayer, dateProvider);
|
|
133
105
|
}
|
package/dest/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from './actions/index.js';
|
|
|
2
2
|
export * from './config.js';
|
|
3
3
|
export * from './factory.js';
|
|
4
4
|
export * from './monitors/index.js';
|
|
5
|
+
export * from './proof-publishing-service.js';
|
|
5
6
|
export * from './prover-node-publisher.js';
|
|
6
7
|
export * from './prover-node.js';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsa0JBQWtCLENBQUMifQ==
|
package/dest/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kBAAkB,CAAC"}
|
package/dest/index.js
CHANGED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { type ARCHIVE_HEIGHT } from '@aztec/constants';
|
|
2
|
+
import { type EpochNumber, type SlotNumber } from '@aztec/foundation/branded-types';
|
|
3
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
|
+
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
5
|
+
import type { Logger } from '@aztec/foundation/log';
|
|
6
|
+
import type { Tuple } from '@aztec/foundation/serialize';
|
|
7
|
+
import { type DateProvider } from '@aztec/foundation/timer';
|
|
8
|
+
import type { EpochProverFactory } from '@aztec/prover-client';
|
|
9
|
+
import type { ChonkCache, SubTreeResult } from '@aztec/prover-client/orchestrator';
|
|
10
|
+
import type { PublicProcessorFactory } from '@aztec/simulator/server';
|
|
11
|
+
import type { CommitteeAttestation } from '@aztec/stdlib/block';
|
|
12
|
+
import type { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
13
|
+
import type { ForkMerkleTreeOperations, ITxProvider } from '@aztec/stdlib/interfaces/server';
|
|
14
|
+
import type { BlockHeader, Tx } from '@aztec/stdlib/tx';
|
|
15
|
+
import type { ProverNodeJobMetrics } from '../metrics.js';
|
|
16
|
+
/** Dependencies a `CheckpointProver` needs at construction. */
|
|
17
|
+
export type CheckpointProverDeps = {
|
|
18
|
+
proverFactory: EpochProverFactory;
|
|
19
|
+
/** Shared chonk-verifier cache. Survives across all sessions / epochs. */
|
|
20
|
+
chonkCache: ChonkCache;
|
|
21
|
+
publicProcessorFactory: PublicProcessorFactory;
|
|
22
|
+
dbProvider: Pick<ForkMerkleTreeOperations, 'fork'>;
|
|
23
|
+
txProvider: ITxProvider;
|
|
24
|
+
/** Clock the prover-node operates against — e2e fixtures inject a cheat-controlled one. */
|
|
25
|
+
dateProvider: DateProvider;
|
|
26
|
+
proverId: EthAddress;
|
|
27
|
+
metrics: ProverNodeJobMetrics;
|
|
28
|
+
/** Tx gathering deadline. */
|
|
29
|
+
txGatheringTimeoutMs: number;
|
|
30
|
+
/** Public processor deadline. */
|
|
31
|
+
deadline: Date | undefined;
|
|
32
|
+
log: Logger;
|
|
33
|
+
};
|
|
34
|
+
/** Inputs that fully describe a checkpoint at register time. */
|
|
35
|
+
export type CheckpointProverArgs = {
|
|
36
|
+
checkpoint: Checkpoint;
|
|
37
|
+
/** Epoch the checkpoint belongs to (derivable from slot + L1 constants; cached at register time). */
|
|
38
|
+
epochNumber: EpochNumber;
|
|
39
|
+
attestations: CommitteeAttestation[];
|
|
40
|
+
previousBlockHeader: BlockHeader;
|
|
41
|
+
l1ToL2Messages: Fr[];
|
|
42
|
+
previousArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Self-contained per-checkpoint prover, content-addressed by
|
|
46
|
+
* `(checkpoint number, slot number, checkpoint archive root)`.
|
|
47
|
+
*
|
|
48
|
+
* The store creates a CheckpointProver once per content-key. Keying on the checkpoint's
|
|
49
|
+
* own archive root (its post-state) means two checkpoints are "the same" iff they
|
|
50
|
+
* produce the same archive — so a reorg branch, or a replacement built on the same
|
|
51
|
+
* predecessor but with different content, keys to a distinct prover; an identical
|
|
52
|
+
* re-add keys to the same one and reuses its in-flight sub-tree work.
|
|
53
|
+
*
|
|
54
|
+
* The prover eagerly starts its own tx gather and sub-tree work in the constructor, so
|
|
55
|
+
* callers only need to call `whenBlockProofsReady()` to obtain the resulting block-rollup
|
|
56
|
+
* proofs.
|
|
57
|
+
*
|
|
58
|
+
* The prover survives prune/re-add cycles via `markPruned()` / `markCanonical()` —
|
|
59
|
+
* sub-tree proving keeps running underneath, so a checkpoint that is re-added after
|
|
60
|
+
* a brief reorg can be re-consumed with no re-proving.
|
|
61
|
+
*
|
|
62
|
+
* `cancel()` is idempotent. It aborts the gather + sub-tree, rejects the block-proof
|
|
63
|
+
* promise, and exposes a `whenDone()` that resolves once teardown has unwound.
|
|
64
|
+
*/
|
|
65
|
+
export declare class CheckpointProver {
|
|
66
|
+
private readonly deps;
|
|
67
|
+
readonly id: string;
|
|
68
|
+
readonly checkpoint: Checkpoint;
|
|
69
|
+
readonly epochNumber: EpochNumber;
|
|
70
|
+
readonly slotNumber: SlotNumber;
|
|
71
|
+
readonly attestations: CommitteeAttestation[];
|
|
72
|
+
readonly previousBlockHeader: BlockHeader;
|
|
73
|
+
readonly l1ToL2Messages: Fr[];
|
|
74
|
+
readonly previousArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>;
|
|
75
|
+
/** Per-prover tx map — populated by the internal gather. Empty until then. */
|
|
76
|
+
readonly txs: Map<string, Tx>;
|
|
77
|
+
/** Resolved by the sub-tree on success, rejected on cancel/failure. */
|
|
78
|
+
private readonly blockProofs;
|
|
79
|
+
private cancelled;
|
|
80
|
+
private subTree?;
|
|
81
|
+
private completed;
|
|
82
|
+
/** Pruned in the canonical chain but not yet reaped — sub-tree continues running. */
|
|
83
|
+
private pruned;
|
|
84
|
+
private readonly abortController;
|
|
85
|
+
/** Tracks the eager gather+execute task so `cancel()` and `whenDone()` can await its unwind. */
|
|
86
|
+
private readonly runPromise;
|
|
87
|
+
/** Tracks the cancel-driven teardown so `whenDone()` can await it. */
|
|
88
|
+
private cancelPromise?;
|
|
89
|
+
constructor(args: CheckpointProverArgs, deps: CheckpointProverDeps);
|
|
90
|
+
/**
|
|
91
|
+
* Stable content-addressed identifier: `${checkpoint number}:${slot}:${archive root}`.
|
|
92
|
+
* The archive root is the checkpoint's post-state, so it distinguishes any two
|
|
93
|
+
* checkpoints that differ in history or content while collapsing identical re-adds.
|
|
94
|
+
*/
|
|
95
|
+
static idFor(checkpoint: Checkpoint): string;
|
|
96
|
+
isCancelled(): boolean;
|
|
97
|
+
/** True once block-level proving has been fully *enqueued* (sub-tree completion may still be pending). */
|
|
98
|
+
isCompleted(): boolean;
|
|
99
|
+
isPruned(): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Mark this prover as no longer present in the canonical chain. Sub-tree proving keeps
|
|
102
|
+
* running so the work survives if the checkpoint is re-added. Idempotent.
|
|
103
|
+
*/
|
|
104
|
+
markPruned(): void;
|
|
105
|
+
/** Mark this prover as part of the canonical chain again after a re-add. Idempotent. */
|
|
106
|
+
markCanonical(): void;
|
|
107
|
+
/** AbortSignal that fires on cancel — for callers that want to wire their own tasks. */
|
|
108
|
+
getAbortSignal(): AbortSignal;
|
|
109
|
+
/** Promise that resolves with the block-rollup proofs for this checkpoint (or rejects on cancel/failure). */
|
|
110
|
+
whenBlockProofsReady(): Promise<SubTreeResult['blockProofOutputs']>;
|
|
111
|
+
/** Resolves when all in-flight work for this prover has fully unwound. */
|
|
112
|
+
whenDone(): Promise<void>;
|
|
113
|
+
private gatherAndExecute;
|
|
114
|
+
private gatherTxs;
|
|
115
|
+
private executeCheckpoint;
|
|
116
|
+
/**
|
|
117
|
+
* Mark cancelled. Idempotent. Aborts in-flight work, rejects the block-proof promise,
|
|
118
|
+
* and kicks off a background teardown of the sub-tree. The teardown promise is exposed
|
|
119
|
+
* via `whenDone()`.
|
|
120
|
+
*
|
|
121
|
+
* `routine` distinguishes a post-finalize teardown (sub-tree already proven, fires
|
|
122
|
+
* once at prover exit) from a real abort (reorg, prune, deadline). Behaviour is
|
|
123
|
+
* identical either way; the flag only adjusts log verbosity.
|
|
124
|
+
*/
|
|
125
|
+
cancel({ routine }?: {
|
|
126
|
+
routine?: boolean;
|
|
127
|
+
}): void;
|
|
128
|
+
private runCancel;
|
|
129
|
+
private teardownSubTree;
|
|
130
|
+
private getTxsForBlock;
|
|
131
|
+
private processTxs;
|
|
132
|
+
private createFork;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC1wcm92ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qb2IvY2hlY2twb2ludC1wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUF1QyxNQUFNLGtCQUFrQixDQUFDO0FBQzVGLE9BQU8sRUFBZSxLQUFLLFdBQVcsRUFBRSxLQUFLLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQVMsTUFBTSx5QkFBeUIsQ0FBQztBQUduRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sS0FBSyxFQUFpQyxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEgsT0FBTyxLQUFLLEVBQW1CLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkYsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQVcsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUc3RixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQWUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFckUsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint-prover.d.ts","sourceRoot":"","sources":["../../src/job/checkpoint-prover.ts"],"names":[],"mappings":"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"}
|