@aztec/prover-node 0.0.1-commit.3100065 → 0.0.1-commit.330febf
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +95 -34
- package/dest/actions/rerun-epoch-proving-job.d.ts +11 -2
- package/dest/actions/rerun-epoch-proving-job.d.ts.map +1 -1
- package/dest/actions/rerun-epoch-proving-job.js +195 -55
- package/dest/checkpoint-store.d.ts +9 -2
- package/dest/checkpoint-store.d.ts.map +1 -1
- package/dest/checkpoint-store.js +9 -0
- package/dest/config.d.ts +3 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/config.js +7 -0
- package/dest/factory.d.ts +4 -1
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +2 -1
- package/dest/job/checkpoint-prover.d.ts +47 -6
- package/dest/job/checkpoint-prover.d.ts.map +1 -1
- package/dest/job/checkpoint-prover.js +94 -19
- package/dest/job/epoch-session.d.ts +17 -3
- package/dest/job/epoch-session.d.ts.map +1 -1
- package/dest/job/epoch-session.js +28 -4
- package/dest/job/top-tree-job.d.ts +2 -2
- package/dest/job/top-tree-job.d.ts.map +1 -1
- package/dest/job/top-tree-job.js +4 -4
- package/dest/prover-node-publisher.d.ts +4 -1
- package/dest/prover-node-publisher.d.ts.map +1 -1
- package/dest/prover-node-publisher.js +5 -3
- package/dest/prover-node.d.ts +37 -8
- package/dest/prover-node.d.ts.map +1 -1
- package/dest/prover-node.js +82 -19
- package/dest/prover-publisher-factory.d.ts +3 -1
- package/dest/prover-publisher-factory.d.ts.map +1 -1
- package/dest/prover-publisher-factory.js +1 -0
- package/dest/session-manager.d.ts +16 -16
- package/dest/session-manager.d.ts.map +1 -1
- package/dest/session-manager.js +75 -65
- package/package.json +24 -23
- package/src/actions/rerun-epoch-proving-job.ts +139 -66
- package/src/checkpoint-store.ts +20 -2
- package/src/config.ts +10 -0
- package/src/factory.ts +5 -0
- package/src/job/checkpoint-prover.ts +113 -17
- package/src/job/epoch-session.ts +30 -4
- package/src/job/top-tree-job.ts +4 -4
- package/src/prover-node-publisher.ts +7 -3
- package/src/prover-node.ts +97 -20
- package/src/prover-publisher-factory.ts +3 -0
- package/src/session-manager.ts +78 -69
package/dest/config.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ACVMConfig, BBConfig } from '@aztec/bb-prover/config';
|
|
2
2
|
import { type ConfigMappingsType } from '@aztec/foundation/config';
|
|
3
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
3
4
|
import { type KeyStoreConfig } from '@aztec/node-keystore/config';
|
|
4
5
|
import type { KeyStore } from '@aztec/node-keystore/types';
|
|
5
6
|
import { type SharedNodeConfig } from '@aztec/node-lib/config';
|
|
@@ -19,6 +20,7 @@ export type SpecificProverNodeConfig = {
|
|
|
19
20
|
txGatheringIntervalMs: number;
|
|
20
21
|
txGatheringBatchSize: number;
|
|
21
22
|
txGatheringMaxParallelRequestsPerNode: number;
|
|
23
|
+
proofSubmissionTargetAddress?: EthAddress;
|
|
22
24
|
};
|
|
23
25
|
export declare const specificProverNodeConfigMappings: ConfigMappingsType<SpecificProverNodeConfig>;
|
|
24
26
|
export declare const proverNodeConfigMappings: ConfigMappingsType<ProverNodeConfig>;
|
|
@@ -26,4 +28,4 @@ export declare function getProverNodeConfigFromEnv(): ProverNodeConfig;
|
|
|
26
28
|
export declare function getProverNodeBrokerConfigFromEnv(): ProverBrokerConfig;
|
|
27
29
|
export declare function getProverNodeAgentConfigFromEnv(): ProverAgentConfig & BBConfig & ACVMConfig;
|
|
28
30
|
export declare function createKeyStoreForProver(config: ProverNodeConfig): KeyStore | undefined;
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRSxPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFLeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUEwQixNQUFNLDZCQUE2QixDQUFDO0FBRTFGLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUE0QixNQUFNLHdCQUF3QixDQUFDO0FBQ3pGLE9BQU8sRUFDTCxLQUFLLGlCQUFpQixFQUN0QixLQUFLLGtCQUFrQixFQUd4QixNQUFNLG9DQUFvQyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLHNCQUFzQixFQUFnRCxNQUFNLDZCQUE2QixDQUFDO0FBQ3hILE9BQU8sRUFDTCxLQUFLLHFCQUFxQixFQUMxQixLQUFLLG9CQUFvQixFQUcxQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx3QkFBd0IsQ0FBQztBQUVsRixNQUFNLE1BQU0sZ0JBQWdCLEdBQUcsc0JBQXNCLEdBQ25ELHFCQUFxQixHQUNyQixvQkFBb0IsR0FDcEIsZUFBZSxHQUNmLGNBQWMsR0FDZCx3QkFBd0IsR0FDeEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBRTFDLE1BQU0sTUFBTSx3QkFBd0IsR0FBRztJQUNyQyx3QkFBd0IsRUFBRSxNQUFNLENBQUM7SUFDakMsMkJBQTJCLEVBQUUsTUFBTSxDQUFDO0lBQ3BDLG1DQUFtQyxFQUFFLE1BQU0sQ0FBQztJQUM1QywwQkFBMEIsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQy9DLDZCQUE2QixFQUFFLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDbEQsNkJBQTZCLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDeEMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDO0lBQzdCLHFCQUFxQixFQUFFLE1BQU0sQ0FBQztJQUM5QixvQkFBb0IsRUFBRSxNQUFNLENBQUM7SUFDN0IscUNBQXFDLEVBQUUsTUFBTSxDQUFDO0lBQzlDLDRCQUE0QixDQUFDLEVBQUUsVUFBVSxDQUFDO0NBQzNDLENBQUM7QUFFRixlQUFPLE1BQU0sZ0NBQWdDLEVBQUUsa0JBQWtCLENBQUMsd0JBQXdCLENBMkR6RixDQUFDO0FBRUYsZUFBTyxNQUFNLHdCQUF3QixFQUFFLGtCQUFrQixDQUFDLGdCQUFnQixDQVF6RSxDQUFDO0FBRUYsd0JBQWdCLDBCQUEwQixJQUFJLGdCQUFnQixDQUU3RDtBQUVELHdCQUFnQixnQ0FBZ0MsSUFBSSxrQkFBa0IsQ0FJckU7QUFFRCx3QkFBZ0IsK0JBQStCLElBQUksaUJBQWlCLEdBQUcsUUFBUSxHQUFHLFVBQVUsQ0FLM0Y7QUEwREQsd0JBQWdCLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsR0FBRyxRQUFRLEdBQUcsU0FBUyxDQVN0RiJ9
|
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,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAClC,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;AACxC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAElF,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;
|
|
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,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,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;AACxC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAElF,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;IAC9C,4BAA4B,CAAC,EAAE,UAAU,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,kBAAkB,CAAC,wBAAwB,CA2DzF,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,4 +1,5 @@
|
|
|
1
1
|
import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, pickConfigMappings } from '@aztec/foundation/config';
|
|
2
|
+
import { EthAddress } from '@aztec/foundation/eth-address';
|
|
2
3
|
import { keyStoreConfigMappings } from '@aztec/node-keystore/config';
|
|
3
4
|
import { ethPrivateKeySchema } from '@aztec/node-keystore/schemas';
|
|
4
5
|
import { sharedNodeConfigMappings } from '@aztec/node-lib/config';
|
|
@@ -55,6 +56,12 @@ export const specificProverNodeConfigMappings = {
|
|
|
55
56
|
env: 'PROVER_NODE_DISABLE_PROOF_PUBLISH',
|
|
56
57
|
description: 'Whether the prover node skips publishing proofs to L1',
|
|
57
58
|
...booleanConfigHelper(false)
|
|
59
|
+
},
|
|
60
|
+
proofSubmissionTargetAddress: {
|
|
61
|
+
env: 'PROVER_NODE_PROOF_SUBMISSION_TARGET_ADDRESS',
|
|
62
|
+
description: 'Optional L1 address the submitEpochRootProof tx is sent to. Must expose the identical submitEpochRootProof ABI ' + 'and forward to the rollup. Defaults to the rollup address.',
|
|
63
|
+
parseEnv: (val)=>EthAddress.fromString(val),
|
|
64
|
+
defaultValue: undefined
|
|
58
65
|
}
|
|
59
66
|
};
|
|
60
67
|
export const proverNodeConfigMappings = {
|
package/dest/factory.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { DateProvider } from '@aztec/foundation/timer';
|
|
|
7
7
|
import { KeystoreManager } from '@aztec/node-keystore';
|
|
8
8
|
import { type ProverClientUserConfig } from '@aztec/prover-client';
|
|
9
9
|
import { type ProverPublisherConfig, type ProverTxSenderConfig } from '@aztec/sequencer-client';
|
|
10
|
+
import type { AvmSimulator } from '@aztec/simulator/server';
|
|
10
11
|
import type { ITxProvider, ProverConfig, ProvingJobBroker, Service, WorldStateSynchronizer } from '@aztec/stdlib/interfaces/server';
|
|
11
12
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
12
13
|
import type { SpecificProverNodeConfig } from './config.js';
|
|
@@ -27,7 +28,9 @@ export type ProverNodeDeps = {
|
|
|
27
28
|
epochCache: EpochCacheInterface;
|
|
28
29
|
blobClient: BlobClientInterface;
|
|
29
30
|
keyStoreManager?: KeystoreManager;
|
|
31
|
+
/** AVM execution backend (simulator pool + CDB server) for public simulation. */
|
|
32
|
+
avmSimulator: AvmSimulator;
|
|
30
33
|
};
|
|
31
34
|
/** Creates a new prover node subsystem given a config and dependencies */
|
|
32
35
|
export declare function createProverNode(userConfig: SpecificProverNodeConfig & ProverConfig & ProverClientUserConfig & ProverPublisherConfig & ProverTxSenderConfig, deps: ProverNodeDeps): Promise<ProverNode>;
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRSxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxPQUFPLEVBQTJCLEtBQUssc0JBQXNCLEVBQXNCLE1BQU0sc0JBQXNCLENBQUM7QUFFaEgsT0FBTyxFQUNMLEtBQUsscUJBQXFCLEVBQzFCLEtBQUssb0JBQW9CLEVBRTFCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLHNCQUFzQixFQUN2QixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUk5RixPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdkUsTUFBTSxNQUFNLGNBQWMsR0FBRztJQUMzQixTQUFTLENBQUMsRUFBRSxlQUFlLENBQUM7SUFDNUIsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2IsUUFBUSxFQUFFLFFBQVEsQ0FBQztJQUNuQixnQkFBZ0IsQ0FBQyxFQUFFLHNCQUFzQixDQUFDO0lBQzFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixDQUFDO0lBQzFCLFNBQVMsQ0FBQyxFQUFFLFNBQVMsQ0FBQztJQUN0QixZQUFZLENBQUMsRUFBRSxZQUFZLENBQUM7SUFDNUIsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUM7SUFDL0MsU0FBUyxFQUFFO1FBQUUsYUFBYSxJQUFJLFdBQVcsQ0FBQTtLQUFFLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELFVBQVUsRUFBRSxtQkFBbUIsQ0FBQztJQUNoQyxVQUFVLEVBQUUsbUJBQW1CLENBQUM7SUFDaEMsZUFBZSxDQUFDLEVBQUUsZUFBZSxDQUFDO0lBQ2xDLGlGQUFpRjtJQUNqRixZQUFZLEVBQUUsWUFBWSxDQUFDO0NBQzVCLENBQUM7QUFFRiwwRUFBMEU7QUFDMUUsd0JBQXNCLGdCQUFnQixDQUNwQyxVQUFVLEVBQUUsd0JBQXdCLEdBQ2xDLFlBQVksR0FDWixzQkFBc0IsR0FDdEIscUJBQXFCLEdBQ3JCLG9CQUFvQixFQUN0QixJQUFJLEVBQUUsY0FBYyx1QkFrSXJCIn0=
|
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,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAA2B,KAAK,sBAAsB,EAAsB,MAAM,sBAAsB,CAAC;AAEhH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAE1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAa,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAI9F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,SAAS,EAAE;QAAE,aAAa,IAAI,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,UAAU,EAAE,mBAAmB,CAAC;IAChC,UAAU,EAAE,mBAAmB,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAA2B,KAAK,sBAAsB,EAAsB,MAAM,sBAAsB,CAAC;AAEhH,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAE1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAa,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAI9F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,SAAS,EAAE;QAAE,aAAa,IAAI,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,UAAU,EAAE,mBAAmB,CAAC;IAChC,UAAU,EAAE,mBAAmB,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,iFAAiF;IACjF,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,0EAA0E;AAC1E,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,wBAAwB,GAClC,YAAY,GACZ,sBAAsB,GACtB,qBAAqB,GACrB,oBAAoB,EACtB,IAAI,EAAE,cAAc,uBAkIrB"}
|
package/dest/factory.js
CHANGED
|
@@ -88,6 +88,7 @@ import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
|
88
88
|
}
|
|
89
89
|
const publisherFactory = deps.publisherFactory ?? new ProverPublisherFactory(config, {
|
|
90
90
|
rollupContract,
|
|
91
|
+
proofSubmissionTarget: config.proofSubmissionTargetAddress,
|
|
91
92
|
publisherManager: new PublisherManager(l1TxUtils, getPublisherConfigFromProverConfig(config), {
|
|
92
93
|
bindings: log.getBindings(),
|
|
93
94
|
funder: funderL1TxUtils
|
|
@@ -100,5 +101,5 @@ import { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
|
100
101
|
const l1Metrics = new L1Metrics(telemetry.getMeter('ProverNodeL1Metrics'), publicClient, l1TxUtils.map((utils)=>utils.getSenderAddress()));
|
|
101
102
|
// Extract the shared delayer from the first L1TxUtils instance (all instances share the same delayer)
|
|
102
103
|
const delayer = l1TxUtils[0]?.delayer;
|
|
103
|
-
return new ProverNode(prover, publisherFactory, archiver, archiver, archiver, worldStateSynchronizer, p2pClient, rollupContract, l1Metrics, proverNodeConfig, telemetry, delayer, dateProvider);
|
|
104
|
+
return new ProverNode(prover, publisherFactory, archiver, archiver, archiver, worldStateSynchronizer, p2pClient, rollupContract, l1Metrics, deps.avmSimulator, proverNodeConfig, telemetry, delayer, dateProvider);
|
|
104
105
|
}
|
|
@@ -29,8 +29,23 @@ export type CheckpointProverDeps = {
|
|
|
29
29
|
txGatheringTimeoutMs: number;
|
|
30
30
|
/** Public processor deadline. */
|
|
31
31
|
deadline: Date | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Fired once when the prover's block proofs reject for a genuine (non-cancel) reason — a sub-tree
|
|
34
|
+
* fault or a prune-induced fork fault. Useful for performing post mortem on failures.
|
|
35
|
+
*/
|
|
36
|
+
onFailed?: (prover: CheckpointProver) => void;
|
|
37
|
+
/**
|
|
38
|
+
* Test-only hook: if set, invoked at the start of checkpoint execution instead of proving. Lets e2e
|
|
39
|
+
* tests force a sub-tree failure (it should throw) to exercise the checkpoint failure/upload path.
|
|
40
|
+
*/
|
|
41
|
+
checkpointProveOverride?: () => Promise<never>;
|
|
32
42
|
log: Logger;
|
|
33
43
|
};
|
|
44
|
+
/** Test-only hooks the store injects into every `CheckpointProver` it constructs. */
|
|
45
|
+
export type CheckpointProverTestHooks = {
|
|
46
|
+
/** If set, invoked at the start of checkpoint execution instead of proving; should throw to fail. */
|
|
47
|
+
checkpointProveOverride?: () => Promise<never>;
|
|
48
|
+
};
|
|
34
49
|
/** Inputs that fully describe a checkpoint at register time. */
|
|
35
50
|
export type CheckpointProverArgs = {
|
|
36
51
|
checkpoint: Checkpoint;
|
|
@@ -72,18 +87,22 @@ export declare class CheckpointProver {
|
|
|
72
87
|
readonly previousBlockHeader: BlockHeader;
|
|
73
88
|
readonly l1ToL2Messages: Fr[];
|
|
74
89
|
readonly previousArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>;
|
|
75
|
-
/** Per-prover tx map — populated by the internal gather. Empty until then. */
|
|
76
|
-
readonly txs: Map<string, Tx>;
|
|
77
90
|
/** Resolved by the sub-tree on success, rejected on cancel/failure. */
|
|
78
91
|
private readonly blockProofs;
|
|
92
|
+
/** Block-level proving was fully *enqueued* (a progress marker; the sub-tree may still be proving). */
|
|
93
|
+
private completed;
|
|
94
|
+
/** Block proofs rejected for a genuine (non-cancel) reason — a sub-tree or prune-induced fork fault. */
|
|
95
|
+
private failed;
|
|
96
|
+
/** The prover was torn down (prune / reap / shutdown). */
|
|
79
97
|
private cancelled;
|
|
80
98
|
private subTree?;
|
|
81
|
-
private completed;
|
|
82
99
|
private readonly abortController;
|
|
83
100
|
/** Tracks the eager gather+execute task so `cancel()` and `whenDone()` can await its unwind. */
|
|
84
101
|
private readonly runPromise;
|
|
85
102
|
/** Tracks the cancel-driven teardown so `whenDone()` can await it. */
|
|
86
103
|
private cancelPromise?;
|
|
104
|
+
/** Tracks the success-driven sub-tree teardown (once block proofs are captured) so `whenDone()` can await it. */
|
|
105
|
+
private teardownPromise?;
|
|
87
106
|
constructor(args: CheckpointProverArgs, deps: CheckpointProverDeps);
|
|
88
107
|
/**
|
|
89
108
|
* Stable content-addressed identifier: `${checkpoint number}:${slot}:${archive root}`.
|
|
@@ -92,8 +111,13 @@ export declare class CheckpointProver {
|
|
|
92
111
|
*/
|
|
93
112
|
static idFor(checkpoint: Checkpoint): string;
|
|
94
113
|
isCancelled(): boolean;
|
|
95
|
-
/**
|
|
96
|
-
|
|
114
|
+
/**
|
|
115
|
+
* True once this prover's block proofs have rejected for a genuine (non-cancel) reason — a sub-tree
|
|
116
|
+
* proving fault or a prune-induced world-state fork fault. A failed prover cannot produce its block
|
|
117
|
+
* proofs, so the reconciler must not build (or rebuild) an EpochSession over it; it is cleared only by
|
|
118
|
+
* a prune/re-add replacing it with a fresh prover, or by expiry reaping it.
|
|
119
|
+
*/
|
|
120
|
+
isFailed(): boolean;
|
|
97
121
|
/** AbortSignal that fires on cancel — for callers that want to wire their own tasks. */
|
|
98
122
|
getAbortSignal(): AbortSignal;
|
|
99
123
|
/** Promise that resolves with the block-rollup proofs for this checkpoint (or rejects on cancel/failure). */
|
|
@@ -101,7 +125,24 @@ export declare class CheckpointProver {
|
|
|
101
125
|
/** Resolves when all in-flight work for this prover has fully unwound. */
|
|
102
126
|
whenDone(): Promise<void>;
|
|
103
127
|
private gatherAndExecute;
|
|
128
|
+
/**
|
|
129
|
+
* Rejects the block-proof promise and, unless this is a cancellation, records the prover as failed so
|
|
130
|
+
* the reconciler won't build an EpochSession over it. First rejection wins, so a later duplicate reject
|
|
131
|
+
* (e.g. the executeCheckpoint `finally`) is a harmless no-op.
|
|
132
|
+
*/
|
|
133
|
+
private failBlockProofs;
|
|
134
|
+
private fetchTxs;
|
|
104
135
|
private gatherTxs;
|
|
136
|
+
/**
|
|
137
|
+
* Re-fetches this checkpoint's txs from the tx pool for a post-mortem failure upload.
|
|
138
|
+
*
|
|
139
|
+
* The prover does not cache txs on the heap — they are consumed during proving and dropped — so the
|
|
140
|
+
* durable pool (which keeps a mined tx until L1 finality, with A-1274's retention margin covering a
|
|
141
|
+
* lagging prover) is the source of truth, read back by hash here. Best-effort: any tx the pool can
|
|
142
|
+
* no longer supply is logged and omitted rather than failing the upload, since a partial post-mortem
|
|
143
|
+
* snapshot is still useful for diagnosis.
|
|
144
|
+
*/
|
|
145
|
+
getTxsForUpload(): Promise<Map<string, Tx>>;
|
|
105
146
|
private executeCheckpoint;
|
|
106
147
|
/**
|
|
107
148
|
* Mark cancelled. Idempotent. Aborts in-flight work, rejects the block-proof promise,
|
|
@@ -121,4 +162,4 @@ export declare class CheckpointProver {
|
|
|
121
162
|
private processTxs;
|
|
122
163
|
private createFork;
|
|
123
164
|
}
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC1wcm92ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qb2IvY2hlY2twb2ludC1wcm92ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUF1QyxNQUFNLGtCQUFrQixDQUFDO0FBQzVGLE9BQU8sRUFBZSxLQUFLLFdBQVcsRUFBRSxLQUFLLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRCxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxZQUFZLEVBQVMsTUFBTSx5QkFBeUIsQ0FBQztBQUduRSxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sS0FBSyxFQUFpQyxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEgsT0FBTyxLQUFLLEVBQW1CLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkYsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQVcsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUc3RixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQWUsRUFBRSxFQUFVLE1BQU0sa0JBQWtCLENBQUM7QUFFN0UsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUQsK0RBQStEO0FBQy9ELE1BQU0sTUFBTSxvQkFBb0IsR0FBRztJQUNqQyxhQUFhLEVBQUUsa0JBQWtCLENBQUM7SUFDbEMsMEVBQTBFO0lBQzFFLFVBQVUsRUFBRSxVQUFVLENBQUM7SUFDdkIsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUM7SUFDL0MsVUFBVSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRCxVQUFVLEVBQUUsV0FBVyxDQUFDO0lBQ3hCLDZGQUEyRjtJQUMzRixZQUFZLEVBQUUsWUFBWSxDQUFDO0lBQzNCLFFBQVEsRUFBRSxVQUFVLENBQUM7SUFDckIsT0FBTyxFQUFFLG9CQUFvQixDQUFDO0lBQzlCLDZCQUE2QjtJQUM3QixvQkFBb0IsRUFBRSxNQUFNLENBQUM7SUFDN0IsaUNBQWlDO0lBQ2pDLFFBQVEsRUFBRSxJQUFJLEdBQUcsU0FBUyxDQUFDO0lBQzNCOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLGdCQUFnQixLQUFLLElBQUksQ0FBQztJQUM5Qzs7O09BR0c7SUFDSCx1QkFBdUIsQ0FBQyxFQUFFLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLEdBQUcsRUFBRSxNQUFNLENBQUM7Q0FDYixDQUFDO0FBRUYscUZBQXFGO0FBQ3JGLE1BQU0sTUFBTSx5QkFBeUIsR0FBRztJQUN0QyxxR0FBcUc7SUFDckcsdUJBQXVCLENBQUMsRUFBRSxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztDQUNoRCxDQUFDO0FBRUYsZ0VBQWdFO0FBQ2hFLE1BQU0sTUFBTSxvQkFBb0IsR0FBRztJQUNqQyxVQUFVLEVBQUUsVUFBVSxDQUFDO0lBQ3ZCLHFHQUFxRztJQUNyRyxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQ3pCLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxDQUFDO0lBQ3JDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQztJQUNqQyxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDckIsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxPQUFPLGNBQWMsQ0FBQyxDQUFDO0NBQzlELENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxxQkFBYSxnQkFBZ0I7SUFvQ3pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSTtJQW5DdkIsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDcEIsUUFBUSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUM7SUFDaEMsUUFBUSxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDbEMsUUFBUSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUM7SUFDaEMsUUFBUSxDQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxDQUFDO0lBQzlDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLENBQUM7SUFDMUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUM5QixRQUFRLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxPQUFPLGNBQWMsQ0FBQyxDQUFDO0lBRXRFLHVFQUF1RTtJQUN2RSxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBb0Y7SUFPaEgsdUdBQXVHO0lBQ3ZHLE9BQU8sQ0FBQyxTQUFTLENBQVM7SUFDMUIsMEdBQXdHO0lBQ3hHLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFDdkIsMERBQTBEO0lBQzFELE9BQU8sQ0FBQyxTQUFTLENBQVM7SUFDMUIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFnQztJQUNoRCxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBeUI7SUFFekQsZ0dBQWdHO0lBQ2hHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFnQjtJQUMzQyxzRUFBc0U7SUFDdEUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFnQjtJQUN0QyxpSEFBaUg7SUFDakgsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFnQjtJQUV4QyxZQUNFLElBQUksRUFBRSxvQkFBb0IsRUFDVCxJQUFJLEVBQUUsb0JBQW9CLEVBdUI1QztJQUVEOzs7O09BSUc7SUFDSCxPQUFjLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLE1BQU0sQ0FFbEQ7SUFFTSxXQUFXLElBQUksT0FBTyxDQUU1QjtJQUVEOzs7OztPQUtHO0lBQ0ksUUFBUSxJQUFJLE9BQU8sQ0FFekI7SUFFRCwwRkFBd0Y7SUFDakYsY0FBYyxJQUFJLFdBQVcsQ0FFbkM7SUFFRCw2R0FBNkc7SUFDdEcsb0JBQW9CLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBRXpFO0lBRUQsMEVBQTBFO0lBQzdELFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBZXJDO1lBRWEsZ0JBQWdCO0lBcUI5Qjs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLGVBQWU7WUFlVCxRQUFRO1lBVVIsU0FBUztJQVV2Qjs7Ozs7Ozs7T0FRRztJQUNVLGVBQWUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQVN2RDtZQUVhLGlCQUFpQjtJQW1KL0I7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsRUFBRSxPQUFlLEVBQUUsR0FBRTtRQUFFLE9BQU8sQ0FBQyxFQUFFLE9BQU8sQ0FBQTtLQUFPLEdBQUcsSUFBSSxDQXFCbkU7WUFFYSxTQUFTO1lBY1QsZUFBZTtJQWU3QixPQUFPLENBQUMsY0FBYztZQUlSLFVBQVU7WUEwQlYsVUFBVTtDQWV6QiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint-prover.d.ts","sourceRoot":"","sources":["../../src/job/checkpoint-prover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAuC,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAe,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAEjG,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,yBAAyB,CAAC;AAGnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAiC,UAAU,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClH,OAAO,KAAK,EAAmB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEvF,OAAO,KAAK,EAAE,oBAAoB,EAAW,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAG7F,OAAO,KAAK,EAAE,WAAW,EAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"checkpoint-prover.d.ts","sourceRoot":"","sources":["../../src/job/checkpoint-prover.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,20 +39,26 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
|
39
39
|
previousBlockHeader;
|
|
40
40
|
l1ToL2Messages;
|
|
41
41
|
previousArchiveSiblingPath;
|
|
42
|
-
/** Per-prover tx map — populated by the internal gather. Empty until then. */ txs;
|
|
43
42
|
/** Resolved by the sub-tree on success, rejected on cancel/failure. */ blockProofs;
|
|
44
|
-
|
|
43
|
+
// Three independent lifecycle facts — deliberately not collapsed into one status enum, because several
|
|
44
|
+
// combinations are legal and relied on: a prover can be `completed` and then `cancelled` (routine
|
|
45
|
+
// teardown of an already-proven checkpoint), or `completed` and then `failed` (block proving was
|
|
46
|
+
// enqueued, but the sub-tree subsequently faulted). Only `failed` + `cancelled` is excluded — a cancel
|
|
47
|
+
// is not a failure (enforced in `failBlockProofs`).
|
|
48
|
+
/** Block-level proving was fully *enqueued* (a progress marker; the sub-tree may still be proving). */ completed;
|
|
49
|
+
/** Block proofs rejected for a genuine (non-cancel) reason — a sub-tree or prune-induced fork fault. */ failed;
|
|
50
|
+
/** The prover was torn down (prune / reap / shutdown). */ cancelled;
|
|
45
51
|
subTree;
|
|
46
|
-
completed;
|
|
47
52
|
abortController;
|
|
48
53
|
/** Tracks the eager gather+execute task so `cancel()` and `whenDone()` can await its unwind. */ runPromise;
|
|
49
54
|
/** Tracks the cancel-driven teardown so `whenDone()` can await it. */ cancelPromise;
|
|
55
|
+
/** Tracks the success-driven sub-tree teardown (once block proofs are captured) so `whenDone()` can await it. */ teardownPromise;
|
|
50
56
|
constructor(args, deps){
|
|
51
57
|
this.deps = deps;
|
|
52
|
-
this.txs = new Map();
|
|
53
58
|
this.blockProofs = promiseWithResolvers();
|
|
54
|
-
this.cancelled = false;
|
|
55
59
|
this.completed = false;
|
|
60
|
+
this.failed = false;
|
|
61
|
+
this.cancelled = false;
|
|
56
62
|
this.abortController = new AbortController();
|
|
57
63
|
this.checkpoint = args.checkpoint;
|
|
58
64
|
this.epochNumber = args.epochNumber;
|
|
@@ -86,8 +92,13 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
|
86
92
|
isCancelled() {
|
|
87
93
|
return this.cancelled;
|
|
88
94
|
}
|
|
89
|
-
/**
|
|
90
|
-
|
|
95
|
+
/**
|
|
96
|
+
* True once this prover's block proofs have rejected for a genuine (non-cancel) reason — a sub-tree
|
|
97
|
+
* proving fault or a prune-induced world-state fork fault. A failed prover cannot produce its block
|
|
98
|
+
* proofs, so the reconciler must not build (or rebuild) an EpochSession over it; it is cleared only by
|
|
99
|
+
* a prune/re-add replacing it with a fresh prover, or by expiry reaping it.
|
|
100
|
+
*/ isFailed() {
|
|
101
|
+
return this.failed;
|
|
91
102
|
}
|
|
92
103
|
/** AbortSignal that fires on cancel — for callers that want to wire their own tasks. */ getAbortSignal() {
|
|
93
104
|
return this.abortController.signal;
|
|
@@ -97,9 +108,19 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
|
97
108
|
}
|
|
98
109
|
/** Resolves when all in-flight work for this prover has fully unwound. */ async whenDone() {
|
|
99
110
|
await this.runPromise.catch(()=>{});
|
|
111
|
+
// `runPromise` resolves once block-level proving is *enqueued*, but the sub-tree's proofs (and the
|
|
112
|
+
// success-driven teardown they trigger) land later, on the `getSubTreeResult()` callback. Awaiting
|
|
113
|
+
// `blockProofs` here bridges that gap: on success the callback resolves `blockProofs` and then
|
|
114
|
+
// synchronously sets `teardownPromise` before this await resumes, so the teardown is observable
|
|
115
|
+
// below; on failure/cancel `blockProofs` rejects and teardown is driven by the `finally`/cancel
|
|
116
|
+
// paths already awaited via `runPromise`/`cancelPromise`.
|
|
117
|
+
await this.blockProofs.promise.catch(()=>{});
|
|
100
118
|
if (this.cancelPromise) {
|
|
101
119
|
await this.cancelPromise;
|
|
102
120
|
}
|
|
121
|
+
if (this.teardownPromise) {
|
|
122
|
+
await this.teardownPromise;
|
|
123
|
+
}
|
|
103
124
|
}
|
|
104
125
|
async gatherAndExecute() {
|
|
105
126
|
try {
|
|
@@ -118,32 +139,78 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
|
118
139
|
this.deps.log.error(`Error in CheckpointProver ${this.id}`, err, {
|
|
119
140
|
checkpointNumber: this.checkpoint.number
|
|
120
141
|
});
|
|
121
|
-
this.
|
|
142
|
+
this.failBlockProofs(err instanceof Error ? err : new Error(String(err)));
|
|
122
143
|
}
|
|
123
144
|
}
|
|
124
|
-
|
|
145
|
+
/**
|
|
146
|
+
* Rejects the block-proof promise and, unless this is a cancellation, records the prover as failed so
|
|
147
|
+
* the reconciler won't build an EpochSession over it. First rejection wins, so a later duplicate reject
|
|
148
|
+
* (e.g. the executeCheckpoint `finally`) is a harmless no-op.
|
|
149
|
+
*/ failBlockProofs(err) {
|
|
150
|
+
if (!this.cancelled && !this.failed) {
|
|
151
|
+
this.failed = true;
|
|
152
|
+
// Notify the owner so it can upload a post-mortem for this checkpoint. Fire-and-forget: the
|
|
153
|
+
// callback must not block the prover's teardown, and a throw in it must not mask the rejection.
|
|
154
|
+
try {
|
|
155
|
+
this.deps.onFailed?.(this);
|
|
156
|
+
} catch (err) {
|
|
157
|
+
this.deps.log.error(`Error in CheckpointProver onFailed callback for ${this.id}`, err);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
this.blockProofs.reject(err);
|
|
161
|
+
}
|
|
162
|
+
/** Fetches every tx in this checkpoint from the tx pool (by hash, via the block tx effects). */ async fetchTxs() {
|
|
125
163
|
const deadline = new Date(this.deps.dateProvider.now() + this.deps.txGatheringTimeoutMs);
|
|
126
164
|
const txsByBlock = await Promise.all(this.checkpoint.blocks.map((block)=>this.deps.txProvider.getTxsForBlock(block, {
|
|
127
165
|
deadline
|
|
128
166
|
})));
|
|
129
|
-
const txs = txsByBlock.
|
|
130
|
-
const missingTxs = txsByBlock.
|
|
167
|
+
const txs = txsByBlock.flatMap(({ txs })=>txs);
|
|
168
|
+
const missingTxs = txsByBlock.flatMap(({ missingTxs })=>missingTxs);
|
|
169
|
+
return {
|
|
170
|
+
txs: new Map(txs.map((tx)=>[
|
|
171
|
+
tx.getTxHash().toString(),
|
|
172
|
+
tx
|
|
173
|
+
])),
|
|
174
|
+
missingTxs
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
async gatherTxs() {
|
|
178
|
+
const { txs, missingTxs } = await this.fetchTxs();
|
|
131
179
|
if (missingTxs.length > 0) {
|
|
132
180
|
throw new Error(`Txs not found for checkpoint ${this.checkpoint.number}: ${missingTxs.map((hash)=>hash.toString()).join(', ')}`);
|
|
133
181
|
}
|
|
134
|
-
return
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
182
|
+
return txs;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Re-fetches this checkpoint's txs from the tx pool for a post-mortem failure upload.
|
|
186
|
+
*
|
|
187
|
+
* The prover does not cache txs on the heap — they are consumed during proving and dropped — so the
|
|
188
|
+
* durable pool (which keeps a mined tx until L1 finality, with A-1274's retention margin covering a
|
|
189
|
+
* lagging prover) is the source of truth, read back by hash here. Best-effort: any tx the pool can
|
|
190
|
+
* no longer supply is logged and omitted rather than failing the upload, since a partial post-mortem
|
|
191
|
+
* snapshot is still useful for diagnosis.
|
|
192
|
+
*/ async getTxsForUpload() {
|
|
193
|
+
const { txs, missingTxs } = await this.fetchTxs();
|
|
194
|
+
if (missingTxs.length > 0) {
|
|
195
|
+
this.deps.log.warn(`Missing ${missingTxs.length} tx(s) re-fetching checkpoint ${this.checkpoint.number} for failure upload`, {
|
|
196
|
+
checkpointNumber: this.checkpoint.number,
|
|
197
|
+
missingTxCount: missingTxs.length
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
return txs;
|
|
138
201
|
}
|
|
139
202
|
async executeCheckpoint(txs) {
|
|
140
203
|
const signal = this.abortController.signal;
|
|
141
204
|
const checkpointTimer = new Timer();
|
|
142
205
|
let subTreeStarted = false;
|
|
143
206
|
try {
|
|
144
|
-
|
|
145
|
-
|
|
207
|
+
// Test hook: force a sub-tree failure to exercise the checkpoint failure/upload path.
|
|
208
|
+
if (this.deps.checkpointProveOverride) {
|
|
209
|
+
await this.deps.checkpointProveOverride();
|
|
146
210
|
}
|
|
211
|
+
// The gathered txs are consumed locally below (public processing + sub-tree) and then dropped.
|
|
212
|
+
// They are deliberately not retained on the instance: the tx pool is the durable source and
|
|
213
|
+
// `getTxsForUpload` re-fetches them by hash if a post-mortem upload needs them.
|
|
147
214
|
const { chainId, version } = this.checkpoint.blocks[0].header.globalVariables;
|
|
148
215
|
const checkpointConstants = CheckpointConstantData.from({
|
|
149
216
|
chainId,
|
|
@@ -172,7 +239,15 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
|
172
239
|
// Spans processing + proving (from executeCheckpoint start, after tx gathering) to proofs ready.
|
|
173
240
|
this.deps.metrics.recordCheckpointProving(checkpointTimer.ms());
|
|
174
241
|
this.blockProofs.resolve(result.blockProofOutputs);
|
|
175
|
-
|
|
242
|
+
// Release the sub-tree orchestrator now that its output is captured. The block-proof outputs
|
|
243
|
+
// survive via the resolved promise; everything else the sub-tree held — per-tx AVM inputs, and
|
|
244
|
+
// the base/merge/parity proof trees — is dead once proving completes, yet the prover is retained
|
|
245
|
+
// for the whole proof-submission window. Dropping it here is what stops that retention from
|
|
246
|
+
// accumulating across every proven checkpoint. Post-completion consumers (the top-tree job, a
|
|
247
|
+
// rebuilt EpochSession, failure upload) read only `whenBlockProofsReady()` and this prover's own
|
|
248
|
+
// fields (`checkpoint`, `txs`, headers, sibling paths), never the sub-tree.
|
|
249
|
+
this.teardownPromise = this.teardownSubTree();
|
|
250
|
+
}, (err)=>this.failBlockProofs(err instanceof Error ? err : new Error(String(err))));
|
|
176
251
|
if (signal.aborted) {
|
|
177
252
|
return;
|
|
178
253
|
}
|
|
@@ -237,7 +312,7 @@ import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
|
237
312
|
if (subTreeStarted) {
|
|
238
313
|
await this.teardownSubTree();
|
|
239
314
|
}
|
|
240
|
-
this.
|
|
315
|
+
this.failBlockProofs(new Error(`Checkpoint ${this.id} did not complete block processing`));
|
|
241
316
|
}
|
|
242
317
|
}
|
|
243
318
|
}
|
|
@@ -80,7 +80,11 @@ export type EpochSessionDeps = {
|
|
|
80
80
|
* initialized → awaiting-checkpoints → awaiting-root → publishing-proof → completed
|
|
81
81
|
*
|
|
82
82
|
* Terminal states map the publishing outcome: `published` → `completed`, `superseded` →
|
|
83
|
-
* `superseded`, `
|
|
83
|
+
* `superseded`, `expired` → `timed-out`, `withdrawn` → `cancelled`. A fault ends the attempt in one
|
|
84
|
+
* of two terminal states depending on its cause: `stopped` if a checkpoint prover under it failed
|
|
85
|
+
* (possibly a prune — the reconciler will rebuild over a fresh prover on re-add), or `failed` if the
|
|
86
|
+
* session's own top-tree/submit work failed while every prover was healthy (a genuine, non-prune
|
|
87
|
+
* failure the reconciler retains and uploads — see `hasFailed()`).
|
|
84
88
|
* Additionally, the session-level deadline fires `cancel('deadline')` and transitions
|
|
85
89
|
* to `timed-out` for the pre-submit window (top-tree proving) — the publishing service
|
|
86
90
|
* handles the post-submit window via the candidate's `deadline`.
|
|
@@ -117,6 +121,14 @@ export declare class EpochSession implements Traceable {
|
|
|
117
121
|
whenDone(): Promise<EpochProvingJobState>;
|
|
118
122
|
/** True if the session is in a terminal state. */
|
|
119
123
|
isTerminal(): boolean;
|
|
124
|
+
/**
|
|
125
|
+
* True if the session ended in its own genuine failure — top-tree proving or L1 submission failed
|
|
126
|
+
* while every checkpoint prover succeeded. Because healthy provers rule out a prune-induced fault,
|
|
127
|
+
* this is a race-free "the epoch could not be proven" signal: the reconciler retains such a (full)
|
|
128
|
+
* session rather than re-proving it, and uploads a post-mortem. A `stopped` session (a checkpoint
|
|
129
|
+
* prover failed under it) is NOT a session failure in this sense.
|
|
130
|
+
*/
|
|
131
|
+
hasFailed(): boolean;
|
|
120
132
|
/** First block this session proves. */
|
|
121
133
|
getStartBlockNumber(): BlockNumber;
|
|
122
134
|
/** Last block this session proves. */
|
|
@@ -130,7 +142,9 @@ export declare class EpochSession implements Traceable {
|
|
|
130
142
|
* Cancels the session. Idempotent. Withdraws any submitted candidate from the
|
|
131
143
|
* publishing service so the in-flight publisher (if any) is interrupted.
|
|
132
144
|
*/
|
|
133
|
-
cancel(reason?: string
|
|
145
|
+
cancel(reason?: string, { abortJobs }?: {
|
|
146
|
+
abortJobs?: boolean;
|
|
147
|
+
}): Promise<void>;
|
|
134
148
|
private run;
|
|
135
149
|
private submitProof;
|
|
136
150
|
private teardownTopTreeIfNeeded;
|
|
@@ -143,4 +157,4 @@ export declare class EpochSession implements Traceable {
|
|
|
143
157
|
protected handleDeadline(): Promise<void>;
|
|
144
158
|
private toTopTreeHooks;
|
|
145
159
|
}
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtc2Vzc2lvbi5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pvYi9lcG9jaC1zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQXlCLEtBQUssV0FBVyxFQUFFLEtBQUssVUFBVSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEgsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBRXZGLE9BQU8sRUFBRSxLQUFLLFlBQVksRUFBUyxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0QsT0FBTyxFQUFFLEtBQUssb0JBQW9CLEVBQWdDLE1BQU0saUNBQWlDLENBQUM7QUFDMUcsT0FBTyxFQUFjLEtBQUssU0FBUyxFQUFFLEtBQUssTUFBTSxFQUFhLE1BQU0seUJBQXlCLENBQUM7QUFJN0YsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQW9DLEtBQUssWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEYsWUFBWSxFQUFFLG9CQUFvQixFQUFFLENBQUM7QUFFckMsd0ZBQXNGO0FBQ3RGLE1BQU0sTUFBTSxXQUFXLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQztBQUU3Qzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxXQUFXLFdBQVc7SUFDMUIsSUFBSSxFQUFFLFdBQVcsQ0FBQztJQUNsQixXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQ3pCLFFBQVEsRUFBRSxV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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"epoch-session.d.ts","sourceRoot":"","sources":["../../src/job/epoch-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAyB,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,iCAAiC,CAAC;AACxH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAEvF,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,KAAK,oBAAoB,EAAgC,MAAM,iCAAiC,CAAC;AAC1G,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,MAAM,EAAa,MAAM,yBAAyB,CAAC;AAI7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAExF,YAAY,EAAE,oBAAoB,EAAE,CAAC;AAErC,wFAAsF;AACtF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,UAAU,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,yCAAyC;AACzC,wBAAgB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAEjD;AAED,sFAAsF;AACtF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChD,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/C,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CAC7F,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,4DAA4D;AAC5D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,EAAE,kBAAkB,CAAC;IAClC,QAAQ,EAAE,UAAU,CAAC;IACrB,iBAAiB,EAAE,IAAI,CAAC,sBAAsB,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAC;IACvE,OAAO,EAAE,oBAAoB,CAAC;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,6EAA6E;IAC7E,QAAQ,EAAE,IAAI,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"epoch-session.d.ts","sourceRoot":"","sources":["../../src/job/epoch-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -410,7 +410,11 @@ _dec = trackSpan('EpochSession.start', function() {
|
|
|
410
410
|
* initialized → awaiting-checkpoints → awaiting-root → publishing-proof → completed
|
|
411
411
|
*
|
|
412
412
|
* Terminal states map the publishing outcome: `published` → `completed`, `superseded` →
|
|
413
|
-
* `superseded`, `
|
|
413
|
+
* `superseded`, `expired` → `timed-out`, `withdrawn` → `cancelled`. A fault ends the attempt in one
|
|
414
|
+
* of two terminal states depending on its cause: `stopped` if a checkpoint prover under it failed
|
|
415
|
+
* (possibly a prune — the reconciler will rebuild over a fresh prover on re-add), or `failed` if the
|
|
416
|
+
* session's own top-tree/submit work failed while every prover was healthy (a genuine, non-prune
|
|
417
|
+
* failure the reconciler retains and uploads — see `hasFailed()`).
|
|
414
418
|
* Additionally, the session-level deadline fires `cancel('deadline')` and transitions
|
|
415
419
|
* to `timed-out` for the pre-submit window (top-tree proving) — the publishing service
|
|
416
420
|
* handles the post-submit window via the candidate's `deadline`.
|
|
@@ -496,6 +500,15 @@ _dec = trackSpan('EpochSession.start', function() {
|
|
|
496
500
|
/** True if the session is in a terminal state. */ isTerminal() {
|
|
497
501
|
return EpochProvingJobTerminalState.includes(this.state);
|
|
498
502
|
}
|
|
503
|
+
/**
|
|
504
|
+
* True if the session ended in its own genuine failure — top-tree proving or L1 submission failed
|
|
505
|
+
* while every checkpoint prover succeeded. Because healthy provers rule out a prune-induced fault,
|
|
506
|
+
* this is a race-free "the epoch could not be proven" signal: the reconciler retains such a (full)
|
|
507
|
+
* session rather than re-proving it, and uploads a post-mortem. A `stopped` session (a checkpoint
|
|
508
|
+
* prover failed under it) is NOT a session failure in this sense.
|
|
509
|
+
*/ hasFailed() {
|
|
510
|
+
return this.state === 'failed';
|
|
511
|
+
}
|
|
499
512
|
/** First block this session proves. */ getStartBlockNumber() {
|
|
500
513
|
return BlockNumber(this.checkpoints[0].checkpoint.blocks[0].number);
|
|
501
514
|
}
|
|
@@ -514,8 +527,17 @@ _dec = trackSpan('EpochSession.start', function() {
|
|
|
514
527
|
uuid: this.uuid,
|
|
515
528
|
...this.spec
|
|
516
529
|
});
|
|
530
|
+
// Distinguish the two ways an attempt can fault:
|
|
531
|
+
// - a checkpoint prover in the set has failed OR was cancelled (a sub-tree fault, a prune-induced
|
|
532
|
+
// fork fault, or a control-plane cancel that reached this catch before the reconcile marked the
|
|
533
|
+
// session 'cancelled'): end in the non-declaring terminal 'stopped'. This is not the session's own
|
|
534
|
+
// failure and may be a prune, so the reconciler does not upload it; a re-add installs a fresh prover.
|
|
535
|
+
// - no prover failed or was cancelled, yet top-tree proving or L1 submission failed: this is the
|
|
536
|
+
// session's own, genuine failure — and, because every prover is healthy and un-cancelled, it is
|
|
537
|
+
// definitively NOT a prune. End in terminal 'failed' so the reconciler retains it (no pointless
|
|
538
|
+
// re-prove) and uploads a race-free post-mortem.
|
|
517
539
|
if (!this.isTerminal()) {
|
|
518
|
-
this.state = 'failed';
|
|
540
|
+
this.state = this.checkpoints.some((c)=>c.isFailed() || c.isCancelled()) ? 'stopped' : 'failed';
|
|
519
541
|
}
|
|
520
542
|
} finally{
|
|
521
543
|
clearTimeout(this.deadlineTimeoutHandler);
|
|
@@ -527,7 +549,7 @@ _dec = trackSpan('EpochSession.start', function() {
|
|
|
527
549
|
/**
|
|
528
550
|
* Cancels the session. Idempotent. Withdraws any submitted candidate from the
|
|
529
551
|
* publishing service so the in-flight publisher (if any) is interrupted.
|
|
530
|
-
*/ async cancel(reason = 'cancelled') {
|
|
552
|
+
*/ async cancel(reason = 'cancelled', { abortJobs = true } = {}) {
|
|
531
553
|
if (this.isTerminal()) {
|
|
532
554
|
return;
|
|
533
555
|
}
|
|
@@ -546,7 +568,9 @@ _dec = trackSpan('EpochSession.start', function() {
|
|
|
546
568
|
if (this.topTreeJob && !this.topTreeJob.isCancelled()) {
|
|
547
569
|
const job = this.topTreeJob;
|
|
548
570
|
this.topTreeJob = undefined;
|
|
549
|
-
|
|
571
|
+
// On a clean shutdown we leave the in-flight broker jobs alone so a restart can reuse them;
|
|
572
|
+
// other cancellations (reorg, supersede, deadline) abort them since their inputs are stale.
|
|
573
|
+
job.cancel(abortJobs);
|
|
550
574
|
this.pendingTopTreeCleanups.push(job);
|
|
551
575
|
}
|
|
552
576
|
await this.teardownTopTreeIfNeeded();
|
|
@@ -73,10 +73,10 @@ export declare class TopTreeJob {
|
|
|
73
73
|
* via `whenDone()` — the parent collects the cancelled job and awaits all
|
|
74
74
|
* pending top-tree teardowns at the end of the epoch.
|
|
75
75
|
*/
|
|
76
|
-
cancel(): void;
|
|
76
|
+
cancel(abortJobs?: boolean): void;
|
|
77
77
|
/** Resolves once the cancel-driven teardown of the underlying orchestrator has unwound. */
|
|
78
78
|
whenDone(): Promise<void>;
|
|
79
79
|
private runCancel;
|
|
80
80
|
private run;
|
|
81
81
|
}
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLXRyZWUtam9iLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvam9iL3RvcC10cmVlLWpvYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsS0FBSyxvQkFBb0IsRUFBd0IsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBTy9ELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkUsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUvRCwyQ0FBMkM7QUFDM0MsTUFBTSxNQUFNLFlBQVksR0FBRztJQUN6QixZQUFZLEVBQUUsc0JBQXNCLENBQUM7SUFDckMsS0FBSyxFQUFFLEtBQUssQ0FBQztJQUNiLGlCQUFpQixFQUFFLFdBQVcsQ0FBQztDQUNoQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxNQUFNLGVBQWUsR0FBRztJQUM1Qiw2REFBNkQ7SUFDN0QsV0FBVyxDQUFDLEVBQUUsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3pDLGlGQUFpRjtJQUNqRixVQUFVLENBQUMsRUFBRSxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDeEM7Ozs7T0FJRztJQUNILGFBQWEsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLE1BQU0sT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztDQUN0RixDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxxQkFBYSxVQUFVO0lBZ0JuQixPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVc7SUFFNUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJO0lBakJ2Qiw0RkFBNEY7SUFDNUYsUUFBUSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBMEI7SUFFN0UsMEZBQTBGO0lBQzFGLFFBQVEsQ0FBQyxRQUFRLEVBQUUsU0FBUyxnQkFBZ0IsRUFBRSxDQUFDO0lBRS9DLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFzQjtJQUM5QyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBbUI7SUFDbEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQW1CO0lBQ2hELE9BQU8sQ0FBQyxTQUFTLENBQVM7SUFDMUIsaUZBQWlGO0lBQ2pGLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBZ0I7SUFDdEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQWU7SUFFOUMsWUFDbUIsV0FBVyxFQUFFLFdBQVcsRUFDekMsUUFBUSxFQUFFLFNBQVMsZ0JBQWdCLEVBQUUsRUFDcEIsSUFBSSxFQUFFO1FBQ3JCLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQztRQUNsQyxPQUFPLEVBQUUsb0JBQW9CLENBQUM7UUFDOUIsR0FBRyxFQUFFLE1BQU0sQ0FBQztRQUNaLEtBQUssQ0FBQyxFQUFFLGVBQWUsQ0FBQztLQUN6QixFQThCRjtJQUVELDhFQUE0RTtJQUNyRSxRQUFRLElBQUk7UUFBRSxjQUFjLEVBQUUsZ0JBQWdCLENBQUM7UUFBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUM7UUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFBO0tBQUUsQ0FFckc7SUFFTSxXQUFXLElBQUksT0FBTyxDQUU1QjtJQUVELDJFQUF5RTtJQUNsRSxTQUFTLElBQUksTUFBTSxDQUV6QjtJQUVELDRGQUE0RjtJQUNyRixLQUFLLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUdwQztJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxTQUFTLFVBQU8sR0FBRyxJQUFJLENBbUJwQztJQUVELDJGQUEyRjtJQUM5RSxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUlyQztZQUVhLFNBQVM7WUFhVCxHQUFHO0NBdURsQiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"top-tree-job.d.ts","sourceRoot":"","sources":["../../src/job/top-tree-job.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,KAAK,oBAAoB,EAAwB,MAAM,2BAA2B,CAAC;AAE5F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,2CAA2C;AAC3C,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,sBAAsB,CAAC;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,iBAAiB,EAAE,WAAW,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACzC,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACxC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CACtF,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,UAAU;IAgBnB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAjBvB,4FAA4F;IAC5F,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAA0B;IAE7E,0FAA0F;IAC1F,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,SAAS,CAAS;IAC1B,iFAAiF;IACjF,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAE9C,YACmB,WAAW,EAAE,WAAW,EACzC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACpB,IAAI,EAAE;QACrB,aAAa,EAAE,kBAAkB,CAAC;QAClC,OAAO,EAAE,oBAAoB,CAAC;QAC9B,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,eAAe,CAAC;KACzB,EA8BF;IAED,8EAA4E;IACrE,QAAQ,IAAI;QAAE,cAAc,EAAE,gBAAgB,CAAC;QAAC,YAAY,EAAE,gBAAgB,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAErG;IAEM,WAAW,IAAI,OAAO,CAE5B;IAED,2EAAyE;IAClE,SAAS,IAAI,MAAM,CAEzB;IAED,4FAA4F;IACrF,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC,CAGpC;IAED;;;;;;OAMG;IACI,MAAM,
|
|
1
|
+
{"version":3,"file":"top-tree-job.d.ts","sourceRoot":"","sources":["../../src/job/top-tree-job.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,KAAK,oBAAoB,EAAwB,MAAM,2BAA2B,CAAC;AAE5F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,2CAA2C;AAC3C,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,sBAAsB,CAAC;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,iBAAiB,EAAE,WAAW,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACzC,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACxC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CACtF,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,UAAU;IAgBnB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAjBvB,4FAA4F;IAC5F,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAA0B;IAE7E,0FAA0F;IAC1F,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAE/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,SAAS,CAAS;IAC1B,iFAAiF;IACjF,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAE9C,YACmB,WAAW,EAAE,WAAW,EACzC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACpB,IAAI,EAAE;QACrB,aAAa,EAAE,kBAAkB,CAAC;QAClC,OAAO,EAAE,oBAAoB,CAAC;QAC9B,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,eAAe,CAAC;KACzB,EA8BF;IAED,8EAA4E;IACrE,QAAQ,IAAI;QAAE,cAAc,EAAE,gBAAgB,CAAC;QAAC,YAAY,EAAE,gBAAgB,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAErG;IAEM,WAAW,IAAI,OAAO,CAE5B;IAED,2EAAyE;IAClE,SAAS,IAAI,MAAM,CAEzB;IAED,4FAA4F;IACrF,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC,CAGpC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,SAAS,UAAO,GAAG,IAAI,CAmBpC;IAED,2FAA2F;IAC9E,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAIrC;YAEa,SAAS;YAaT,GAAG;CAuDlB"}
|