@aztec/prover-node 4.0.0-spartan.20260216 → 4.0.0-spartan.20260218
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/bin/run-failed-epoch.js +5 -2
- package/dest/config.d.ts +4 -7
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +14 -17
- package/dest/factory.d.ts +19 -15
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +9 -55
- package/dest/job/epoch-proving-job.d.ts +1 -1
- package/dest/job/epoch-proving-job.d.ts.map +1 -1
- package/dest/job/epoch-proving-job.js +2 -0
- package/dest/prover-node.d.ts +12 -7
- package/dest/prover-node.d.ts.map +1 -1
- package/dest/prover-node.js +1 -3
- package/dest/prover-publisher-factory.d.ts +3 -3
- package/dest/prover-publisher-factory.d.ts.map +1 -1
- package/package.json +22 -22
- package/src/bin/run-failed-epoch.ts +4 -1
- package/src/config.ts +21 -29
- package/src/factory.ts +41 -94
- package/src/job/epoch-proving-job.ts +2 -0
- package/src/prover-node.ts +3 -6
- package/src/prover-publisher-factory.ts +2 -2
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
/* eslint-disable no-console */ import {
|
|
1
|
+
/* eslint-disable no-console */ import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
2
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
3
|
import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
|
|
3
4
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
5
|
import { downloadEpochProvingJob, getProverNodeConfigFromEnv, rerunEpochProvingJob } from '@aztec/prover-node';
|
|
@@ -15,8 +16,10 @@ async function rerunFailedEpoch(provingJobUrl, baseLocalDir) {
|
|
|
15
16
|
const jobPath = join(localDir, 'data.bin');
|
|
16
17
|
const dataDir = join(localDir, 'state');
|
|
17
18
|
const env = getProverNodeConfigFromEnv();
|
|
19
|
+
const l1Config = getL1ContractsConfigEnvVars();
|
|
18
20
|
const config = {
|
|
19
|
-
...
|
|
21
|
+
...env,
|
|
22
|
+
...l1Config,
|
|
20
23
|
dataDirectory: dataDir,
|
|
21
24
|
dataStoreMapSizeKb: env.dataStoreMapSizeKb ?? 1024 * 1024,
|
|
22
25
|
proverId: env.proverId ?? EthAddress.random()
|
package/dest/config.d.ts
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
import { type ArchiverConfig } from '@aztec/archiver/config';
|
|
2
1
|
import type { ACVMConfig, BBConfig } from '@aztec/bb-prover/config';
|
|
3
|
-
import { type GenesisStateConfig } from '@aztec/ethereum/config';
|
|
4
2
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
5
3
|
import { type DataStoreConfig } from '@aztec/kv-store/config';
|
|
6
4
|
import { type KeyStoreConfig } from '@aztec/node-keystore/config';
|
|
7
5
|
import type { KeyStore } from '@aztec/node-keystore/types';
|
|
8
6
|
import { type SharedNodeConfig } from '@aztec/node-lib/config';
|
|
9
|
-
import { type P2PConfig } from '@aztec/p2p/config';
|
|
10
7
|
import { type ProverAgentConfig, type ProverBrokerConfig } from '@aztec/prover-client/broker/config';
|
|
11
8
|
import { type ProverClientUserConfig } from '@aztec/prover-client/config';
|
|
12
|
-
import { type
|
|
13
|
-
|
|
14
|
-
export type ProverNodeConfig = ArchiverConfig & ProverClientUserConfig & P2PConfig & WorldStateConfig & PublisherConfig & TxSenderConfig & DataStoreConfig & KeyStoreConfig & SharedNodeConfig & SpecificProverNodeConfig & GenesisStateConfig;
|
|
9
|
+
import { type ProverPublisherConfig, type ProverTxSenderConfig } from '@aztec/sequencer-client/config';
|
|
10
|
+
export type ProverNodeConfig = ProverClientUserConfig & ProverPublisherConfig & ProverTxSenderConfig & DataStoreConfig & KeyStoreConfig & SpecificProverNodeConfig & Pick<SharedNodeConfig, 'web3SignerUrl'>;
|
|
15
11
|
export type SpecificProverNodeConfig = {
|
|
16
12
|
proverNodeMaxPendingJobs: number;
|
|
17
13
|
proverNodePollingIntervalMs: number;
|
|
@@ -24,9 +20,10 @@ export type SpecificProverNodeConfig = {
|
|
|
24
20
|
txGatheringBatchSize: number;
|
|
25
21
|
txGatheringMaxParallelRequestsPerNode: number;
|
|
26
22
|
};
|
|
23
|
+
export declare const specificProverNodeConfigMappings: ConfigMappingsType<SpecificProverNodeConfig>;
|
|
27
24
|
export declare const proverNodeConfigMappings: ConfigMappingsType<ProverNodeConfig>;
|
|
28
25
|
export declare function getProverNodeConfigFromEnv(): ProverNodeConfig;
|
|
29
26
|
export declare function getProverNodeBrokerConfigFromEnv(): ProverBrokerConfig;
|
|
30
27
|
export declare function getProverNodeAgentConfigFromEnv(): ProverAgentConfig & BBConfig & ACVMConfig;
|
|
31
28
|
export declare function createKeyStoreForProver(config: ProverNodeConfig): KeyStore | undefined;
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFLeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsS0FBSyxlQUFlLEVBQXNCLE1BQU0sd0JBQXdCLENBQUM7QUFDbEYsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUEwQixNQUFNLDZCQUE2QixDQUFDO0FBRTFGLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUE0QixNQUFNLHdCQUF3QixDQUFDO0FBQ3pGLE9BQU8sRUFDTCxLQUFLLGlCQUFpQixFQUN0QixLQUFLLGtCQUFrQixFQUd4QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLHNCQUFzQixFQUFnRCxNQUFNLDZCQUE2QixDQUFDO0FBQ3hILE9BQU8sRUFDTCxLQUFLLHFCQUFxQixFQUMxQixLQUFLLG9CQUFvQixFQUcxQixNQUFNLGdDQUFnQyxDQUFDO0FBRXhDLE1BQU0sTUFBTSxnQkFBZ0IsR0FBRyxzQkFBc0IsR0FDbkQscUJBQXFCLEdBQ3JCLG9CQUFvQixHQUNwQixlQUFlLEdBQ2YsY0FBYyxHQUNkLHdCQUF3QixHQUN4QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFFMUMsTUFBTSxNQUFNLHdCQUF3QixHQUFHO0lBQ3JDLHdCQUF3QixFQUFFLE1BQU0sQ0FBQztJQUNqQywyQkFBMkIsRUFBRSxNQUFNLENBQUM7SUFDcEMsbUNBQW1DLEVBQUUsTUFBTSxDQUFDO0lBQzVDLDBCQUEwQixFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDL0MsNkJBQTZCLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUNsRCw2QkFBNkIsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUN4QyxvQkFBb0IsRUFBRSxNQUFNLENBQUM7SUFDN0IscUJBQXFCLEVBQUUsTUFBTSxDQUFDO0lBQzlCLG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3QixxQ0FBcUMsRUFBRSxNQUFNLENBQUM7Q0FDL0MsQ0FBQztBQUVGLGVBQU8sTUFBTSxnQ0FBZ0MsRUFBRSxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FrRHpGLENBQUM7QUFFRixlQUFPLE1BQU0sd0JBQXdCLEVBQUUsa0JBQWtCLENBQUMsZ0JBQWdCLENBUXpFLENBQUM7QUFFRix3QkFBZ0IsMEJBQTBCLElBQUksZ0JBQWdCLENBRTdEO0FBRUQsd0JBQWdCLGdDQUFnQyxJQUFJLGtCQUFrQixDQUlyRTtBQUVELHdCQUFnQiwrQkFBK0IsSUFBSSxpQkFBaUIsR0FBRyxRQUFRLEdBQUcsVUFBVSxDQUszRjtBQTBERCx3QkFBZ0IsdUJBQXVCLENBQUMsTUFBTSxFQUFFLGdCQUFnQixHQUFHLFFBQVEsR0FBRyxTQUFTLENBU3RGIn0=
|
package/dest/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,6BAA6B,CAAC;AAE1F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,wBAAwB,CAAC;AACzF,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAGxB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,sBAAsB,EAAgD,MAAM,6BAA6B,CAAC;AACxH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAG1B,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,GACnD,qBAAqB,GACrB,oBAAoB,GACpB,eAAe,GACf,cAAc,GACd,wBAAwB,GACxB,IAAI,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AAE1C,MAAM,MAAM,wBAAwB,GAAG;IACrC,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;IACpC,mCAAmC,EAAE,MAAM,CAAC;IAC5C,0BAA0B,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,6BAA6B,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qCAAqC,EAAE,MAAM,CAAC;CAC/C,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,kBAAkB,CAAC,wBAAwB,CAkDzF,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,CAAC,gBAAgB,CAQzE,CAAC;AAEF,wBAAgB,0BAA0B,IAAI,gBAAgB,CAE7D;AAED,wBAAgB,gCAAgC,IAAI,kBAAkB,CAIrE;AAED,wBAAgB,+BAA+B,IAAI,iBAAiB,GAAG,QAAQ,GAAG,UAAU,CAK3F;AA0DD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,QAAQ,GAAG,SAAS,CAStF"}
|
package/dest/config.js
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { genesisStateConfigMappings } from '@aztec/ethereum/config';
|
|
3
|
-
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
|
|
1
|
+
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, pickConfigMappings } from '@aztec/foundation/config';
|
|
4
2
|
import { dataConfigMappings } from '@aztec/kv-store/config';
|
|
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
|
-
|
|
13
|
-
const specificProverNodeConfigMappings = {
|
|
8
|
+
import { proverPublisherConfigMappings, proverTxSenderConfigMappings } from '@aztec/sequencer-client/config';
|
|
9
|
+
export const specificProverNodeConfigMappings = {
|
|
14
10
|
proverNodeMaxPendingJobs: {
|
|
15
11
|
env: 'PROVER_NODE_MAX_PENDING_JOBS',
|
|
16
12
|
description: 'The maximum number of pending jobs for the prover node',
|
|
@@ -64,15 +60,13 @@ const specificProverNodeConfigMappings = {
|
|
|
64
60
|
export const proverNodeConfigMappings = {
|
|
65
61
|
...dataConfigMappings,
|
|
66
62
|
...keyStoreConfigMappings,
|
|
67
|
-
...archiverConfigMappings,
|
|
68
63
|
...proverClientConfigMappings,
|
|
69
|
-
...
|
|
70
|
-
...
|
|
71
|
-
...getPublisherConfigMappings('PROVER'),
|
|
72
|
-
...getTxSenderConfigMappings('PROVER'),
|
|
64
|
+
...proverPublisherConfigMappings,
|
|
65
|
+
...proverTxSenderConfigMappings,
|
|
73
66
|
...specificProverNodeConfigMappings,
|
|
74
|
-
...
|
|
75
|
-
|
|
67
|
+
...pickConfigMappings(sharedNodeConfigMappings, [
|
|
68
|
+
'web3SignerUrl'
|
|
69
|
+
])
|
|
76
70
|
};
|
|
77
71
|
export function getProverNodeConfigFromEnv() {
|
|
78
72
|
return getConfigFromMappings(proverNodeConfigMappings);
|
|
@@ -94,7 +88,7 @@ function createKeyStoreFromWeb3Signer(config) {
|
|
|
94
88
|
return undefined;
|
|
95
89
|
}
|
|
96
90
|
// Also, we need at least one publisher address.
|
|
97
|
-
const publishers = config.
|
|
91
|
+
const publishers = config.proverPublisherAddresses ?? [];
|
|
98
92
|
if (publishers.length === 0) {
|
|
99
93
|
return undefined;
|
|
100
94
|
}
|
|
@@ -112,7 +106,7 @@ function createKeyStoreFromWeb3Signer(config) {
|
|
|
112
106
|
}
|
|
113
107
|
function createKeyStoreFromPublisherKeys(config) {
|
|
114
108
|
// Extract the publisher keys from the provided config.
|
|
115
|
-
const publisherKeys = config.
|
|
109
|
+
const publisherKeys = config.proverPublisherPrivateKeys ? config.proverPublisherPrivateKeys.map((k)=>ethPrivateKeySchema.parse(k.getValue())) : [];
|
|
116
110
|
// There must be at least 1.
|
|
117
111
|
if (publisherKeys.length === 0) {
|
|
118
112
|
return undefined;
|
|
@@ -133,7 +127,10 @@ function createKeyStoreFromPublisherKeys(config) {
|
|
|
133
127
|
}
|
|
134
128
|
export function createKeyStoreForProver(config) {
|
|
135
129
|
if (config.web3SignerUrl !== undefined && config.web3SignerUrl.length > 0) {
|
|
136
|
-
|
|
130
|
+
const keyStore = createKeyStoreFromWeb3Signer(config);
|
|
131
|
+
if (keyStore) {
|
|
132
|
+
return keyStore;
|
|
133
|
+
}
|
|
137
134
|
}
|
|
138
135
|
return createKeyStoreFromPublisherKeys(config);
|
|
139
136
|
}
|
package/dest/factory.d.ts
CHANGED
|
@@ -1,30 +1,34 @@
|
|
|
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 { AztecNode, ProvingJobBroker } from '@aztec/stdlib/interfaces/server';
|
|
9
|
-
import { P2PClientType } from '@aztec/stdlib/p2p';
|
|
10
|
-
import type { PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
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 { AztecNode, ITxProvider, ProverConfig, ProvingJobBroker, Service, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
11
11
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
12
|
-
import {
|
|
12
|
+
import type { SpecificProverNodeConfig } from './config.js';
|
|
13
13
|
import { ProverNode } from './prover-node.js';
|
|
14
14
|
import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
15
15
|
export type ProverNodeDeps = {
|
|
16
16
|
telemetry?: TelemetryClient;
|
|
17
17
|
log?: Logger;
|
|
18
18
|
aztecNodeTxProvider?: Pick<AztecNode, 'getTxsByHash'>;
|
|
19
|
-
archiver
|
|
19
|
+
archiver: Archiver;
|
|
20
20
|
publisherFactory?: ProverPublisherFactory;
|
|
21
21
|
broker?: ProvingJobBroker;
|
|
22
22
|
l1TxUtils?: L1TxUtils;
|
|
23
23
|
dateProvider?: DateProvider;
|
|
24
|
-
|
|
24
|
+
worldStateSynchronizer: WorldStateSynchronizer;
|
|
25
|
+
p2pClient: {
|
|
26
|
+
getTxProvider(): ITxProvider;
|
|
27
|
+
} & Partial<Service>;
|
|
28
|
+
epochCache: EpochCacheInterface;
|
|
29
|
+
blobClient: BlobClientInterface;
|
|
30
|
+
keyStoreManager?: KeystoreManager;
|
|
25
31
|
};
|
|
26
|
-
/** Creates a new prover node given a config
|
|
27
|
-
export declare function createProverNode(userConfig:
|
|
28
|
-
|
|
29
|
-
}): Promise<ProverNode>;
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFrQixNQUFNLGlCQUFpQixDQUFDO0FBT2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBa0QsTUFBTSxzQkFBc0IsQ0FBQztBQUczRyxPQUFPLEVBQW1CLEtBQUssYUFBYSxFQUFtQixNQUFNLFlBQVksQ0FBQztBQUdsRixPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU5RCxPQUFPLEVBQWEsS0FBSyxlQUFlLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFLOUYsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQTJCLE1BQU0sYUFBYSxDQUFDO0FBRTdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV2RSxNQUFNLE1BQU0sY0FBYyxHQUFHO0lBQzNCLFNBQVMsQ0FBQyxFQUFFLGVBQWUsQ0FBQztJQUM1QixHQUFHLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDYixtQkFBbUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdEQsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDO0lBQ3BCLGdCQUFnQixDQUFDLEVBQUUsc0JBQXNCLENBQUM7SUFDMUMsTUFBTSxDQUFDLEVBQUUsZ0JBQWdCLENBQUM7SUFDMUIsU0FBUyxDQUFDLEVBQUUsU0FBUyxDQUFDO0lBQ3RCLFlBQVksQ0FBQyxFQUFFLFlBQVksQ0FBQztJQUM1QixhQUFhLENBQUMsRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0NBQ3JELENBQUM7QUFFRixnREFBZ0Q7QUFDaEQsd0JBQXNCLGdCQUFnQixDQUNwQyxVQUFVLEVBQUUsZ0JBQWdCLEdBQUcsZUFBZSxHQUFHLGNBQWMsRUFDL0QsSUFBSSxHQUFFLGNBQW1CLEVBQ3pCLE9BQU8sR0FBRTtJQUNQLG1CQUFtQixDQUFDLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztDQUN2Qyx1QkF3TFAifQ==
|
|
32
|
+
/** Creates a new prover node subsystem given a config and dependencies */
|
|
33
|
+
export declare function createProverNode(userConfig: SpecificProverNodeConfig & ProverConfig & ProverClientUserConfig & ProverPublisherConfig & ProverTxSenderConfig, deps: ProverNodeDeps): Promise<ProverNode>;
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxPQUFPLEVBQTJCLEtBQUssc0JBQXNCLEVBQXNCLE1BQU0sc0JBQXNCLENBQUM7QUFFaEgsT0FBTyxFQUNMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssb0JBQW9CLEVBRTFCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxLQUFLLEVBQ1YsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxzQkFBc0IsRUFDdkIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQWEsS0FBSyxlQUFlLEVBQXNCLE1BQU0seUJBQXlCLENBQUM7QUFJOUYsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXZFLE1BQU0sTUFBTSxjQUFjLEdBQUc7SUFDM0IsU0FBUyxDQUFDLEVBQUUsZUFBZSxDQUFDO0lBQzVCLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNiLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN0RCxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ25CLGdCQUFnQixDQUFDLEVBQUUsc0JBQXNCLENBQUM7SUFDMUMsTUFBTSxDQUFDLEVBQUUsZ0JBQWdCLENBQUM7SUFDMUIsU0FBUyxDQUFDLEVBQUUsU0FBUyxDQUFDO0lBQ3RCLFlBQVksQ0FBQyxFQUFFLFlBQVksQ0FBQztJQUM1QixzQkFBc0IsRUFBRSxzQkFBc0IsQ0FBQztJQUMvQyxTQUFTLEVBQUU7UUFBRSxhQUFhLElBQUksV0FBVyxDQUFBO0tBQUUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0QsVUFBVSxFQUFFLG1CQUFtQixDQUFDO0lBQ2hDLFVBQVUsRUFBRSxtQkFBbUIsQ0FBQztJQUNoQyxlQUFlLENBQUMsRUFBRSxlQUFlLENBQUM7Q0FDbkMsQ0FBQztBQUVGLDBFQUEwRTtBQUMxRSx3QkFBc0IsZ0JBQWdCLENBQ3BDLFVBQVUsRUFBRSx3QkFBd0IsR0FDbEMsWUFBWSxHQUNaLHNCQUFzQixHQUN0QixxQkFBcUIsR0FDckIsb0JBQW9CLEVBQ3RCLElBQUksRUFBRSxjQUFjLHVCQTBIckIifQ==
|
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;AAG9D,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,SAAS,EACT,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;AAE5D,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,mBAAmB,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACtD,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,uBA0HrB"}
|
package/dest/factory.js
CHANGED
|
@@ -1,58 +1,34 @@
|
|
|
1
|
-
import { createArchiver } from '@aztec/archiver';
|
|
2
|
-
import { BBCircuitVerifier, QueuedIVCVerifier, TestCircuitVerifier } from '@aztec/bb-prover';
|
|
3
|
-
import { createBlobClientWithFileStores } from '@aztec/blob-client/client';
|
|
4
1
|
import { Blob } from '@aztec/blob-lib';
|
|
5
|
-
import { EpochCache } from '@aztec/epoch-cache';
|
|
6
2
|
import { createEthereumChain } from '@aztec/ethereum/chain';
|
|
7
3
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
8
4
|
import { PublisherManager } from '@aztec/ethereum/publisher-manager';
|
|
9
5
|
import { pick } from '@aztec/foundation/collection';
|
|
10
6
|
import { createLogger } from '@aztec/foundation/log';
|
|
11
7
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
12
|
-
import { KeystoreManager, loadKeystores, mergeKeystores } from '@aztec/node-keystore';
|
|
13
|
-
import { trySnapshotSync } from '@aztec/node-lib/actions';
|
|
14
8
|
import { createForwarderL1TxUtilsFromSigners, createL1TxUtilsFromSigners } from '@aztec/node-lib/factories';
|
|
15
|
-
import { NodeRpcTxSource, createP2PClient } from '@aztec/p2p';
|
|
16
9
|
import { createProverClient } from '@aztec/prover-client';
|
|
17
10
|
import { createAndStartProvingBroker } from '@aztec/prover-client/broker';
|
|
18
|
-
import {
|
|
19
|
-
import { getPackageVersion } from '@aztec/stdlib/update-checker';
|
|
11
|
+
import { getPublisherConfigFromProverConfig } from '@aztec/sequencer-client';
|
|
20
12
|
import { L1Metrics, getTelemetryClient } from '@aztec/telemetry-client';
|
|
21
|
-
import { createWorldStateSynchronizer } from '@aztec/world-state';
|
|
22
13
|
import { createPublicClient, fallback, http } from 'viem';
|
|
23
|
-
import { createKeyStoreForProver } from './config.js';
|
|
24
14
|
import { EpochMonitor } from './monitors/epoch-monitor.js';
|
|
25
15
|
import { ProverNode } from './prover-node.js';
|
|
26
16
|
import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
27
|
-
/** 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) {
|
|
28
18
|
const config = {
|
|
29
19
|
...userConfig
|
|
30
20
|
};
|
|
31
21
|
const telemetry = deps.telemetry ?? getTelemetryClient();
|
|
32
22
|
const dateProvider = deps.dateProvider ?? new DateProvider();
|
|
33
|
-
const
|
|
34
|
-
const
|
|
35
|
-
// Build a key store from file if given or from environment otherwise
|
|
36
|
-
let keyStoreManager;
|
|
37
|
-
const keyStoreProvided = config.keyStoreDirectory !== undefined && config.keyStoreDirectory.length > 0;
|
|
38
|
-
if (keyStoreProvided) {
|
|
39
|
-
const keyStores = loadKeystores(config.keyStoreDirectory);
|
|
40
|
-
keyStoreManager = new KeystoreManager(mergeKeystores(keyStores));
|
|
41
|
-
} else {
|
|
42
|
-
const keyStore = createKeyStoreForProver(config);
|
|
43
|
-
if (keyStore) {
|
|
44
|
-
keyStoreManager = new KeystoreManager(keyStore);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
await keyStoreManager?.validateSigners();
|
|
23
|
+
const log = deps.log ?? createLogger('prover');
|
|
24
|
+
const { p2pClient, archiver, keyStoreManager, worldStateSynchronizer } = deps;
|
|
48
25
|
// Extract the prover signers from the key store and verify that we have one.
|
|
26
|
+
await keyStoreManager?.validateSigners();
|
|
49
27
|
const proverSigners = keyStoreManager?.createProverSigners();
|
|
50
28
|
if (proverSigners === undefined) {
|
|
51
29
|
throw new Error('Failed to create prover key store configuration');
|
|
52
30
|
} else if (proverSigners.signers.length === 0) {
|
|
53
31
|
throw new Error('No prover signers found in the key store');
|
|
54
|
-
} else if (!keyStoreProvided) {
|
|
55
|
-
log.warn('KEY STORE CREATED FROM ENVIRONMENT, IT IS RECOMMENDED TO USE A FILE-BASED KEY STORE IN PRODUCTION ENVIRONMENTS');
|
|
56
32
|
}
|
|
57
33
|
log.info(`Creating prover with publishers ${proverSigners.signers.map((signer)=>signer.address.toString()).join()}`);
|
|
58
34
|
// Only consider user provided config if it is valid
|
|
@@ -64,19 +40,6 @@ import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
|
64
40
|
...config,
|
|
65
41
|
proverId
|
|
66
42
|
};
|
|
67
|
-
await trySnapshotSync(config, log);
|
|
68
|
-
const epochCache = await EpochCache.create(config.l1Contracts.rollupAddress, config);
|
|
69
|
-
const archiver = deps.archiver ?? await createArchiver(config, {
|
|
70
|
-
blobClient,
|
|
71
|
-
epochCache,
|
|
72
|
-
telemetry,
|
|
73
|
-
dateProvider
|
|
74
|
-
}, {
|
|
75
|
-
blockUntilSync: true
|
|
76
|
-
});
|
|
77
|
-
log.verbose(`Created archiver and synced to block ${await archiver.getBlockNumber()}`);
|
|
78
|
-
const worldStateSynchronizer = await createWorldStateSynchronizer(config, archiver, options.prefilledPublicData, telemetry);
|
|
79
|
-
await worldStateSynchronizer.start();
|
|
80
43
|
const broker = deps.broker ?? await createAndStartProvingBroker(config, telemetry);
|
|
81
44
|
const prover = await createProverClient(proverClientConfig, worldStateSynchronizer, broker, telemetry);
|
|
82
45
|
const { l1RpcUrls: rpcUrls, l1ChainId: chainId } = config;
|
|
@@ -91,7 +54,7 @@ import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
|
91
54
|
const rollupContract = new RollupContract(publicClient, config.l1Contracts.rollupAddress.toString());
|
|
92
55
|
const l1TxUtils = deps.l1TxUtils ? [
|
|
93
56
|
deps.l1TxUtils
|
|
94
|
-
] : config.
|
|
57
|
+
] : config.proverPublisherForwarderAddress ? await createForwarderL1TxUtilsFromSigners(publicClient, proverSigners.signers, config.proverPublisherForwarderAddress, {
|
|
95
58
|
...config,
|
|
96
59
|
scope: 'prover'
|
|
97
60
|
}, {
|
|
@@ -109,20 +72,11 @@ import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
|
109
72
|
});
|
|
110
73
|
const publisherFactory = deps.publisherFactory ?? new ProverPublisherFactory(config, {
|
|
111
74
|
rollupContract,
|
|
112
|
-
publisherManager: new PublisherManager(l1TxUtils, config, log.getBindings()),
|
|
75
|
+
publisherManager: new PublisherManager(l1TxUtils, getPublisherConfigFromProverConfig(config), log.getBindings()),
|
|
113
76
|
telemetry
|
|
114
77
|
});
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
...deps.p2pClientDeps,
|
|
118
|
-
txCollectionNodeSources: [
|
|
119
|
-
...deps.p2pClientDeps?.txCollectionNodeSources ?? [],
|
|
120
|
-
...deps.aztecNodeTxProvider ? [
|
|
121
|
-
new NodeRpcTxSource(deps.aztecNodeTxProvider, 'TestNode')
|
|
122
|
-
] : []
|
|
123
|
-
]
|
|
124
|
-
});
|
|
125
|
-
await p2pClient.start();
|
|
78
|
+
// TODO(#20393): Check that the tx collection node sources are properly injected
|
|
79
|
+
// See aztecNodeTxProvider
|
|
126
80
|
const proverNodeConfig = {
|
|
127
81
|
...pick(config, 'proverNodeMaxPendingJobs', 'proverNodeMaxParallelBlocksPerEpoch', 'proverNodePollingIntervalMs', 'proverNodeEpochProvingDelayMs', 'txGatheringMaxParallelRequests', 'txGatheringIntervalMs', 'txGatheringTimeoutMs', 'proverNodeFailedEpochStore', 'proverNodeDisableProofPublish', 'dataDirectory', 'l1ChainId', 'rollupVersion')
|
|
128
82
|
};
|
|
@@ -60,4 +60,4 @@ export declare class EpochProvingJob implements Traceable {
|
|
|
60
60
|
private processTxs;
|
|
61
61
|
}
|
|
62
62
|
export { type EpochProvingJobState };
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtcHJvdmluZy1qb2IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qb2IvZXBvY2gtcHJvdmluZy1qb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzNFLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQU12RixPQUFPLEtBQUssRUFBbUIsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RixPQUFPLEtBQUssRUFBVyxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRSxPQUFPLEVBQ0wsS0FBSyxXQUFXLEVBQ2hCLEtBQUssb0JBQW9CLEVBQ3pCLDRCQUE0QixFQUM1QixLQUFLLHdCQUF3QixFQUM5QixNQUFNLGlDQUFpQyxDQUFDO0FBSXpDLE9BQU8sRUFBYyxLQUFLLFNBQVMsRUFBRSxLQUFLLE1BQU0sRUFBYSxNQUFNLHlCQUF5QixDQUFDO0FBSTdGLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEtBQUssbUJBQW1CLEVBQStCLE1BQU0sNkJBQTZCLENBQUM7QUFFcEcsTUFBTSxNQUFNLHNCQUFzQixHQUFHO0lBQ25DLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQzVCLGNBQWMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUN6QixlQUFlLENBQUMsRUFBRSxPQUFPLENBQUM7Q0FDM0IsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxxQkFBYSxlQUFnQixZQUFXLFNBQVM7SUFZN0MsT0FBTyxDQUFDLElBQUk7SUFDWixPQUFPLENBQUMsVUFBVTtJQUNsQixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxzQkFBc0I7SUFDOUIsT0FBTyxDQUFDLFNBQVM7SUFDakIsT0FBTyxDQUFDLGFBQWE7SUFDckIsT0FBTyxDQUFDLE9BQU87SUFDZixPQUFPLENBQUMsUUFBUTtJQUNoQixPQUFPLENBQUMsTUFBTTtJQW5CaEIsT0FBTyxDQUFDLEtBQUssQ0FBdUM7SUFDcEQsT0FBTyxDQUFDLEdBQUcsQ0FBUztJQUNwQixPQUFPLENBQUMsSUFBSSxDQUFTO0lBRXJCLE9BQU8sQ0FBQyxVQUFVLENBQTRCO0lBQzlDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBNkI7SUFDdEQsT0FBTyxDQUFDLHNCQUFzQixDQUE2QjtJQUUzRCxTQUFnQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBRS9CLFlBQ1UsSUFBSSxFQUFFLG1CQUFtQixFQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxFQUNsRCxNQUFNLEVBQUUsV0FBVyxFQUNuQixzQkFBc0IsRUFBRSxzQkFBc0IsRUFDOUMsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxrQkFBa0IsQ0FBQyxFQUN4RCxhQUFhLEVBQUUsYUFBYSxHQUFHLFNBQVMsRUFDeEMsT0FBTyxFQUFFLG9CQUFvQixFQUM3QixRQUFRLEVBQUUsSUFBSSxHQUFHLFNBQVMsRUFDMUIsTUFBTSxFQUFFLHNCQUFzQixFQUN0QyxRQUFRLENBQUMsRUFBRSxjQUFjLEVBUzFCO0lBRU0sS0FBSyxJQUFJLE1BQU0sQ0FFckI7SUFFTSxRQUFRLElBQUksb0JBQW9CLENBRXRDO0lBRU0sY0FBYyxJQUFJLFdBQVcsQ0FFbkM7SUFFTSxXQUFXLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FFckM7SUFFTSxjQUFjLElBQUksbUJBQW1CLENBRTNDO0lBRUQsT0FBTyxLQUFLLFdBQVcsR0FFdEI7SUFFRCxPQUFPLEtBQUssV0FBVyxHQUV0QjtJQUVELE9BQU8sS0FBSyxHQUFHLEdBRWQ7SUFFRCxPQUFPLEtBQUssWUFBWSxHQUV2QjtJQUVEOztPQUVHO0lBSVUsR0FBRyxrQkF3TGY7WUFRYSxVQUFVO0lBcUJ4QixPQUFPLENBQUMsYUFBYTtJQUtyQixPQUFPLENBQUMsVUFBVTtJQU1MLElBQUksQ0FBQyxLQUFLLEdBQUUsNEJBQXdDLGlCQU1oRTtJQUVELE9BQU8sQ0FBQyxvQkFBb0I7WUF3QmQsa0JBQWtCO0lBa0NoQyxPQUFPLENBQUMsMEJBQTBCO0lBS2xDLE9BQU8sQ0FBQyxNQUFNO0lBSWQsT0FBTyxDQUFDLGlCQUFpQjtZQUlYLFVBQVU7Q0FtQnpCO0FBU0QsT0FBTyxFQUFFLEtBQUssb0JBQW9CLEVBQUUsQ0FBQyJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAMvF,OAAO,KAAK,EAAmB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEvF,OAAO,KAAK,EAAW,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,4BAA4B,EAC5B,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,MAAM,EAAa,MAAM,yBAAyB,CAAC;AAI7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,KAAK,mBAAmB,EAA+B,MAAM,6BAA6B,CAAC;AAEpG,MAAM,MAAM,sBAAsB,GAAG;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAY7C,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IAnBhB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,IAAI,CAAS;IAErB,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,sBAAsB,CAA6B;IAE3D,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,YACU,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,EAClD,MAAM,EAAE,WAAW,EACnB,sBAAsB,EAAE,sBAAsB,EAC9C,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,EACxD,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,IAAI,GAAG,SAAS,EAC1B,MAAM,EAAE,sBAAsB,EACtC,QAAQ,CAAC,EAAE,cAAc,EAS1B;IAEM,KAAK,IAAI,MAAM,CAErB;IAEM,QAAQ,IAAI,oBAAoB,CAEtC;IAEM,cAAc,IAAI,WAAW,CAEnC;IAEM,WAAW,IAAI,IAAI,GAAG,SAAS,CAErC;IAEM,cAAc,IAAI,mBAAmB,CAE3C;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,GAAG,GAEd;IAED,OAAO,KAAK,YAAY,GAEvB;IAED;;OAEG;IAIU,GAAG,
|
|
1
|
+
{"version":3,"file":"epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAMvF,OAAO,KAAK,EAAmB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEvF,OAAO,KAAK,EAAW,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,4BAA4B,EAC5B,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,MAAM,EAAa,MAAM,yBAAyB,CAAC;AAI7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,KAAK,mBAAmB,EAA+B,MAAM,6BAA6B,CAAC;AAEpG,MAAM,MAAM,sBAAsB,GAAG;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAY7C,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IAnBhB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,IAAI,CAAS;IAErB,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,sBAAsB,CAA6B;IAE3D,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,YACU,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,EAClD,MAAM,EAAE,WAAW,EACnB,sBAAsB,EAAE,sBAAsB,EAC9C,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,EACxD,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,IAAI,GAAG,SAAS,EAC1B,MAAM,EAAE,sBAAsB,EACtC,QAAQ,CAAC,EAAE,cAAc,EAS1B;IAEM,KAAK,IAAI,MAAM,CAErB;IAEM,QAAQ,IAAI,oBAAoB,CAEtC;IAEM,cAAc,IAAI,WAAW,CAEnC;IAEM,WAAW,IAAI,IAAI,GAAG,SAAS,CAErC;IAEM,cAAc,IAAI,mBAAmB,CAE3C;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,GAAG,GAEd;IAED,OAAO,KAAK,YAAY,GAEvB;IAED;;OAEG;IAIU,GAAG,kBAwLf;YAQa,UAAU;IAqBxB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,UAAU;IAML,IAAI,CAAC,KAAK,GAAE,4BAAwC,iBAMhE;IAED,OAAO,CAAC,oBAAoB;YAwBd,kBAAkB;IAkChC,OAAO,CAAC,0BAA0B;IAKlC,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,iBAAiB;YAIX,UAAU;CAmBzB;AASD,OAAO,EAAE,KAAK,oBAAoB,EAAE,CAAC"}
|
|
@@ -499,7 +499,9 @@ _dec = trackSpan('EpochProvingJob.run', function() {
|
|
|
499
499
|
this.runPromise = promise;
|
|
500
500
|
try {
|
|
501
501
|
const blobFieldsPerCheckpoint = this.checkpoints.map((checkpoint)=>checkpoint.toBlobFields());
|
|
502
|
+
this.log.info(`Blob fields per checkpoint: ${timer.ms()}ms`);
|
|
502
503
|
const finalBlobBatchingChallenges = await buildFinalBlobChallenges(blobFieldsPerCheckpoint);
|
|
504
|
+
this.log.info(`Final blob batching challeneger: ${timer.ms()}ms`);
|
|
503
505
|
this.prover.startNewEpoch(epochNumber, epochSizeCheckpoints, finalBlobBatchingChallenges);
|
|
504
506
|
await this.prover.startChonkVerifierCircuits(Array.from(this.txs.values()));
|
|
505
507
|
// Everything in the epoch should have the same chainId and version.
|
package/dest/prover-node.d.ts
CHANGED
|
@@ -3,14 +3,12 @@ import type { Delayer } from '@aztec/ethereum/l1-tx-utils';
|
|
|
3
3
|
import { EpochNumber } from '@aztec/foundation/branded-types';
|
|
4
4
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
5
5
|
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
6
|
-
import type { P2PClient } from '@aztec/p2p';
|
|
7
6
|
import { PublicProcessorFactory } from '@aztec/simulator/server';
|
|
8
7
|
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
9
8
|
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
10
9
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
11
|
-
import { type EpochProverManager, type ProverNodeApi, type Service, type WorldStateSyncStatus, type WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
10
|
+
import { type EpochProverManager, type ITxProvider, type ProverNodeApi, type Service, type WorldStateSyncStatus, type WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
12
11
|
import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
13
|
-
import type { P2PClientType } from '@aztec/stdlib/p2p';
|
|
14
12
|
import { L1Metrics, type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
15
13
|
import type { SpecificProverNodeConfig } from './config.js';
|
|
16
14
|
import type { EpochProvingJobData } from './job/epoch-proving-job-data.js';
|
|
@@ -32,7 +30,9 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
|
|
|
32
30
|
protected readonly l1ToL2MessageSource: L1ToL2MessageSource;
|
|
33
31
|
protected readonly contractDataSource: ContractDataSource;
|
|
34
32
|
protected readonly worldState: WorldStateSynchronizer;
|
|
35
|
-
protected readonly p2pClient:
|
|
33
|
+
protected readonly p2pClient: {
|
|
34
|
+
getTxProvider(): ITxProvider;
|
|
35
|
+
} & Partial<Service>;
|
|
36
36
|
protected readonly epochsMonitor: EpochMonitor;
|
|
37
37
|
protected readonly rollupContract: RollupContract;
|
|
38
38
|
protected readonly l1Metrics: L1Metrics;
|
|
@@ -46,9 +46,13 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
|
|
|
46
46
|
private rewardsMetrics;
|
|
47
47
|
readonly tracer: Tracer;
|
|
48
48
|
protected publisher: ProverNodePublisher | undefined;
|
|
49
|
-
constructor(prover: EpochProverManager, publisherFactory: ProverPublisherFactory, l2BlockSource: L2BlockSource & Partial<Service>, l1ToL2MessageSource: L1ToL2MessageSource, contractDataSource: ContractDataSource, worldState: WorldStateSynchronizer, p2pClient:
|
|
49
|
+
constructor(prover: EpochProverManager, publisherFactory: ProverPublisherFactory, l2BlockSource: L2BlockSource & Partial<Service>, l1ToL2MessageSource: L1ToL2MessageSource, contractDataSource: ContractDataSource, worldState: WorldStateSynchronizer, p2pClient: {
|
|
50
|
+
getTxProvider(): ITxProvider;
|
|
51
|
+
} & Partial<Service>, epochsMonitor: EpochMonitor, rollupContract: RollupContract, l1Metrics: L1Metrics, config?: Partial<ProverNodeOptions>, telemetryClient?: TelemetryClient, delayer?: Delayer | undefined, dateProvider?: DateProvider);
|
|
50
52
|
getProverId(): import("@aztec/foundation/eth-address").EthAddress;
|
|
51
|
-
getP2P():
|
|
53
|
+
getP2P(): {
|
|
54
|
+
getTxProvider(): ITxProvider;
|
|
55
|
+
} & Partial<Service>;
|
|
52
56
|
/** Returns the shared tx delayer for prover L1 txs, if enabled. Test-only. */
|
|
53
57
|
getDelayer(): Delayer | undefined;
|
|
54
58
|
/**
|
|
@@ -64,6 +68,7 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
|
|
|
64
68
|
start(): Promise<void>;
|
|
65
69
|
/**
|
|
66
70
|
* Stops the prover node and all its dependencies.
|
|
71
|
+
* Resources not owned by this node (shared with the parent aztec-node) are skipped.
|
|
67
72
|
*/
|
|
68
73
|
stop(): Promise<void>;
|
|
69
74
|
/** Returns world state status. */
|
|
@@ -109,4 +114,4 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
|
|
|
109
114
|
private validateConfig;
|
|
110
115
|
}
|
|
111
116
|
export {};
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm92ZXItbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQWlDLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSzdGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpFLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUV2QixLQUFLLFdBQVcsRUFDaEIsS0FBSyxhQUFhLEVBQ2xCLEtBQUssT0FBTyxFQUNaLEtBQUssb0JBQW9CLEVBQ3pCLEtBQUssc0JBQXNCLEVBRTVCLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRSxPQUFPLEVBRUwsU0FBUyxFQUNULEtBQUssZUFBZSxFQUNwQixLQUFLLFNBQVMsRUFDZCxLQUFLLE1BQU0sRUFHWixNQUFNLHlCQUF5QixDQUFDO0FBR2pDLE9BQU8sS0FBSyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAiC,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAK7F,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"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"}
|
package/dest/prover-node.js
CHANGED
|
@@ -515,16 +515,14 @@ _dec = trackSpan('ProverNode.createProvingJob', (epochNumber)=>({
|
|
|
515
515
|
}
|
|
516
516
|
/**
|
|
517
517
|
* Stops the prover node and all its dependencies.
|
|
518
|
+
* Resources not owned by this node (shared with the parent aztec-node) are skipped.
|
|
518
519
|
*/ async stop() {
|
|
519
520
|
this.log.info('Stopping ProverNode');
|
|
520
521
|
await this.epochsMonitor.stop();
|
|
521
522
|
await this.prover.stop();
|
|
522
|
-
await tryStop(this.p2pClient);
|
|
523
|
-
await tryStop(this.l2BlockSource);
|
|
524
523
|
await tryStop(this.publisherFactory);
|
|
525
524
|
this.publisher?.interrupt();
|
|
526
525
|
await Promise.all(Array.from(this.jobs.values()).map((job)=>job.stop()));
|
|
527
|
-
await this.worldState.stop();
|
|
528
526
|
this.rewardsMetrics.stop();
|
|
529
527
|
this.l1Metrics.stop();
|
|
530
528
|
await this.telemetryClient.stop();
|
|
@@ -2,14 +2,14 @@ import type { RollupContract } from '@aztec/ethereum/contracts';
|
|
|
2
2
|
import type { L1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
3
3
|
import type { PublisherManager } from '@aztec/ethereum/publisher-manager';
|
|
4
4
|
import type { LoggerBindings } from '@aztec/foundation/log';
|
|
5
|
-
import type {
|
|
5
|
+
import type { ProverPublisherConfig, ProverTxSenderConfig } from '@aztec/sequencer-client';
|
|
6
6
|
import type { TelemetryClient } from '@aztec/telemetry-client';
|
|
7
7
|
import { ProverNodePublisher } from './prover-node-publisher.js';
|
|
8
8
|
export declare class ProverPublisherFactory {
|
|
9
9
|
private config;
|
|
10
10
|
private deps;
|
|
11
11
|
private bindings?;
|
|
12
|
-
constructor(config:
|
|
12
|
+
constructor(config: ProverTxSenderConfig & ProverPublisherConfig, deps: {
|
|
13
13
|
rollupContract: RollupContract;
|
|
14
14
|
publisherManager: PublisherManager<L1TxUtils>;
|
|
15
15
|
telemetry?: TelemetryClient;
|
|
@@ -22,4 +22,4 @@ export declare class ProverPublisherFactory {
|
|
|
22
22
|
*/
|
|
23
23
|
create(): Promise<ProverNodePublisher>;
|
|
24
24
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLXB1Ymxpc2hlci1mYWN0b3J5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmVyLXB1Ymxpc2hlci1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRixPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVqRSxxQkFBYSxzQkFBc0I7SUFFL0IsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsSUFBSTtJQUtaLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFQbkIsWUFDVSxNQUFNLEVBQUUsb0JBQW9CLEdBQUcscUJBQXFCLEVBQ3BELElBQUksRUFBRTtRQUNaLGNBQWMsRUFBRSxjQUFjLENBQUM7UUFDL0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMsU0FBUyxDQUFDLEVBQUUsZUFBZSxDQUFDO0tBQzdCLEVBQ08sUUFBUSxDQUFDLDRCQUFnQixFQUMvQjtJQUVTLEtBQUssa0JBRWpCO0lBRU0sSUFBSSxTQUVWO0lBRUQ7OztPQUdHO0lBQ1UsTUFBTSxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQVdsRDtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-publisher-factory.d.ts","sourceRoot":"","sources":["../src/prover-publisher-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"prover-publisher-factory.d.ts","sourceRoot":"","sources":["../src/prover-publisher-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,QAAQ,CAAC;IAPnB,YACU,MAAM,EAAE,oBAAoB,GAAG,qBAAqB,EACpD,IAAI,EAAE;QACZ,cAAc,EAAE,cAAc,CAAC;QAC/B,gBAAgB,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC9C,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B,EACO,QAAQ,CAAC,4BAAgB,EAC/B;IAES,KAAK,kBAEjB;IAEM,IAAI,SAEV;IAED;;;OAGG;IACU,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAWlD;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-node",
|
|
3
|
-
"version": "4.0.0-spartan.
|
|
3
|
+
"version": "4.0.0-spartan.20260218",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js",
|
|
@@ -56,27 +56,27 @@
|
|
|
56
56
|
]
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@aztec/archiver": "4.0.0-spartan.
|
|
60
|
-
"@aztec/bb-prover": "4.0.0-spartan.
|
|
61
|
-
"@aztec/blob-client": "4.0.0-spartan.
|
|
62
|
-
"@aztec/blob-lib": "4.0.0-spartan.
|
|
63
|
-
"@aztec/constants": "4.0.0-spartan.
|
|
64
|
-
"@aztec/epoch-cache": "4.0.0-spartan.
|
|
65
|
-
"@aztec/ethereum": "4.0.0-spartan.
|
|
66
|
-
"@aztec/foundation": "4.0.0-spartan.
|
|
67
|
-
"@aztec/kv-store": "4.0.0-spartan.
|
|
68
|
-
"@aztec/l1-artifacts": "4.0.0-spartan.
|
|
69
|
-
"@aztec/node-keystore": "4.0.0-spartan.
|
|
70
|
-
"@aztec/node-lib": "4.0.0-spartan.
|
|
71
|
-
"@aztec/noir-protocol-circuits-types": "4.0.0-spartan.
|
|
72
|
-
"@aztec/p2p": "4.0.0-spartan.
|
|
73
|
-
"@aztec/protocol-contracts": "4.0.0-spartan.
|
|
74
|
-
"@aztec/prover-client": "4.0.0-spartan.
|
|
75
|
-
"@aztec/sequencer-client": "4.0.0-spartan.
|
|
76
|
-
"@aztec/simulator": "4.0.0-spartan.
|
|
77
|
-
"@aztec/stdlib": "4.0.0-spartan.
|
|
78
|
-
"@aztec/telemetry-client": "4.0.0-spartan.
|
|
79
|
-
"@aztec/world-state": "4.0.0-spartan.
|
|
59
|
+
"@aztec/archiver": "4.0.0-spartan.20260218",
|
|
60
|
+
"@aztec/bb-prover": "4.0.0-spartan.20260218",
|
|
61
|
+
"@aztec/blob-client": "4.0.0-spartan.20260218",
|
|
62
|
+
"@aztec/blob-lib": "4.0.0-spartan.20260218",
|
|
63
|
+
"@aztec/constants": "4.0.0-spartan.20260218",
|
|
64
|
+
"@aztec/epoch-cache": "4.0.0-spartan.20260218",
|
|
65
|
+
"@aztec/ethereum": "4.0.0-spartan.20260218",
|
|
66
|
+
"@aztec/foundation": "4.0.0-spartan.20260218",
|
|
67
|
+
"@aztec/kv-store": "4.0.0-spartan.20260218",
|
|
68
|
+
"@aztec/l1-artifacts": "4.0.0-spartan.20260218",
|
|
69
|
+
"@aztec/node-keystore": "4.0.0-spartan.20260218",
|
|
70
|
+
"@aztec/node-lib": "4.0.0-spartan.20260218",
|
|
71
|
+
"@aztec/noir-protocol-circuits-types": "4.0.0-spartan.20260218",
|
|
72
|
+
"@aztec/p2p": "4.0.0-spartan.20260218",
|
|
73
|
+
"@aztec/protocol-contracts": "4.0.0-spartan.20260218",
|
|
74
|
+
"@aztec/prover-client": "4.0.0-spartan.20260218",
|
|
75
|
+
"@aztec/sequencer-client": "4.0.0-spartan.20260218",
|
|
76
|
+
"@aztec/simulator": "4.0.0-spartan.20260218",
|
|
77
|
+
"@aztec/stdlib": "4.0.0-spartan.20260218",
|
|
78
|
+
"@aztec/telemetry-client": "4.0.0-spartan.20260218",
|
|
79
|
+
"@aztec/world-state": "4.0.0-spartan.20260218",
|
|
80
80
|
"source-map-support": "^0.5.21",
|
|
81
81
|
"tslib": "^2.4.0",
|
|
82
82
|
"viem": "npm:@aztec/viem@2.38.2"
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/* eslint-disable no-console */
|
|
2
|
+
import { getL1ContractsConfigEnvVars } from '@aztec/ethereum/config';
|
|
2
3
|
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
3
4
|
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
5
|
import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
|
|
@@ -22,8 +23,10 @@ async function rerunFailedEpoch(provingJobUrl: string, baseLocalDir: string) {
|
|
|
22
23
|
const dataDir = join(localDir, 'state');
|
|
23
24
|
|
|
24
25
|
const env = getProverNodeConfigFromEnv();
|
|
26
|
+
const l1Config = getL1ContractsConfigEnvVars();
|
|
25
27
|
const config = {
|
|
26
|
-
...
|
|
28
|
+
...env,
|
|
29
|
+
...l1Config,
|
|
27
30
|
dataDirectory: dataDir,
|
|
28
31
|
dataStoreMapSizeKb: env.dataStoreMapSizeKb ?? 1024 * 1024,
|
|
29
32
|
proverId: env.proverId ?? EthAddress.random(),
|
package/src/config.ts
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
import { type ArchiverConfig, archiverConfigMappings } from '@aztec/archiver/config';
|
|
2
1
|
import type { ACVMConfig, BBConfig } from '@aztec/bb-prover/config';
|
|
3
|
-
import { type GenesisStateConfig, genesisStateConfigMappings } from '@aztec/ethereum/config';
|
|
4
2
|
import {
|
|
5
3
|
type ConfigMappingsType,
|
|
6
4
|
booleanConfigHelper,
|
|
7
5
|
getConfigFromMappings,
|
|
8
6
|
numberConfigHelper,
|
|
7
|
+
pickConfigMappings,
|
|
9
8
|
} from '@aztec/foundation/config';
|
|
10
9
|
import { type DataStoreConfig, dataConfigMappings } from '@aztec/kv-store/config';
|
|
11
10
|
import { type KeyStoreConfig, keyStoreConfigMappings } from '@aztec/node-keystore/config';
|
|
12
11
|
import { ethPrivateKeySchema } from '@aztec/node-keystore/schemas';
|
|
13
12
|
import type { KeyStore } from '@aztec/node-keystore/types';
|
|
14
13
|
import { type SharedNodeConfig, sharedNodeConfigMappings } from '@aztec/node-lib/config';
|
|
15
|
-
import { type P2PConfig, p2pConfigMappings } from '@aztec/p2p/config';
|
|
16
14
|
import {
|
|
17
15
|
type ProverAgentConfig,
|
|
18
16
|
type ProverBrokerConfig,
|
|
@@ -21,24 +19,19 @@ import {
|
|
|
21
19
|
} from '@aztec/prover-client/broker/config';
|
|
22
20
|
import { type ProverClientUserConfig, bbConfigMappings, proverClientConfigMappings } from '@aztec/prover-client/config';
|
|
23
21
|
import {
|
|
24
|
-
type
|
|
25
|
-
type
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
type ProverPublisherConfig,
|
|
23
|
+
type ProverTxSenderConfig,
|
|
24
|
+
proverPublisherConfigMappings,
|
|
25
|
+
proverTxSenderConfigMappings,
|
|
28
26
|
} from '@aztec/sequencer-client/config';
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
P2PConfig &
|
|
34
|
-
WorldStateConfig &
|
|
35
|
-
PublisherConfig &
|
|
36
|
-
TxSenderConfig &
|
|
27
|
+
|
|
28
|
+
export type ProverNodeConfig = ProverClientUserConfig &
|
|
29
|
+
ProverPublisherConfig &
|
|
30
|
+
ProverTxSenderConfig &
|
|
37
31
|
DataStoreConfig &
|
|
38
32
|
KeyStoreConfig &
|
|
39
|
-
SharedNodeConfig &
|
|
40
33
|
SpecificProverNodeConfig &
|
|
41
|
-
|
|
34
|
+
Pick<SharedNodeConfig, 'web3SignerUrl'>;
|
|
42
35
|
|
|
43
36
|
export type SpecificProverNodeConfig = {
|
|
44
37
|
proverNodeMaxPendingJobs: number;
|
|
@@ -53,7 +46,7 @@ export type SpecificProverNodeConfig = {
|
|
|
53
46
|
txGatheringMaxParallelRequestsPerNode: number;
|
|
54
47
|
};
|
|
55
48
|
|
|
56
|
-
const specificProverNodeConfigMappings: ConfigMappingsType<SpecificProverNodeConfig> = {
|
|
49
|
+
export const specificProverNodeConfigMappings: ConfigMappingsType<SpecificProverNodeConfig> = {
|
|
57
50
|
proverNodeMaxPendingJobs: {
|
|
58
51
|
env: 'PROVER_NODE_MAX_PENDING_JOBS',
|
|
59
52
|
description: 'The maximum number of pending jobs for the prover node',
|
|
@@ -108,15 +101,11 @@ const specificProverNodeConfigMappings: ConfigMappingsType<SpecificProverNodeCon
|
|
|
108
101
|
export const proverNodeConfigMappings: ConfigMappingsType<ProverNodeConfig> = {
|
|
109
102
|
...dataConfigMappings,
|
|
110
103
|
...keyStoreConfigMappings,
|
|
111
|
-
...archiverConfigMappings,
|
|
112
104
|
...proverClientConfigMappings,
|
|
113
|
-
...
|
|
114
|
-
...
|
|
115
|
-
...getPublisherConfigMappings('PROVER'),
|
|
116
|
-
...getTxSenderConfigMappings('PROVER'),
|
|
105
|
+
...proverPublisherConfigMappings,
|
|
106
|
+
...proverTxSenderConfigMappings,
|
|
117
107
|
...specificProverNodeConfigMappings,
|
|
118
|
-
...
|
|
119
|
-
...sharedNodeConfigMappings,
|
|
108
|
+
...pickConfigMappings(sharedNodeConfigMappings, ['web3SignerUrl']),
|
|
120
109
|
};
|
|
121
110
|
|
|
122
111
|
export function getProverNodeConfigFromEnv(): ProverNodeConfig {
|
|
@@ -143,7 +132,7 @@ function createKeyStoreFromWeb3Signer(config: ProverNodeConfig): KeyStore | unde
|
|
|
143
132
|
}
|
|
144
133
|
|
|
145
134
|
// Also, we need at least one publisher address.
|
|
146
|
-
const publishers = config.
|
|
135
|
+
const publishers = config.proverPublisherAddresses ?? [];
|
|
147
136
|
|
|
148
137
|
if (publishers.length === 0) {
|
|
149
138
|
return undefined;
|
|
@@ -164,8 +153,8 @@ function createKeyStoreFromWeb3Signer(config: ProverNodeConfig): KeyStore | unde
|
|
|
164
153
|
|
|
165
154
|
function createKeyStoreFromPublisherKeys(config: ProverNodeConfig): KeyStore | undefined {
|
|
166
155
|
// Extract the publisher keys from the provided config.
|
|
167
|
-
const publisherKeys = config.
|
|
168
|
-
? config.
|
|
156
|
+
const publisherKeys = config.proverPublisherPrivateKeys
|
|
157
|
+
? config.proverPublisherPrivateKeys.map((k: { getValue: () => string }) => ethPrivateKeySchema.parse(k.getValue()))
|
|
169
158
|
: [];
|
|
170
159
|
|
|
171
160
|
// There must be at least 1.
|
|
@@ -194,7 +183,10 @@ function createKeyStoreFromPublisherKeys(config: ProverNodeConfig): KeyStore | u
|
|
|
194
183
|
|
|
195
184
|
export function createKeyStoreForProver(config: ProverNodeConfig): KeyStore | undefined {
|
|
196
185
|
if (config.web3SignerUrl !== undefined && config.web3SignerUrl.length > 0) {
|
|
197
|
-
|
|
186
|
+
const keyStore = createKeyStoreFromWeb3Signer(config);
|
|
187
|
+
if (keyStore) {
|
|
188
|
+
return keyStore;
|
|
189
|
+
}
|
|
198
190
|
}
|
|
199
191
|
|
|
200
192
|
return createKeyStoreFromPublisherKeys(config);
|
package/src/factory.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { createBlobClientWithFileStores } from '@aztec/blob-client/client';
|
|
1
|
+
import type { Archiver } from '@aztec/archiver';
|
|
2
|
+
import type { BlobClientInterface } from '@aztec/blob-client/client';
|
|
4
3
|
import { Blob } from '@aztec/blob-lib';
|
|
5
|
-
import {
|
|
4
|
+
import type { EpochCacheInterface } from '@aztec/epoch-cache';
|
|
6
5
|
import { createEthereumChain } from '@aztec/ethereum/chain';
|
|
7
6
|
import { RollupContract } from '@aztec/ethereum/contracts';
|
|
8
7
|
import { L1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
@@ -10,23 +9,28 @@ import { PublisherManager } from '@aztec/ethereum/publisher-manager';
|
|
|
10
9
|
import { pick } from '@aztec/foundation/collection';
|
|
11
10
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
12
11
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
13
|
-
import
|
|
14
|
-
import { type KeyStoreConfig, KeystoreManager, loadKeystores, mergeKeystores } from '@aztec/node-keystore';
|
|
15
|
-
import { trySnapshotSync } from '@aztec/node-lib/actions';
|
|
12
|
+
import { KeystoreManager } from '@aztec/node-keystore';
|
|
16
13
|
import { createForwarderL1TxUtilsFromSigners, createL1TxUtilsFromSigners } from '@aztec/node-lib/factories';
|
|
17
|
-
import {
|
|
18
|
-
import { type ProverClientConfig, createProverClient } from '@aztec/prover-client';
|
|
14
|
+
import { type ProverClientConfig, type ProverClientUserConfig, createProverClient } from '@aztec/prover-client';
|
|
19
15
|
import { createAndStartProvingBroker } from '@aztec/prover-client/broker';
|
|
20
|
-
import
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
import {
|
|
17
|
+
type ProverPublisherConfig,
|
|
18
|
+
type ProverTxSenderConfig,
|
|
19
|
+
getPublisherConfigFromProverConfig,
|
|
20
|
+
} from '@aztec/sequencer-client';
|
|
21
|
+
import type {
|
|
22
|
+
AztecNode,
|
|
23
|
+
ITxProvider,
|
|
24
|
+
ProverConfig,
|
|
25
|
+
ProvingJobBroker,
|
|
26
|
+
Service,
|
|
27
|
+
WorldStateSynchronizer,
|
|
28
|
+
} from '@aztec/stdlib/interfaces/server';
|
|
24
29
|
import { L1Metrics, type TelemetryClient, getTelemetryClient } from '@aztec/telemetry-client';
|
|
25
|
-
import { createWorldStateSynchronizer } from '@aztec/world-state';
|
|
26
30
|
|
|
27
31
|
import { createPublicClient, fallback, http } from 'viem';
|
|
28
32
|
|
|
29
|
-
import
|
|
33
|
+
import type { SpecificProverNodeConfig } from './config.js';
|
|
30
34
|
import { EpochMonitor } from './monitors/epoch-monitor.js';
|
|
31
35
|
import { ProverNode } from './prover-node.js';
|
|
32
36
|
import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
@@ -35,54 +39,42 @@ export type ProverNodeDeps = {
|
|
|
35
39
|
telemetry?: TelemetryClient;
|
|
36
40
|
log?: Logger;
|
|
37
41
|
aztecNodeTxProvider?: Pick<AztecNode, 'getTxsByHash'>;
|
|
38
|
-
archiver
|
|
42
|
+
archiver: Archiver;
|
|
39
43
|
publisherFactory?: ProverPublisherFactory;
|
|
40
44
|
broker?: ProvingJobBroker;
|
|
41
45
|
l1TxUtils?: L1TxUtils;
|
|
42
46
|
dateProvider?: DateProvider;
|
|
43
|
-
|
|
47
|
+
worldStateSynchronizer: WorldStateSynchronizer;
|
|
48
|
+
p2pClient: { getTxProvider(): ITxProvider } & Partial<Service>;
|
|
49
|
+
epochCache: EpochCacheInterface;
|
|
50
|
+
blobClient: BlobClientInterface;
|
|
51
|
+
keyStoreManager?: KeystoreManager;
|
|
44
52
|
};
|
|
45
53
|
|
|
46
|
-
/** Creates a new prover node given a config
|
|
54
|
+
/** Creates a new prover node subsystem given a config and dependencies */
|
|
47
55
|
export async function createProverNode(
|
|
48
|
-
userConfig:
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
56
|
+
userConfig: SpecificProverNodeConfig &
|
|
57
|
+
ProverConfig &
|
|
58
|
+
ProverClientUserConfig &
|
|
59
|
+
ProverPublisherConfig &
|
|
60
|
+
ProverTxSenderConfig,
|
|
61
|
+
deps: ProverNodeDeps,
|
|
53
62
|
) {
|
|
54
63
|
const config = { ...userConfig };
|
|
55
64
|
const telemetry = deps.telemetry ?? getTelemetryClient();
|
|
56
65
|
const dateProvider = deps.dateProvider ?? new DateProvider();
|
|
57
|
-
const
|
|
58
|
-
const log = deps.log ?? createLogger('prover-node');
|
|
59
|
-
|
|
60
|
-
// Build a key store from file if given or from environment otherwise
|
|
61
|
-
let keyStoreManager: KeystoreManager | undefined;
|
|
62
|
-
const keyStoreProvided = config.keyStoreDirectory !== undefined && config.keyStoreDirectory.length > 0;
|
|
63
|
-
if (keyStoreProvided) {
|
|
64
|
-
const keyStores = loadKeystores(config.keyStoreDirectory!);
|
|
65
|
-
keyStoreManager = new KeystoreManager(mergeKeystores(keyStores));
|
|
66
|
-
} else {
|
|
67
|
-
const keyStore = createKeyStoreForProver(config);
|
|
68
|
-
if (keyStore) {
|
|
69
|
-
keyStoreManager = new KeystoreManager(keyStore);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
66
|
+
const log = deps.log ?? createLogger('prover');
|
|
72
67
|
|
|
73
|
-
|
|
68
|
+
const { p2pClient, archiver, keyStoreManager, worldStateSynchronizer } = deps;
|
|
74
69
|
|
|
75
70
|
// Extract the prover signers from the key store and verify that we have one.
|
|
71
|
+
await keyStoreManager?.validateSigners();
|
|
76
72
|
const proverSigners = keyStoreManager?.createProverSigners();
|
|
77
73
|
|
|
78
74
|
if (proverSigners === undefined) {
|
|
79
75
|
throw new Error('Failed to create prover key store configuration');
|
|
80
76
|
} else if (proverSigners.signers.length === 0) {
|
|
81
77
|
throw new Error('No prover signers found in the key store');
|
|
82
|
-
} else if (!keyStoreProvided) {
|
|
83
|
-
log.warn(
|
|
84
|
-
'KEY STORE CREATED FROM ENVIRONMENT, IT IS RECOMMENDED TO USE A FILE-BASED KEY STORE IN PRODUCTION ENVIRONMENTS',
|
|
85
|
-
);
|
|
86
78
|
}
|
|
87
79
|
|
|
88
80
|
log.info(`Creating prover with publishers ${proverSigners.signers.map(signer => signer.address.toString()).join()}`);
|
|
@@ -94,27 +86,7 @@ export async function createProverNode(
|
|
|
94
86
|
const proverId = proverSigners.id ?? proverIdInUserConfig ?? proverSigners.signers[0].address;
|
|
95
87
|
|
|
96
88
|
// Now create the prover client configuration from this.
|
|
97
|
-
const proverClientConfig: ProverClientConfig = {
|
|
98
|
-
...config,
|
|
99
|
-
proverId,
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
await trySnapshotSync(config, log);
|
|
103
|
-
|
|
104
|
-
const epochCache = await EpochCache.create(config.l1Contracts.rollupAddress, config);
|
|
105
|
-
|
|
106
|
-
const archiver =
|
|
107
|
-
deps.archiver ??
|
|
108
|
-
(await createArchiver(config, { blobClient, epochCache, telemetry, dateProvider }, { blockUntilSync: true }));
|
|
109
|
-
log.verbose(`Created archiver and synced to block ${await archiver.getBlockNumber()}`);
|
|
110
|
-
|
|
111
|
-
const worldStateSynchronizer = await createWorldStateSynchronizer(
|
|
112
|
-
config,
|
|
113
|
-
archiver,
|
|
114
|
-
options.prefilledPublicData,
|
|
115
|
-
telemetry,
|
|
116
|
-
);
|
|
117
|
-
await worldStateSynchronizer.start();
|
|
89
|
+
const proverClientConfig: ProverClientConfig = { ...config, proverId };
|
|
118
90
|
|
|
119
91
|
const broker = deps.broker ?? (await createAndStartProvingBroker(config, telemetry));
|
|
120
92
|
|
|
@@ -133,11 +105,11 @@ export async function createProverNode(
|
|
|
133
105
|
|
|
134
106
|
const l1TxUtils = deps.l1TxUtils
|
|
135
107
|
? [deps.l1TxUtils]
|
|
136
|
-
: config.
|
|
108
|
+
: config.proverPublisherForwarderAddress
|
|
137
109
|
? await createForwarderL1TxUtilsFromSigners(
|
|
138
110
|
publicClient,
|
|
139
111
|
proverSigners.signers,
|
|
140
|
-
config.
|
|
112
|
+
config.proverPublisherForwarderAddress,
|
|
141
113
|
{ ...config, scope: 'prover' },
|
|
142
114
|
{ telemetry, logger: log.createChild('l1-tx-utils'), dateProvider, kzg: Blob.getViemKzgInstance() },
|
|
143
115
|
)
|
|
@@ -152,37 +124,12 @@ export async function createProverNode(
|
|
|
152
124
|
deps.publisherFactory ??
|
|
153
125
|
new ProverPublisherFactory(config, {
|
|
154
126
|
rollupContract,
|
|
155
|
-
publisherManager: new PublisherManager(l1TxUtils, config, log.getBindings()),
|
|
127
|
+
publisherManager: new PublisherManager(l1TxUtils, getPublisherConfigFromProverConfig(config), log.getBindings()),
|
|
156
128
|
telemetry,
|
|
157
129
|
});
|
|
158
130
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
config.realProofs || config.debugForceTxProofVerification
|
|
162
|
-
? await BBCircuitVerifier.new(config)
|
|
163
|
-
: new TestCircuitVerifier(config.proverTestVerificationDelayMs),
|
|
164
|
-
);
|
|
165
|
-
|
|
166
|
-
const p2pClient = await createP2PClient(
|
|
167
|
-
P2PClientType.Prover,
|
|
168
|
-
config,
|
|
169
|
-
archiver,
|
|
170
|
-
proofVerifier,
|
|
171
|
-
worldStateSynchronizer,
|
|
172
|
-
epochCache,
|
|
173
|
-
getPackageVersion() ?? '',
|
|
174
|
-
dateProvider,
|
|
175
|
-
telemetry,
|
|
176
|
-
{
|
|
177
|
-
...deps.p2pClientDeps,
|
|
178
|
-
txCollectionNodeSources: [
|
|
179
|
-
...(deps.p2pClientDeps?.txCollectionNodeSources ?? []),
|
|
180
|
-
...(deps.aztecNodeTxProvider ? [new NodeRpcTxSource(deps.aztecNodeTxProvider, 'TestNode')] : []),
|
|
181
|
-
],
|
|
182
|
-
},
|
|
183
|
-
);
|
|
184
|
-
|
|
185
|
-
await p2pClient.start();
|
|
131
|
+
// TODO(#20393): Check that the tx collection node sources are properly injected
|
|
132
|
+
// See aztecNodeTxProvider
|
|
186
133
|
|
|
187
134
|
const proverNodeConfig = {
|
|
188
135
|
...pick(
|
|
@@ -149,7 +149,9 @@ export class EpochProvingJob implements Traceable {
|
|
|
149
149
|
|
|
150
150
|
try {
|
|
151
151
|
const blobFieldsPerCheckpoint = this.checkpoints.map(checkpoint => checkpoint.toBlobFields());
|
|
152
|
+
this.log.info(`Blob fields per checkpoint: ${timer.ms()}ms`);
|
|
152
153
|
const finalBlobBatchingChallenges = await buildFinalBlobChallenges(blobFieldsPerCheckpoint);
|
|
154
|
+
this.log.info(`Final blob batching challeneger: ${timer.ms()}ms`);
|
|
153
155
|
|
|
154
156
|
this.prover.startNewEpoch(epochNumber, epochSizeCheckpoints, finalBlobBatchingChallenges);
|
|
155
157
|
await this.prover.startChonkVerifierCircuits(Array.from(this.txs.values()));
|
package/src/prover-node.ts
CHANGED
|
@@ -8,7 +8,6 @@ import { memoize } from '@aztec/foundation/decorators';
|
|
|
8
8
|
import { createLogger } from '@aztec/foundation/log';
|
|
9
9
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
10
10
|
import type { DataStoreConfig } from '@aztec/kv-store/config';
|
|
11
|
-
import type { P2PClient } from '@aztec/p2p';
|
|
12
11
|
import { PublicProcessorFactory } from '@aztec/simulator/server';
|
|
13
12
|
import type { L2BlockSource } from '@aztec/stdlib/block';
|
|
14
13
|
import type { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
@@ -18,6 +17,7 @@ import { getProofSubmissionDeadlineTimestamp } from '@aztec/stdlib/epoch-helpers
|
|
|
18
17
|
import {
|
|
19
18
|
type EpochProverManager,
|
|
20
19
|
EpochProvingJobTerminalState,
|
|
20
|
+
type ITxProvider,
|
|
21
21
|
type ProverNodeApi,
|
|
22
22
|
type Service,
|
|
23
23
|
type WorldStateSyncStatus,
|
|
@@ -25,7 +25,6 @@ import {
|
|
|
25
25
|
tryStop,
|
|
26
26
|
} from '@aztec/stdlib/interfaces/server';
|
|
27
27
|
import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
28
|
-
import type { P2PClientType } from '@aztec/stdlib/p2p';
|
|
29
28
|
import type { Tx } from '@aztec/stdlib/tx';
|
|
30
29
|
import {
|
|
31
30
|
Attributes,
|
|
@@ -73,7 +72,7 @@ export class ProverNode implements EpochMonitorHandler, ProverNodeApi, Traceable
|
|
|
73
72
|
protected readonly l1ToL2MessageSource: L1ToL2MessageSource,
|
|
74
73
|
protected readonly contractDataSource: ContractDataSource,
|
|
75
74
|
protected readonly worldState: WorldStateSynchronizer,
|
|
76
|
-
protected readonly p2pClient:
|
|
75
|
+
protected readonly p2pClient: { getTxProvider(): ITxProvider } & Partial<Service>,
|
|
77
76
|
protected readonly epochsMonitor: EpochMonitor,
|
|
78
77
|
protected readonly rollupContract: RollupContract,
|
|
79
78
|
protected readonly l1Metrics: L1Metrics,
|
|
@@ -162,17 +161,15 @@ export class ProverNode implements EpochMonitorHandler, ProverNodeApi, Traceable
|
|
|
162
161
|
|
|
163
162
|
/**
|
|
164
163
|
* Stops the prover node and all its dependencies.
|
|
164
|
+
* Resources not owned by this node (shared with the parent aztec-node) are skipped.
|
|
165
165
|
*/
|
|
166
166
|
async stop() {
|
|
167
167
|
this.log.info('Stopping ProverNode');
|
|
168
168
|
await this.epochsMonitor.stop();
|
|
169
169
|
await this.prover.stop();
|
|
170
|
-
await tryStop(this.p2pClient);
|
|
171
|
-
await tryStop(this.l2BlockSource);
|
|
172
170
|
await tryStop(this.publisherFactory);
|
|
173
171
|
this.publisher?.interrupt();
|
|
174
172
|
await Promise.all(Array.from(this.jobs.values()).map(job => job.stop()));
|
|
175
|
-
await this.worldState.stop();
|
|
176
173
|
this.rewardsMetrics.stop();
|
|
177
174
|
this.l1Metrics.stop();
|
|
178
175
|
await this.telemetryClient.stop();
|
|
@@ -2,14 +2,14 @@ import type { RollupContract } from '@aztec/ethereum/contracts';
|
|
|
2
2
|
import type { L1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
3
3
|
import type { PublisherManager } from '@aztec/ethereum/publisher-manager';
|
|
4
4
|
import type { LoggerBindings } from '@aztec/foundation/log';
|
|
5
|
-
import type {
|
|
5
|
+
import type { ProverPublisherConfig, ProverTxSenderConfig } from '@aztec/sequencer-client';
|
|
6
6
|
import type { TelemetryClient } from '@aztec/telemetry-client';
|
|
7
7
|
|
|
8
8
|
import { ProverNodePublisher } from './prover-node-publisher.js';
|
|
9
9
|
|
|
10
10
|
export class ProverPublisherFactory {
|
|
11
11
|
constructor(
|
|
12
|
-
private config:
|
|
12
|
+
private config: ProverTxSenderConfig & ProverPublisherConfig,
|
|
13
13
|
private deps: {
|
|
14
14
|
rollupContract: RollupContract;
|
|
15
15
|
publisherManager: PublisherManager<L1TxUtils>;
|