@aztec/prover-node 0.65.0 → 0.65.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/config.d.ts +4 -0
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +14 -2
- package/dest/factory.d.ts +2 -1
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +9 -3
- package/dest/prover-cache/cache_manager.d.ts +15 -0
- package/dest/prover-cache/cache_manager.d.ts.map +1 -0
- package/dest/prover-cache/cache_manager.js +57 -0
- package/dest/prover-cache/kv_cache.d.ts +11 -0
- package/dest/prover-cache/kv_cache.d.ts.map +1 -0
- package/dest/prover-cache/kv_cache.js +20 -0
- package/dest/prover-node.d.ts +5 -3
- package/dest/prover-node.d.ts.map +1 -1
- package/dest/prover-node.js +11 -5
- package/dest/quote-provider/http.d.ts.map +1 -1
- package/dest/quote-provider/http.js +4 -3
- package/package.json +16 -16
- package/src/config.ts +26 -1
- package/src/factory.ts +12 -3
- package/src/prover-cache/cache_manager.ts +69 -0
- package/src/prover-cache/kv_cache.ts +27 -0
- package/src/prover-node.ts +20 -2
- package/src/quote-provider/http.ts +3 -2
package/dest/config.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { type ArchiverConfig } from '@aztec/archiver';
|
|
2
|
+
import { type ACVMConfig, type BBConfig } from '@aztec/bb-prover';
|
|
3
|
+
import { type ProverAgentConfig, type ProverBrokerConfig } from '@aztec/circuit-types';
|
|
2
4
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
3
5
|
import { type DataStoreConfig } from '@aztec/kv-store/config';
|
|
4
6
|
import { type P2PConfig } from '@aztec/p2p';
|
|
@@ -18,4 +20,6 @@ export type QuoteProviderConfig = {
|
|
|
18
20
|
};
|
|
19
21
|
export declare const proverNodeConfigMappings: ConfigMappingsType<ProverNodeConfig>;
|
|
20
22
|
export declare function getProverNodeConfigFromEnv(): ProverNodeConfig;
|
|
23
|
+
export declare function getProverNodeBrokerConfigFromEnv(): ProverBrokerConfig;
|
|
24
|
+
export declare function getProverNodeAgentConfigFromEnv(): ProverAgentConfig & BBConfig & ACVMConfig;
|
|
21
25
|
//# sourceMappingURL=config.d.ts.map
|
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,EAAE,KAAK,cAAc,EAAoD,MAAM,iBAAiB,CAAC;AACxG,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,eAAe,EAA4C,MAAM,wBAAwB,CAAC;AACxG,OAAO,EAAE,KAAK,SAAS,EAA0C,MAAM,YAAY,CAAC;AACpF,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAoD,MAAM,iBAAiB,CAAC;AACxG,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAGxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,eAAe,EAA4C,MAAM,wBAAwB,CAAC;AACxG,OAAO,EAAE,KAAK,SAAS,EAA0C,MAAM,YAAY,CAAC;AACpF,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAKpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,gBAAgB,EAAwD,MAAM,oBAAoB,CAAC;AAEjH,OAAO,EAAE,KAAK,uBAAuB,EAAmC,MAAM,kBAAkB,CAAC;AACjG,OAAO,EACL,KAAK,wBAAwB,EAG9B,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAC3C,kBAAkB,GAClB,SAAS,GACT,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,eAAe,GACf,wBAAwB,GACxB,uBAAuB,GACvB,mBAAmB,GAAG;IACpB,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;CACrC,CAAC;AAEJ,MAAM,MAAM,mBAAmB,GAAG;IAChC,0BAA0B,EAAE,MAAM,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAmCF,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,CAAC,gBAAgB,CAYzE,CAAC;AAEF,wBAAgB,0BAA0B,IAAI,gBAAgB,CAc7D;AAED,wBAAgB,gCAAgC,IAAI,kBAAkB,CAIrE;AAED,wBAAgB,+BAA+B,IAAI,iBAAiB,GAAG,QAAQ,GAAG,UAAU,CAK3F"}
|
package/dest/config.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { archiverConfigMappings, getArchiverConfigFromEnv } from '@aztec/archiver';
|
|
2
|
+
import { proverAgentConfigMappings, proverBrokerConfigMappings, } from '@aztec/circuit-types';
|
|
2
3
|
import { bigintConfigHelper, getConfigFromMappings, numberConfigHelper, } from '@aztec/foundation/config';
|
|
3
4
|
import { dataConfigMappings, getDataConfigFromEnv } from '@aztec/kv-store/config';
|
|
4
5
|
import { getP2PConfigFromEnv, p2pConfigMappings } from '@aztec/p2p';
|
|
5
|
-
import { getProverEnvVars, proverClientConfigMappings } from '@aztec/prover-client';
|
|
6
|
+
import { bbConfigMappings, getProverEnvVars, proverClientConfigMappings, } from '@aztec/prover-client';
|
|
6
7
|
import { getPublisherConfigFromEnv, getPublisherConfigMappings, getTxSenderConfigFromEnv, getTxSenderConfigMappings, } from '@aztec/sequencer-client';
|
|
7
8
|
import { getWorldStateConfigFromEnv, worldStateConfigMappings } from '@aztec/world-state';
|
|
8
9
|
import { proverBondManagerConfigMappings } from './bond/config.js';
|
|
@@ -63,4 +64,15 @@ export function getProverNodeConfigFromEnv() {
|
|
|
63
64
|
...getConfigFromMappings(proverBondManagerConfigMappings),
|
|
64
65
|
};
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
+
export function getProverNodeBrokerConfigFromEnv() {
|
|
68
|
+
return {
|
|
69
|
+
...getConfigFromMappings(proverBrokerConfigMappings),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export function getProverNodeAgentConfigFromEnv() {
|
|
73
|
+
return {
|
|
74
|
+
...getConfigFromMappings(proverAgentConfigMappings),
|
|
75
|
+
...getConfigFromMappings(bbConfigMappings),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLHNCQUFzQixFQUFFLHdCQUF3QixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEcsT0FBTyxFQUdMLHlCQUF5QixFQUN6QiwwQkFBMEIsR0FDM0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBRUwsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixrQkFBa0IsR0FDbkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQXdCLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEcsT0FBTyxFQUFrQixtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwRixPQUFPLEVBRUwsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQiwwQkFBMEIsR0FDM0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBR0wseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQix3QkFBd0IsRUFDeEIseUJBQXlCLEdBQzFCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUF5QiwwQkFBMEIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpILE9BQU8sRUFBZ0MsK0JBQStCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRyxPQUFPLEVBRUwsMEJBQTBCLEVBQzFCLGdDQUFnQyxHQUNqQyxNQUFNLGlDQUFpQyxDQUFDO0FBc0J6QyxNQUFNLGdDQUFnQyxHQUVsQztJQUNGLHdCQUF3QixFQUFFO1FBQ3hCLEdBQUcsRUFBRSw4QkFBOEI7UUFDbkMsV0FBVyxFQUFFLHdEQUF3RDtRQUNyRSxHQUFHLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztLQUMxQjtJQUNELDJCQUEyQixFQUFFO1FBQzNCLEdBQUcsRUFBRSxpQ0FBaUM7UUFDdEMsV0FBVyxFQUFFLG1EQUFtRDtRQUNoRSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQztLQUM1QjtDQUNGLENBQUM7QUFFRixNQUFNLDJCQUEyQixHQUE0QztJQUMzRSwwQkFBMEIsRUFBRTtRQUMxQixHQUFHLEVBQUUsZ0NBQWdDO1FBQ3JDLFdBQVcsRUFBRSxvREFBb0Q7UUFDakUsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7S0FDM0I7SUFDRCx1QkFBdUIsRUFBRTtRQUN2QixHQUFHLEVBQUUsNEJBQTRCO1FBQ2pDLFdBQVcsRUFBRSxnREFBZ0Q7UUFDN0QsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7S0FDN0I7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixHQUFHLEVBQUUsb0JBQW9CO1FBQ3pCLFdBQVcsRUFDVCxnSEFBZ0g7S0FDbkg7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQXlDO0lBQzVFLEdBQUcsa0JBQWtCO0lBQ3JCLEdBQUcsc0JBQXNCO0lBQ3pCLEdBQUcsMEJBQTBCO0lBQzdCLEdBQUcsaUJBQWlCO0lBQ3BCLEdBQUcsd0JBQXdCO0lBQzNCLEdBQUcsMEJBQTBCLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLEdBQUcseUJBQXlCLENBQUMsUUFBUSxDQUFDO0lBQ3RDLEdBQUcsZ0NBQWdDO0lBQ25DLEdBQUcsMkJBQTJCO0lBQzlCLEdBQUcsK0JBQStCO0lBQ2xDLEdBQUcsZ0NBQWdDO0NBQ3BDLENBQUM7QUFFRixNQUFNLFVBQVUsMEJBQTBCO0lBQ3hDLE9BQU87UUFDTCxHQUFHLG9CQUFvQixFQUFFO1FBQ3pCLEdBQUcsd0JBQXdCLEVBQUU7UUFDN0IsR0FBRyxnQkFBZ0IsRUFBRTtRQUNyQixHQUFHLG1CQUFtQixFQUFFO1FBQ3hCLEdBQUcsMEJBQTBCLEVBQUU7UUFDL0IsR0FBRyx5QkFBeUIsQ0FBQyxRQUFRLENBQUM7UUFDdEMsR0FBRyx3QkFBd0IsQ0FBQyxRQUFRLENBQUM7UUFDckMsR0FBRywwQkFBMEIsRUFBRTtRQUMvQixHQUFHLHFCQUFxQixDQUFDLDJCQUEyQixDQUFDO1FBQ3JELEdBQUcscUJBQXFCLENBQUMsZ0NBQWdDLENBQUM7UUFDMUQsR0FBRyxxQkFBcUIsQ0FBQywrQkFBK0IsQ0FBQztLQUMxRCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxnQ0FBZ0M7SUFDOUMsT0FBTztRQUNMLEdBQUcscUJBQXFCLENBQUMsMEJBQTBCLENBQUM7S0FDckQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsK0JBQStCO0lBQzdDLE9BQU87UUFDTCxHQUFHLHFCQUFxQixDQUFDLHlCQUF5QixDQUFDO1FBQ25ELEdBQUcscUJBQXFCLENBQUMsZ0JBQWdCLENBQUM7S0FDM0MsQ0FBQztBQUNKLENBQUMifQ==
|
package/dest/factory.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Archiver } from '@aztec/archiver';
|
|
2
|
-
import { type ProverCoordination } from '@aztec/circuit-types';
|
|
2
|
+
import { type ProverCoordination, type ProvingJobBroker } from '@aztec/circuit-types';
|
|
3
3
|
import { type DebugLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { type DataStoreConfig } from '@aztec/kv-store/config';
|
|
5
5
|
import { L1Publisher } from '@aztec/sequencer-client';
|
|
@@ -13,5 +13,6 @@ export declare function createProverNode(config: ProverNodeConfig & DataStoreCon
|
|
|
13
13
|
aztecNodeTxProvider?: ProverCoordination;
|
|
14
14
|
archiver?: Archiver;
|
|
15
15
|
publisher?: L1Publisher;
|
|
16
|
+
broker?: ProvingJobBroker;
|
|
16
17
|
}): Promise<ProverNode>;
|
|
17
18
|
//# sourceMappingURL=factory.d.ts.map
|
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,KAAK,QAAQ,EAAkB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EAAE,KAAK,WAAW,EAAqB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAQ/D,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,aAAa,CAAC;AAK9E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAK9C,gDAAgD;AAChD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,GAAG,eAAe,EAC1C,IAAI,GAAE;IACJ,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,mBAAmB,CAAC,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,MAAM,CAAC,EAAE,gBAAgB,CAAC;CACtB,uBA6DP"}
|
package/dest/factory.js
CHANGED
|
@@ -4,13 +4,16 @@ import { Buffer32 } from '@aztec/foundation/buffer';
|
|
|
4
4
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
5
5
|
import { RollupAbi } from '@aztec/l1-artifacts';
|
|
6
6
|
import { createProverClient } from '@aztec/prover-client';
|
|
7
|
+
import { createAndStartProvingBroker } from '@aztec/prover-client/broker';
|
|
7
8
|
import { L1Publisher } from '@aztec/sequencer-client';
|
|
8
9
|
import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
|
|
9
10
|
import { createWorldStateSynchronizer } from '@aztec/world-state';
|
|
11
|
+
import { join } from 'path';
|
|
10
12
|
import { createPublicClient, getAddress, getContract, http } from 'viem';
|
|
11
13
|
import { createBondManager } from './bond/factory.js';
|
|
12
14
|
import { ClaimsMonitor } from './monitors/claims-monitor.js';
|
|
13
15
|
import { EpochMonitor } from './monitors/epoch-monitor.js';
|
|
16
|
+
import { ProverCacheManager } from './prover-cache/cache_manager.js';
|
|
14
17
|
import { createProverCoordination } from './prover-coordination/factory.js';
|
|
15
18
|
import { ProverNode } from './prover-node.js';
|
|
16
19
|
import { HttpQuoteProvider } from './quote-provider/http.js';
|
|
@@ -25,7 +28,8 @@ export async function createProverNode(config, deps = {}) {
|
|
|
25
28
|
const worldStateConfig = { ...config, worldStateProvenBlocksOnly: true };
|
|
26
29
|
const worldStateSynchronizer = await createWorldStateSynchronizer(worldStateConfig, archiver, telemetry);
|
|
27
30
|
await worldStateSynchronizer.start();
|
|
28
|
-
const
|
|
31
|
+
const broker = deps.broker ?? (await createAndStartProvingBroker(config));
|
|
32
|
+
const prover = await createProverClient(config, broker, telemetry);
|
|
29
33
|
// REFACTOR: Move publisher out of sequencer package and into an L1-related package
|
|
30
34
|
const publisher = deps.publisher ?? new L1Publisher(config, telemetry);
|
|
31
35
|
// If config.p2pEnabled is true, createProverCoordination will create a p2p client where quotes will be shared and tx's requested
|
|
@@ -47,7 +51,9 @@ export async function createProverNode(config, deps = {}) {
|
|
|
47
51
|
const rollupContract = publisher.getRollupContract();
|
|
48
52
|
const walletClient = publisher.getClient();
|
|
49
53
|
const bondManager = await createBondManager(rollupContract, walletClient, config);
|
|
50
|
-
|
|
54
|
+
const cacheDir = config.cacheDir ? join(config.cacheDir, `prover_${config.proverId}`) : undefined;
|
|
55
|
+
const cacheManager = new ProverCacheManager(cacheDir);
|
|
56
|
+
return new ProverNode(prover, publisher, archiver, archiver, archiver, worldStateSynchronizer, proverCoordination, quoteProvider, quoteSigner, claimsMonitor, epochMonitor, bondManager, telemetry, cacheManager, proverNodeConfig);
|
|
51
57
|
}
|
|
52
58
|
function createQuoteProvider(config) {
|
|
53
59
|
return config.quoteProviderUrl
|
|
@@ -64,4 +70,4 @@ function createQuoteSigner(config) {
|
|
|
64
70
|
const privateKey = config.publisherPrivateKey;
|
|
65
71
|
return QuoteSigner.new(Buffer32.fromString(privateKey), rollupContract);
|
|
66
72
|
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXRELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFVB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
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
import { type ProverCache } from '@aztec/circuit-types';
|
|
4
|
+
export declare class ProverCacheManager {
|
|
5
|
+
private cacheDir?;
|
|
6
|
+
private log;
|
|
7
|
+
constructor(cacheDir?: string | undefined, log?: import("@aztec/foundation/log").Logger);
|
|
8
|
+
openCache(epochNumber: bigint, epochHash: Buffer): Promise<ProverCache>;
|
|
9
|
+
/**
|
|
10
|
+
* Removes all caches for epochs older than the given epoch (including)
|
|
11
|
+
* @param upToAndIncludingEpoch - The epoch number up to which to remove caches
|
|
12
|
+
*/
|
|
13
|
+
removeStaleCaches(upToAndIncludingEpoch: bigint): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=cache_manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache_manager.d.ts","sourceRoot":"","sources":["../../src/prover-cache/cache_manager.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAexD,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC;IAAU,OAAO,CAAC,GAAG;gBAA9B,QAAQ,CAAC,oBAAQ,EAAU,GAAG,yCAAuD;IAE5F,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAsBpF;;;OAGG;IACU,iBAAiB,CAAC,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAwB7E"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { createDebugLogger } from '@aztec/foundation/log';
|
|
2
|
+
import { AztecLmdbStore } from '@aztec/kv-store/lmdb';
|
|
3
|
+
import { InMemoryProverCache } from '@aztec/prover-client';
|
|
4
|
+
import { mkdir, readFile, readdir, rm, writeFile } from 'fs/promises';
|
|
5
|
+
import { join } from 'path';
|
|
6
|
+
import { KVProverCache } from './kv_cache.js';
|
|
7
|
+
const EPOCH_DIR_PREFIX = 'epoch';
|
|
8
|
+
const EPOCH_DIR_SEPARATOR = '_';
|
|
9
|
+
const EPOCH_HASH_FILENAME = 'epoch_hash.txt';
|
|
10
|
+
export class ProverCacheManager {
|
|
11
|
+
constructor(cacheDir, log = createDebugLogger('aztec:prover-node:cache-manager')) {
|
|
12
|
+
this.cacheDir = cacheDir;
|
|
13
|
+
this.log = log;
|
|
14
|
+
}
|
|
15
|
+
async openCache(epochNumber, epochHash) {
|
|
16
|
+
if (!this.cacheDir) {
|
|
17
|
+
return new InMemoryProverCache();
|
|
18
|
+
}
|
|
19
|
+
const epochDir = EPOCH_DIR_PREFIX + EPOCH_DIR_SEPARATOR + epochNumber;
|
|
20
|
+
const dataDir = join(this.cacheDir, epochDir);
|
|
21
|
+
const storedEpochHash = await readFile(join(dataDir, EPOCH_HASH_FILENAME), 'hex').catch(() => Buffer.alloc(0));
|
|
22
|
+
if (storedEpochHash.toString() !== epochHash.toString()) {
|
|
23
|
+
await rm(dataDir, { recursive: true, force: true });
|
|
24
|
+
}
|
|
25
|
+
await mkdir(dataDir, { recursive: true });
|
|
26
|
+
await writeFile(join(dataDir, EPOCH_HASH_FILENAME), epochHash.toString('hex'));
|
|
27
|
+
const store = AztecLmdbStore.open(dataDir);
|
|
28
|
+
this.log.debug(`Created new database for epoch ${epochNumber} at ${dataDir}`);
|
|
29
|
+
const cleanup = () => store.close();
|
|
30
|
+
return new KVProverCache(store, cleanup);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Removes all caches for epochs older than the given epoch (including)
|
|
34
|
+
* @param upToAndIncludingEpoch - The epoch number up to which to remove caches
|
|
35
|
+
*/
|
|
36
|
+
async removeStaleCaches(upToAndIncludingEpoch) {
|
|
37
|
+
if (!this.cacheDir) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const entries = await readdir(this.cacheDir, { withFileTypes: true }).catch(() => []);
|
|
41
|
+
for (const item of entries) {
|
|
42
|
+
if (!item.isDirectory()) {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const [prefix, epochNumber] = item.name.split(EPOCH_DIR_SEPARATOR);
|
|
46
|
+
if (prefix !== EPOCH_DIR_PREFIX) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const epochNumberInt = BigInt(epochNumber);
|
|
50
|
+
if (epochNumberInt <= upToAndIncludingEpoch) {
|
|
51
|
+
this.log.info(`Removing old epoch database for epoch ${epochNumberInt} at ${join(this.cacheDir, item.name)}`);
|
|
52
|
+
await rm(join(this.cacheDir, item.name), { recursive: true });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVfbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92ZXItY2FjaGUvY2FjaGVfbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHM0QsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU1QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0FBQ2pDLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBQ2hDLE1BQU0sbUJBQW1CLEdBQUcsZ0JBQWdCLENBQUM7QUFFN0MsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixZQUFvQixRQUFpQixFQUFVLE1BQU0saUJBQWlCLENBQUMsaUNBQWlDLENBQUM7UUFBckYsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUFVLFFBQUcsR0FBSCxHQUFHLENBQXVEO0lBQUcsQ0FBQztJQUV0RyxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQW1CLEVBQUUsU0FBaUI7UUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUNuQyxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLEdBQUcsbUJBQW1CLEdBQUcsV0FBVyxDQUFDO1FBQ3RFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFB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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ProverCache, ProvingJobStatus } from '@aztec/circuit-types';
|
|
2
|
+
import type { AztecKVStore } from '@aztec/kv-store';
|
|
3
|
+
export declare class KVProverCache implements ProverCache {
|
|
4
|
+
private cleanup?;
|
|
5
|
+
private proofs;
|
|
6
|
+
constructor(store: AztecKVStore, cleanup?: (() => Promise<void>) | undefined);
|
|
7
|
+
getProvingJobStatus(jobId: string): Promise<ProvingJobStatus>;
|
|
8
|
+
setProvingJobStatus(jobId: string, status: ProvingJobStatus): Promise<void>;
|
|
9
|
+
close(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=kv_cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kv_cache.d.ts","sourceRoot":"","sources":["../../src/prover-cache/kv_cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,iBAAiB,CAAC;AAE9D,qBAAa,aAAc,YAAW,WAAW;IAGd,OAAO,CAAC,OAAO,CAAC;IAFjD,OAAO,CAAC,MAAM,CAA2B;gBAE7B,KAAK,EAAE,YAAY,EAAU,OAAO,CAAC,SAAQ,QAAQ,IAAI,CAAC,aAAA;IAItE,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAS7D,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export class KVProverCache {
|
|
2
|
+
constructor(store, cleanup) {
|
|
3
|
+
this.cleanup = cleanup;
|
|
4
|
+
this.proofs = store.openMap('prover_node_proof_status');
|
|
5
|
+
}
|
|
6
|
+
getProvingJobStatus(jobId) {
|
|
7
|
+
const item = this.proofs.get(jobId);
|
|
8
|
+
if (!item) {
|
|
9
|
+
return Promise.resolve({ status: 'not-found' });
|
|
10
|
+
}
|
|
11
|
+
return Promise.resolve(JSON.parse(item));
|
|
12
|
+
}
|
|
13
|
+
setProvingJobStatus(jobId, status) {
|
|
14
|
+
return this.proofs.set(jobId, JSON.stringify(status));
|
|
15
|
+
}
|
|
16
|
+
async close() {
|
|
17
|
+
await this.cleanup?.();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3ZfY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmVyLWNhY2hlL2t2X2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxhQUFhO0lBR3hCLFlBQVksS0FBbUIsRUFBVSxPQUE2QjtRQUE3QixZQUFPLEdBQVAsT0FBTyxDQUFzQjtRQUNwRSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBYTtRQUMvQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBYSxFQUFFLE1BQXdCO1FBQ3pELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDVCxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRiJ9
|
package/dest/prover-node.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type EpochProofClaim, type EpochProofQuote, type EpochProverManager, type L1ToL2MessageSource, type L2Block, type L2BlockSource, type MerkleTreeWriteOperations, type ProverCoordination, type ProverNodeApi, type Service, type WorldStateSynchronizer } from '@aztec/circuit-types';
|
|
1
|
+
import { type EpochProofClaim, type EpochProofQuote, type EpochProverManager, type L1ToL2MessageSource, type L2Block, type L2BlockSource, type MerkleTreeWriteOperations, type ProverCache, type ProverCoordination, type ProverNodeApi, type Service, type WorldStateSynchronizer } from '@aztec/circuit-types';
|
|
2
2
|
import { type ContractDataSource } from '@aztec/circuits.js';
|
|
3
3
|
import { type Maybe } from '@aztec/foundation/types';
|
|
4
4
|
import { type L1Publisher } from '@aztec/sequencer-client';
|
|
@@ -8,6 +8,7 @@ import { type BondManager } from './bond/bond-manager.js';
|
|
|
8
8
|
import { EpochProvingJob, type EpochProvingJobState } from './job/epoch-proving-job.js';
|
|
9
9
|
import { type ClaimsMonitor, type ClaimsMonitorHandler } from './monitors/claims-monitor.js';
|
|
10
10
|
import { type EpochMonitor, type EpochMonitorHandler } from './monitors/epoch-monitor.js';
|
|
11
|
+
import { type ProverCacheManager } from './prover-cache/cache_manager.js';
|
|
11
12
|
import { type QuoteProvider } from './quote-provider/index.js';
|
|
12
13
|
import { type QuoteSigner } from './quote-signer.js';
|
|
13
14
|
export type ProverNodeOptions = {
|
|
@@ -34,12 +35,13 @@ export declare class ProverNode implements ClaimsMonitorHandler, EpochMonitorHan
|
|
|
34
35
|
private readonly epochsMonitor;
|
|
35
36
|
private readonly bondManager;
|
|
36
37
|
private readonly telemetryClient;
|
|
38
|
+
private readonly proverCacheManager;
|
|
37
39
|
private log;
|
|
38
40
|
private latestEpochWeAreProving;
|
|
39
41
|
private jobs;
|
|
40
42
|
private options;
|
|
41
43
|
private metrics;
|
|
42
|
-
constructor(prover: EpochProverManager, publisher: L1Publisher, l2BlockSource: L2BlockSource & Maybe<Service>, l1ToL2MessageSource: L1ToL2MessageSource, contractDataSource: ContractDataSource, worldState: WorldStateSynchronizer, coordination: ProverCoordination & Maybe<Service>, quoteProvider: QuoteProvider, quoteSigner: QuoteSigner, claimsMonitor: ClaimsMonitor, epochsMonitor: EpochMonitor, bondManager: BondManager, telemetryClient: TelemetryClient, options?: Partial<ProverNodeOptions>);
|
|
44
|
+
constructor(prover: EpochProverManager, publisher: L1Publisher, l2BlockSource: L2BlockSource & Maybe<Service>, l1ToL2MessageSource: L1ToL2MessageSource, contractDataSource: ContractDataSource, worldState: WorldStateSynchronizer, coordination: ProverCoordination & Maybe<Service>, quoteProvider: QuoteProvider, quoteSigner: QuoteSigner, claimsMonitor: ClaimsMonitor, epochsMonitor: EpochMonitor, bondManager: BondManager, telemetryClient: TelemetryClient, proverCacheManager: ProverCacheManager, options?: Partial<ProverNodeOptions>);
|
|
43
45
|
handleClaim(proofClaim: EpochProofClaim): Promise<void>;
|
|
44
46
|
/**
|
|
45
47
|
* Handles the epoch number to prove when the prover node starts by checking if there
|
|
@@ -87,7 +89,7 @@ export declare class ProverNode implements ClaimsMonitorHandler, EpochMonitorHan
|
|
|
87
89
|
private checkMaximumPendingJobs;
|
|
88
90
|
private createProvingJob;
|
|
89
91
|
/** Extracted for testing purposes. */
|
|
90
|
-
protected doCreateEpochProvingJob(epochNumber: bigint, blocks: L2Block[], publicDb: MerkleTreeWriteOperations, proverDb: MerkleTreeWriteOperations, publicProcessorFactory: PublicProcessorFactory, cleanUp: () => Promise<void>): EpochProvingJob;
|
|
92
|
+
protected doCreateEpochProvingJob(epochNumber: bigint, blocks: L2Block[], publicDb: MerkleTreeWriteOperations, proverDb: MerkleTreeWriteOperations, proverCache: ProverCache, publicProcessorFactory: PublicProcessorFactory, cleanUp: () => Promise<void>): EpochProvingJob;
|
|
91
93
|
/** Extracted for testing purposes. */
|
|
92
94
|
protected triggerMonitors(): Promise<void>;
|
|
93
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,sBAAsB,EAE5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
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
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EpochProofQuotePayload, tryStop, } from '@aztec/circuit-types';
|
|
2
2
|
import { compact } from '@aztec/foundation/collection';
|
|
3
|
+
import { sha256 } from '@aztec/foundation/crypto';
|
|
3
4
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
4
5
|
import { PublicProcessorFactory } from '@aztec/simulator';
|
|
5
6
|
import { EpochProvingJob } from './job/epoch-proving-job.js';
|
|
@@ -11,7 +12,7 @@ import { ProverNodeMetrics } from './metrics.js';
|
|
|
11
12
|
* proof for the epoch, and submits it to L1.
|
|
12
13
|
*/
|
|
13
14
|
export class ProverNode {
|
|
14
|
-
constructor(prover, publisher, l2BlockSource, l1ToL2MessageSource, contractDataSource, worldState, coordination, quoteProvider, quoteSigner, claimsMonitor, epochsMonitor, bondManager, telemetryClient, options = {}) {
|
|
15
|
+
constructor(prover, publisher, l2BlockSource, l1ToL2MessageSource, contractDataSource, worldState, coordination, quoteProvider, quoteSigner, claimsMonitor, epochsMonitor, bondManager, telemetryClient, proverCacheManager, options = {}) {
|
|
15
16
|
this.prover = prover;
|
|
16
17
|
this.publisher = publisher;
|
|
17
18
|
this.l2BlockSource = l2BlockSource;
|
|
@@ -25,6 +26,7 @@ export class ProverNode {
|
|
|
25
26
|
this.epochsMonitor = epochsMonitor;
|
|
26
27
|
this.bondManager = bondManager;
|
|
27
28
|
this.telemetryClient = telemetryClient;
|
|
29
|
+
this.proverCacheManager = proverCacheManager;
|
|
28
30
|
this.log = createDebugLogger('aztec:prover-node');
|
|
29
31
|
this.jobs = new Map();
|
|
30
32
|
this.options = {
|
|
@@ -192,18 +194,22 @@ export class ProverNode {
|
|
|
192
194
|
const proverDb = await this.worldState.fork(fromBlock - 1);
|
|
193
195
|
// Create a processor using the forked world state
|
|
194
196
|
const publicProcessorFactory = new PublicProcessorFactory(this.contractDataSource, this.telemetryClient);
|
|
197
|
+
const epochHash = sha256(Buffer.concat(blocks.map(block => block.hash().toBuffer())));
|
|
198
|
+
const proverCache = await this.proverCacheManager.openCache(epochNumber, epochHash);
|
|
195
199
|
const cleanUp = async () => {
|
|
196
200
|
await publicDb.close();
|
|
197
201
|
await proverDb.close();
|
|
202
|
+
await proverCache.close();
|
|
203
|
+
await this.proverCacheManager.removeStaleCaches(epochNumber);
|
|
198
204
|
this.jobs.delete(job.getId());
|
|
199
205
|
};
|
|
200
|
-
const job = this.doCreateEpochProvingJob(epochNumber, blocks, publicDb, proverDb, publicProcessorFactory, cleanUp);
|
|
206
|
+
const job = this.doCreateEpochProvingJob(epochNumber, blocks, publicDb, proverDb, proverCache, publicProcessorFactory, cleanUp);
|
|
201
207
|
this.jobs.set(job.getId(), job);
|
|
202
208
|
return job;
|
|
203
209
|
}
|
|
204
210
|
/** Extracted for testing purposes. */
|
|
205
|
-
doCreateEpochProvingJob(epochNumber, blocks, publicDb, proverDb, publicProcessorFactory, cleanUp) {
|
|
206
|
-
return new EpochProvingJob(publicDb, epochNumber, blocks, this.prover.createEpochProver(proverDb), publicProcessorFactory, this.publisher, this.l2BlockSource, this.l1ToL2MessageSource, this.coordination, this.metrics, cleanUp);
|
|
211
|
+
doCreateEpochProvingJob(epochNumber, blocks, publicDb, proverDb, proverCache, publicProcessorFactory, cleanUp) {
|
|
212
|
+
return new EpochProvingJob(publicDb, epochNumber, blocks, this.prover.createEpochProver(proverDb, proverCache), publicProcessorFactory, this.publisher, this.l2BlockSource, this.l1ToL2MessageSource, this.coordination, this.metrics, cleanUp);
|
|
207
213
|
}
|
|
208
214
|
/** Extracted for testing purposes. */
|
|
209
215
|
async triggerMonitors() {
|
|
@@ -211,4 +217,4 @@ export class ProverNode {
|
|
|
211
217
|
await this.claimsMonitor.work();
|
|
212
218
|
}
|
|
213
219
|
}
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmVyLW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHNCQUFzQixFQVV0QixPQUFPLEdBQ1IsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJMUQsT0FBTyxFQUFFLGVBQWUsRUFBNkIsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFXakQ7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sVUFBVTtJQVFyQixZQUNtQixNQUEwQixFQUMxQixTQUFzQixFQUN0QixhQUE2QyxFQUM3QyxtQkFBd0MsRUFDeEMsa0JBQXNDLEVBQ3RDLFVBQWtDLEVBQ2xDLFlBQWlELEVBQ2pELGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLGFBQTJCLEVBQzNCLFdBQXdCLEVBQ3hCLGVBQWdDLEVBQ2pELFVBQXNDLEVBQUU7UUFidkIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0M7UUFDN0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGVBQVUsR0FBVixVQUFVLENBQXdCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFxQztRQUNqRCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixrQkFBYSxHQUFi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
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmVyLW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHNCQUFzQixFQVd0QixPQUFPLEdBQ1IsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSTFELE9BQU8sRUFBRSxlQUFlLEVBQTZCLE1BQU0sNEJBQTRCLENBQUM7QUFDeEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBWWpEOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFRckIsWUFDbUIsTUFBMEIsRUFDMUIsU0FBc0IsRUFDdEIsYUFBNkMsRUFDN0MsbUJBQXdDLEVBQ3hDLGtCQUFzQyxFQUN0QyxVQUFrQyxFQUNsQyxZQUFpRCxFQUNqRCxhQUE0QixFQUM1QixXQUF3QixFQUN4QixhQUE0QixFQUM1QixhQUEyQixFQUMzQixXQUF3QixFQUN4QixlQUFnQyxFQUNoQyxrQkFBc0MsRUFDdkQsVUFBc0MsRUFBRTtRQWR2QixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMxQixjQUFTLEdBQVQsU0FBUyxDQUFhO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFnQztRQUM3Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsZUFBVSxHQUFWLFVBQVUsQ0FBd0I7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQXFDO1FBQ2pELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBckJqRCxRQUFHLEdBQUcsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUc3QyxTQUFJLEdBQWlDLElBQUksR0FBRyxFQUFFLENBQUM7UUFxQnJELElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixpQkFBaUIsRUFBRSxJQUFLO1lBQ3hCLGNBQWMsRUFBRSxHQUFHO1lBQ25CLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUNwQixDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGlCQUFpQixDQUFDLGVBQWUsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUEyQjtRQUMzQyxJQUFJLFVBQVUsQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsbUNBQW1DLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQztRQUN6RCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxVQUFVLENBQUMsWUFBWSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkYsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILGdHQUFnRztZQUNoRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEMsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyw2REFBNkQsVUFBVSxDQUFDLFlBQVksRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzlHLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxXQUFtQjtRQUM5QyxJQUFJLENBQUM7WUFDSCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsWUFBWSxHQUFHLFdBQVcsRUFBRSxDQUFDO2dCQUMvQyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMvQyxDQUFDO2lCQUFNLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pGLE1BQU0sZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUMxRSxJQUFJLGVBQWUsS0FBSyxTQUFTLElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDMUUsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsbUNBQW1DLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0QsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsb0JBQW9CLENBQUMsV0FBbUI7UUFDNUMsSUFBSSxDQUFDO1lBQ0gsa0NBQWtDO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2RSxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLCtCQUErQixXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUMvRCxPQUFPO1lBQ1QsQ0FBQztZQUVELCtEQUErRDtZQUMvRCxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUUzRCwrQkFBK0I7WUFDL0IsTUFBTSxLQUFLLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDO2dCQUN4QyxHQUFHLFlBQVk7Z0JBQ2YsWUFBWSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUM7Z0JBQ2pDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFFO2dCQUN6QyxjQUFjLEVBQUUsWUFBWSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsNEJBQTRCO2FBQzdHLENBQUMsQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFbEQsNkJBQTZCO1lBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUNYLDJCQUEyQixXQUFXLGdCQUFnQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxNQUFNLEVBQUUsRUFDcEcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUNuQixDQUFDO1lBQ0YsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzNCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakMsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHFEQUFxRDtJQUM5QyxtQkFBbUIsQ0FBQyxLQUFzQjtRQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkUsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLHFCQUFxQixDQUFDLEtBQXNCO1FBQ2xELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsS0FBSyxDQUFDLFdBQTRCO1FBQzdDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzdELE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBNEI7UUFDbEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDN0QsS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLFdBQVcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1osT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ3hDLE9BQU8sY0FBYyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxjQUFjLENBQUM7SUFDakUsQ0FBQztJQUVPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFtQjtRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUUsQ0FBQztZQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsa0NBQWtDLENBQUMsQ0FBQztRQUNqSCxDQUFDO1FBRUQsK0JBQStCO1FBQy9CLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2RSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNuQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUMsTUFBTSxDQUFDO1FBRXRDLDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxrQ0FBa0MsV0FBVyxvQkFBb0IsU0FBUyxPQUFPLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDN0csTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbkQseUdBQXlHO1FBQ3pHLHNDQUFzQztRQUN0QyxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMzRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUzRCxrREFBa0Q7UUFDbEQsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFekcsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXBGLE1BQU0sT0FBTyxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ3pCLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzdELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQztRQUVGLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FDdEMsV0FBVyxFQUNYLE1BQU0sRUFDTixRQUFRLEVBQ1IsUUFBUSxFQUNSLFdBQVcsRUFDWCxzQkFBc0IsRUFDdEIsT0FBTyxDQUNSLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEMsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsc0NBQXNDO0lBQzVCLHVCQUF1QixDQUMvQixXQUFtQixFQUNuQixNQUFpQixFQUNqQixRQUFtQyxFQUNuQyxRQUFtQyxFQUNuQyxXQUF3QixFQUN4QixzQkFBOEMsRUFDOUMsT0FBNEI7UUFFNUIsT0FBTyxJQUFJLGVBQWUsQ0FDeEIsUUFBUSxFQUNSLFdBQVcsRUFDWCxNQUFNLEVBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLEVBQ3BELHNCQUFzQixFQUN0QixJQUFJLENBQUMsU0FBUyxFQUNkLElBQUksQ0FBQyxhQUFhLEVBQ2xCLElBQUksQ0FBQyxtQkFBbUIsRUFDeEIsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLE9BQU8sRUFDWixPQUFPLENBQ1IsQ0FBQztJQUNKLENBQUM7SUFFRCxzQ0FBc0M7SUFDNUIsS0FBSyxDQUFDLGVBQWU7UUFDN0IsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/quote-provider/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/quote-provider/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAG1E,qBAAa,iBAAkB,YAAW,aAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,MAAM;IAE3B,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;CA8BvG;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { jsonStringify } from '@aztec/foundation/json-rpc';
|
|
1
2
|
import { getTotalFees, getTxCount } from './utils.js';
|
|
2
3
|
export class HttpQuoteProvider {
|
|
3
4
|
constructor(url) {
|
|
@@ -13,7 +14,7 @@ export class HttpQuoteProvider {
|
|
|
13
14
|
};
|
|
14
15
|
const response = await fetch(this.url, {
|
|
15
16
|
method: 'POST',
|
|
16
|
-
body:
|
|
17
|
+
body: jsonStringify(payload),
|
|
17
18
|
headers: { 'content-type': 'application/json' },
|
|
18
19
|
});
|
|
19
20
|
if (!response.ok) {
|
|
@@ -21,7 +22,7 @@ export class HttpQuoteProvider {
|
|
|
21
22
|
}
|
|
22
23
|
const data = await response.json();
|
|
23
24
|
if (!data.basisPointFee || !data.bondAmount) {
|
|
24
|
-
throw new Error(`Missing required fields (basisPointFee | bondAmount) in response: ${
|
|
25
|
+
throw new Error(`Missing required fields (basisPointFee | bondAmount) in response: ${jsonStringify(data)}`);
|
|
25
26
|
}
|
|
26
27
|
const basisPointFee = Number(data.basisPointFee);
|
|
27
28
|
const bondAmount = BigInt(data.bondAmount);
|
|
@@ -29,4 +30,4 @@ export class HttpQuoteProvider {
|
|
|
29
30
|
return { basisPointFee, bondAmount, validUntilSlot };
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9xdW90ZS1wcm92aWRlci9odHRwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUczRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV0RCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQTZCLEdBQVc7UUFBWCxRQUFHLEdBQUgsR0FBRyxDQUFRO0lBQUcsQ0FBQztJQUVyQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQW1CLEVBQUUsS0FBZ0I7UUFDekQsTUFBTSxPQUFPLEdBQTRCO1lBQ3ZDLFdBQVc7WUFDWCxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07WUFDMUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUUsQ0FBQyxNQUFNO1lBQzdCLFNBQVMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3pDLE9BQU8sRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDO1NBQzNCLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3JDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUM7WUFDNUIsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFO1NBQ2hELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMscUVBQXFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUcsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFckYsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLENBQUM7SUFDdkQsQ0FBQztDQUNGIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/prover-node",
|
|
3
|
-
"version": "0.65.
|
|
3
|
+
"version": "0.65.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./dest/index.js"
|
|
@@ -52,21 +52,21 @@
|
|
|
52
52
|
]
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@aztec/archiver": "0.65.
|
|
56
|
-
"@aztec/bb-prover": "0.65.
|
|
57
|
-
"@aztec/circuit-types": "0.65.
|
|
58
|
-
"@aztec/circuits.js": "0.65.
|
|
59
|
-
"@aztec/ethereum": "0.65.
|
|
60
|
-
"@aztec/foundation": "0.65.
|
|
61
|
-
"@aztec/kv-store": "0.65.
|
|
62
|
-
"@aztec/l1-artifacts": "0.65.
|
|
63
|
-
"@aztec/p2p": "0.65.
|
|
64
|
-
"@aztec/prover-client": "0.65.
|
|
65
|
-
"@aztec/sequencer-client": "0.65.
|
|
66
|
-
"@aztec/simulator": "0.65.
|
|
67
|
-
"@aztec/telemetry-client": "0.65.
|
|
68
|
-
"@aztec/types": "0.65.
|
|
69
|
-
"@aztec/world-state": "0.65.
|
|
55
|
+
"@aztec/archiver": "0.65.2",
|
|
56
|
+
"@aztec/bb-prover": "0.65.2",
|
|
57
|
+
"@aztec/circuit-types": "0.65.2",
|
|
58
|
+
"@aztec/circuits.js": "0.65.2",
|
|
59
|
+
"@aztec/ethereum": "0.65.2",
|
|
60
|
+
"@aztec/foundation": "0.65.2",
|
|
61
|
+
"@aztec/kv-store": "0.65.2",
|
|
62
|
+
"@aztec/l1-artifacts": "0.65.2",
|
|
63
|
+
"@aztec/p2p": "0.65.2",
|
|
64
|
+
"@aztec/prover-client": "0.65.2",
|
|
65
|
+
"@aztec/sequencer-client": "0.65.2",
|
|
66
|
+
"@aztec/simulator": "0.65.2",
|
|
67
|
+
"@aztec/telemetry-client": "0.65.2",
|
|
68
|
+
"@aztec/types": "0.65.2",
|
|
69
|
+
"@aztec/world-state": "0.65.2",
|
|
70
70
|
"source-map-support": "^0.5.21",
|
|
71
71
|
"tslib": "^2.4.0",
|
|
72
72
|
"viem": "^2.7.15"
|
package/src/config.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { type ArchiverConfig, archiverConfigMappings, getArchiverConfigFromEnv } from '@aztec/archiver';
|
|
2
|
+
import { type ACVMConfig, type BBConfig } from '@aztec/bb-prover';
|
|
3
|
+
import {
|
|
4
|
+
type ProverAgentConfig,
|
|
5
|
+
type ProverBrokerConfig,
|
|
6
|
+
proverAgentConfigMappings,
|
|
7
|
+
proverBrokerConfigMappings,
|
|
8
|
+
} from '@aztec/circuit-types';
|
|
2
9
|
import {
|
|
3
10
|
type ConfigMappingsType,
|
|
4
11
|
bigintConfigHelper,
|
|
@@ -7,7 +14,12 @@ import {
|
|
|
7
14
|
} from '@aztec/foundation/config';
|
|
8
15
|
import { type DataStoreConfig, dataConfigMappings, getDataConfigFromEnv } from '@aztec/kv-store/config';
|
|
9
16
|
import { type P2PConfig, getP2PConfigFromEnv, p2pConfigMappings } from '@aztec/p2p';
|
|
10
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
type ProverClientConfig,
|
|
19
|
+
bbConfigMappings,
|
|
20
|
+
getProverEnvVars,
|
|
21
|
+
proverClientConfigMappings,
|
|
22
|
+
} from '@aztec/prover-client';
|
|
11
23
|
import {
|
|
12
24
|
type PublisherConfig,
|
|
13
25
|
type TxSenderConfig,
|
|
@@ -107,3 +119,16 @@ export function getProverNodeConfigFromEnv(): ProverNodeConfig {
|
|
|
107
119
|
...getConfigFromMappings(proverBondManagerConfigMappings),
|
|
108
120
|
};
|
|
109
121
|
}
|
|
122
|
+
|
|
123
|
+
export function getProverNodeBrokerConfigFromEnv(): ProverBrokerConfig {
|
|
124
|
+
return {
|
|
125
|
+
...getConfigFromMappings(proverBrokerConfigMappings),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export function getProverNodeAgentConfigFromEnv(): ProverAgentConfig & BBConfig & ACVMConfig {
|
|
130
|
+
return {
|
|
131
|
+
...getConfigFromMappings(proverAgentConfigMappings),
|
|
132
|
+
...getConfigFromMappings(bbConfigMappings),
|
|
133
|
+
};
|
|
134
|
+
}
|
package/src/factory.ts
CHANGED
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
import { type Archiver, createArchiver } from '@aztec/archiver';
|
|
2
|
-
import { type ProverCoordination } from '@aztec/circuit-types';
|
|
2
|
+
import { type ProverCoordination, type ProvingJobBroker } from '@aztec/circuit-types';
|
|
3
3
|
import { createEthereumChain } from '@aztec/ethereum';
|
|
4
4
|
import { Buffer32 } from '@aztec/foundation/buffer';
|
|
5
5
|
import { type DebugLogger, createDebugLogger } from '@aztec/foundation/log';
|
|
6
6
|
import { type DataStoreConfig } from '@aztec/kv-store/config';
|
|
7
7
|
import { RollupAbi } from '@aztec/l1-artifacts';
|
|
8
8
|
import { createProverClient } from '@aztec/prover-client';
|
|
9
|
+
import { createAndStartProvingBroker } from '@aztec/prover-client/broker';
|
|
9
10
|
import { L1Publisher } from '@aztec/sequencer-client';
|
|
10
11
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
11
12
|
import { NoopTelemetryClient } from '@aztec/telemetry-client/noop';
|
|
12
13
|
import { createWorldStateSynchronizer } from '@aztec/world-state';
|
|
13
14
|
|
|
15
|
+
import { join } from 'path';
|
|
14
16
|
import { createPublicClient, getAddress, getContract, http } from 'viem';
|
|
15
17
|
|
|
16
18
|
import { createBondManager } from './bond/factory.js';
|
|
17
19
|
import { type ProverNodeConfig, type QuoteProviderConfig } from './config.js';
|
|
18
20
|
import { ClaimsMonitor } from './monitors/claims-monitor.js';
|
|
19
21
|
import { EpochMonitor } from './monitors/epoch-monitor.js';
|
|
22
|
+
import { ProverCacheManager } from './prover-cache/cache_manager.js';
|
|
20
23
|
import { createProverCoordination } from './prover-coordination/factory.js';
|
|
21
24
|
import { ProverNode } from './prover-node.js';
|
|
22
25
|
import { HttpQuoteProvider } from './quote-provider/http.js';
|
|
@@ -32,6 +35,7 @@ export async function createProverNode(
|
|
|
32
35
|
aztecNodeTxProvider?: ProverCoordination;
|
|
33
36
|
archiver?: Archiver;
|
|
34
37
|
publisher?: L1Publisher;
|
|
38
|
+
broker?: ProvingJobBroker;
|
|
35
39
|
} = {},
|
|
36
40
|
) {
|
|
37
41
|
const telemetry = deps.telemetry ?? new NoopTelemetryClient();
|
|
@@ -43,7 +47,8 @@ export async function createProverNode(
|
|
|
43
47
|
const worldStateSynchronizer = await createWorldStateSynchronizer(worldStateConfig, archiver, telemetry);
|
|
44
48
|
await worldStateSynchronizer.start();
|
|
45
49
|
|
|
46
|
-
const
|
|
50
|
+
const broker = deps.broker ?? (await createAndStartProvingBroker(config));
|
|
51
|
+
const prover = await createProverClient(config, broker, telemetry);
|
|
47
52
|
|
|
48
53
|
// REFACTOR: Move publisher out of sequencer package and into an L1-related package
|
|
49
54
|
const publisher = deps.publisher ?? new L1Publisher(config, telemetry);
|
|
@@ -72,8 +77,11 @@ export async function createProverNode(
|
|
|
72
77
|
const walletClient = publisher.getClient();
|
|
73
78
|
const bondManager = await createBondManager(rollupContract, walletClient, config);
|
|
74
79
|
|
|
80
|
+
const cacheDir = config.cacheDir ? join(config.cacheDir, `prover_${config.proverId}`) : undefined;
|
|
81
|
+
const cacheManager = new ProverCacheManager(cacheDir);
|
|
82
|
+
|
|
75
83
|
return new ProverNode(
|
|
76
|
-
prover
|
|
84
|
+
prover,
|
|
77
85
|
publisher,
|
|
78
86
|
archiver,
|
|
79
87
|
archiver,
|
|
@@ -86,6 +94,7 @@ export async function createProverNode(
|
|
|
86
94
|
epochMonitor,
|
|
87
95
|
bondManager,
|
|
88
96
|
telemetry,
|
|
97
|
+
cacheManager,
|
|
89
98
|
proverNodeConfig,
|
|
90
99
|
);
|
|
91
100
|
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { type ProverCache } from '@aztec/circuit-types';
|
|
2
|
+
import { createDebugLogger } from '@aztec/foundation/log';
|
|
3
|
+
import { AztecLmdbStore } from '@aztec/kv-store/lmdb';
|
|
4
|
+
import { InMemoryProverCache } from '@aztec/prover-client';
|
|
5
|
+
|
|
6
|
+
import { type Dirent } from 'fs';
|
|
7
|
+
import { mkdir, readFile, readdir, rm, writeFile } from 'fs/promises';
|
|
8
|
+
import { join } from 'path';
|
|
9
|
+
|
|
10
|
+
import { KVProverCache } from './kv_cache.js';
|
|
11
|
+
|
|
12
|
+
const EPOCH_DIR_PREFIX = 'epoch';
|
|
13
|
+
const EPOCH_DIR_SEPARATOR = '_';
|
|
14
|
+
const EPOCH_HASH_FILENAME = 'epoch_hash.txt';
|
|
15
|
+
|
|
16
|
+
export class ProverCacheManager {
|
|
17
|
+
constructor(private cacheDir?: string, private log = createDebugLogger('aztec:prover-node:cache-manager')) {}
|
|
18
|
+
|
|
19
|
+
public async openCache(epochNumber: bigint, epochHash: Buffer): Promise<ProverCache> {
|
|
20
|
+
if (!this.cacheDir) {
|
|
21
|
+
return new InMemoryProverCache();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const epochDir = EPOCH_DIR_PREFIX + EPOCH_DIR_SEPARATOR + epochNumber;
|
|
25
|
+
const dataDir = join(this.cacheDir, epochDir);
|
|
26
|
+
|
|
27
|
+
const storedEpochHash = await readFile(join(dataDir, EPOCH_HASH_FILENAME), 'hex').catch(() => Buffer.alloc(0));
|
|
28
|
+
if (storedEpochHash.toString() !== epochHash.toString()) {
|
|
29
|
+
await rm(dataDir, { recursive: true, force: true });
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
await mkdir(dataDir, { recursive: true });
|
|
33
|
+
await writeFile(join(dataDir, EPOCH_HASH_FILENAME), epochHash.toString('hex'));
|
|
34
|
+
|
|
35
|
+
const store = AztecLmdbStore.open(dataDir);
|
|
36
|
+
this.log.debug(`Created new database for epoch ${epochNumber} at ${dataDir}`);
|
|
37
|
+
const cleanup = () => store.close();
|
|
38
|
+
return new KVProverCache(store, cleanup);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Removes all caches for epochs older than the given epoch (including)
|
|
43
|
+
* @param upToAndIncludingEpoch - The epoch number up to which to remove caches
|
|
44
|
+
*/
|
|
45
|
+
public async removeStaleCaches(upToAndIncludingEpoch: bigint): Promise<void> {
|
|
46
|
+
if (!this.cacheDir) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const entries: Dirent[] = await readdir(this.cacheDir, { withFileTypes: true }).catch(() => []);
|
|
51
|
+
|
|
52
|
+
for (const item of entries) {
|
|
53
|
+
if (!item.isDirectory()) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const [prefix, epochNumber] = item.name.split(EPOCH_DIR_SEPARATOR);
|
|
58
|
+
if (prefix !== EPOCH_DIR_PREFIX) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const epochNumberInt = BigInt(epochNumber);
|
|
63
|
+
if (epochNumberInt <= upToAndIncludingEpoch) {
|
|
64
|
+
this.log.info(`Removing old epoch database for epoch ${epochNumberInt} at ${join(this.cacheDir, item.name)}`);
|
|
65
|
+
await rm(join(this.cacheDir, item.name), { recursive: true });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ProverCache, ProvingJobStatus } from '@aztec/circuit-types';
|
|
2
|
+
import type { AztecKVStore, AztecMap } from '@aztec/kv-store';
|
|
3
|
+
|
|
4
|
+
export class KVProverCache implements ProverCache {
|
|
5
|
+
private proofs: AztecMap<string, string>;
|
|
6
|
+
|
|
7
|
+
constructor(store: AztecKVStore, private cleanup?: () => Promise<void>) {
|
|
8
|
+
this.proofs = store.openMap('prover_node_proof_status');
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
getProvingJobStatus(jobId: string): Promise<ProvingJobStatus> {
|
|
12
|
+
const item = this.proofs.get(jobId);
|
|
13
|
+
if (!item) {
|
|
14
|
+
return Promise.resolve({ status: 'not-found' });
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return Promise.resolve(JSON.parse(item));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
setProvingJobStatus(jobId: string, status: ProvingJobStatus): Promise<void> {
|
|
21
|
+
return this.proofs.set(jobId, JSON.stringify(status));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async close(): Promise<void> {
|
|
25
|
+
await this.cleanup?.();
|
|
26
|
+
}
|
|
27
|
+
}
|
package/src/prover-node.ts
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
type L2Block,
|
|
8
8
|
type L2BlockSource,
|
|
9
9
|
type MerkleTreeWriteOperations,
|
|
10
|
+
type ProverCache,
|
|
10
11
|
type ProverCoordination,
|
|
11
12
|
type ProverNodeApi,
|
|
12
13
|
type Service,
|
|
@@ -15,6 +16,7 @@ import {
|
|
|
15
16
|
} from '@aztec/circuit-types';
|
|
16
17
|
import { type ContractDataSource } from '@aztec/circuits.js';
|
|
17
18
|
import { compact } from '@aztec/foundation/collection';
|
|
19
|
+
import { sha256 } from '@aztec/foundation/crypto';
|
|
18
20
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
19
21
|
import { type Maybe } from '@aztec/foundation/types';
|
|
20
22
|
import { type L1Publisher } from '@aztec/sequencer-client';
|
|
@@ -26,6 +28,7 @@ import { EpochProvingJob, type EpochProvingJobState } from './job/epoch-proving-
|
|
|
26
28
|
import { ProverNodeMetrics } from './metrics.js';
|
|
27
29
|
import { type ClaimsMonitor, type ClaimsMonitorHandler } from './monitors/claims-monitor.js';
|
|
28
30
|
import { type EpochMonitor, type EpochMonitorHandler } from './monitors/epoch-monitor.js';
|
|
31
|
+
import { type ProverCacheManager } from './prover-cache/cache_manager.js';
|
|
29
32
|
import { type QuoteProvider } from './quote-provider/index.js';
|
|
30
33
|
import { type QuoteSigner } from './quote-signer.js';
|
|
31
34
|
|
|
@@ -62,6 +65,7 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
|
|
|
62
65
|
private readonly epochsMonitor: EpochMonitor,
|
|
63
66
|
private readonly bondManager: BondManager,
|
|
64
67
|
private readonly telemetryClient: TelemetryClient,
|
|
68
|
+
private readonly proverCacheManager: ProverCacheManager,
|
|
65
69
|
options: Partial<ProverNodeOptions> = {},
|
|
66
70
|
) {
|
|
67
71
|
this.options = {
|
|
@@ -250,13 +254,26 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
|
|
|
250
254
|
// Create a processor using the forked world state
|
|
251
255
|
const publicProcessorFactory = new PublicProcessorFactory(this.contractDataSource, this.telemetryClient);
|
|
252
256
|
|
|
257
|
+
const epochHash = sha256(Buffer.concat(blocks.map(block => block.hash().toBuffer())));
|
|
258
|
+
const proverCache = await this.proverCacheManager.openCache(epochNumber, epochHash);
|
|
259
|
+
|
|
253
260
|
const cleanUp = async () => {
|
|
254
261
|
await publicDb.close();
|
|
255
262
|
await proverDb.close();
|
|
263
|
+
await proverCache.close();
|
|
264
|
+
await this.proverCacheManager.removeStaleCaches(epochNumber);
|
|
256
265
|
this.jobs.delete(job.getId());
|
|
257
266
|
};
|
|
258
267
|
|
|
259
|
-
const job = this.doCreateEpochProvingJob(
|
|
268
|
+
const job = this.doCreateEpochProvingJob(
|
|
269
|
+
epochNumber,
|
|
270
|
+
blocks,
|
|
271
|
+
publicDb,
|
|
272
|
+
proverDb,
|
|
273
|
+
proverCache,
|
|
274
|
+
publicProcessorFactory,
|
|
275
|
+
cleanUp,
|
|
276
|
+
);
|
|
260
277
|
this.jobs.set(job.getId(), job);
|
|
261
278
|
return job;
|
|
262
279
|
}
|
|
@@ -267,6 +284,7 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
|
|
|
267
284
|
blocks: L2Block[],
|
|
268
285
|
publicDb: MerkleTreeWriteOperations,
|
|
269
286
|
proverDb: MerkleTreeWriteOperations,
|
|
287
|
+
proverCache: ProverCache,
|
|
270
288
|
publicProcessorFactory: PublicProcessorFactory,
|
|
271
289
|
cleanUp: () => Promise<void>,
|
|
272
290
|
) {
|
|
@@ -274,7 +292,7 @@ export class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, Pr
|
|
|
274
292
|
publicDb,
|
|
275
293
|
epochNumber,
|
|
276
294
|
blocks,
|
|
277
|
-
this.prover.createEpochProver(proverDb),
|
|
295
|
+
this.prover.createEpochProver(proverDb, proverCache),
|
|
278
296
|
publicProcessorFactory,
|
|
279
297
|
this.publisher,
|
|
280
298
|
this.l2BlockSource,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type L2Block } from '@aztec/circuit-types';
|
|
2
|
+
import { jsonStringify } from '@aztec/foundation/json-rpc';
|
|
2
3
|
|
|
3
4
|
import { type QuoteProvider, type QuoteProviderResult } from './index.js';
|
|
4
5
|
import { getTotalFees, getTxCount } from './utils.js';
|
|
@@ -17,7 +18,7 @@ export class HttpQuoteProvider implements QuoteProvider {
|
|
|
17
18
|
|
|
18
19
|
const response = await fetch(this.url, {
|
|
19
20
|
method: 'POST',
|
|
20
|
-
body:
|
|
21
|
+
body: jsonStringify(payload),
|
|
21
22
|
headers: { 'content-type': 'application/json' },
|
|
22
23
|
});
|
|
23
24
|
|
|
@@ -27,7 +28,7 @@ export class HttpQuoteProvider implements QuoteProvider {
|
|
|
27
28
|
|
|
28
29
|
const data = await response.json();
|
|
29
30
|
if (!data.basisPointFee || !data.bondAmount) {
|
|
30
|
-
throw new Error(`Missing required fields (basisPointFee | bondAmount) in response: ${
|
|
31
|
+
throw new Error(`Missing required fields (basisPointFee | bondAmount) in response: ${jsonStringify(data)}`);
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
const basisPointFee = Number(data.basisPointFee);
|