@aztec/prover-node 0.0.1-commit.3100065 → 0.0.1-commit.321f6a9
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 +34 -4
- package/dest/job/checkpoint-prover.d.ts.map +1 -1
- package/dest/job/checkpoint-prover.js +41 -8
- 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 +67 -63
- 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 +61 -7
- 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 +73 -67
|
@@ -16,12 +16,14 @@ export class ProverNodePublisher {
|
|
|
16
16
|
metrics;
|
|
17
17
|
log;
|
|
18
18
|
rollupContract;
|
|
19
|
+
proofSubmissionTarget;
|
|
19
20
|
l1TxUtils;
|
|
20
21
|
constructor(config, deps, bindings){
|
|
21
22
|
const telemetry = deps.telemetry ?? getTelemetryClient();
|
|
22
23
|
this.metrics = new ProverNodePublisherMetrics(telemetry, 'ProverNode');
|
|
23
24
|
this.log = createLogger('prover-node:l1-tx-publisher', bindings);
|
|
24
25
|
this.rollupContract = deps.rollupContract;
|
|
26
|
+
this.proofSubmissionTarget = deps.proofSubmissionTarget?.toString() ?? deps.rollupContract.address;
|
|
25
27
|
this.l1TxUtils = deps.l1TxUtils;
|
|
26
28
|
}
|
|
27
29
|
getRollupContract() {
|
|
@@ -129,7 +131,7 @@ export class ProverNodePublisher {
|
|
|
129
131
|
const senderAddress = this.l1TxUtils.getSenderAddress();
|
|
130
132
|
const [gasLimit, gasPrice, latestBlock] = await Promise.all([
|
|
131
133
|
this.l1TxUtils.estimateGas(senderAddress.toString(), {
|
|
132
|
-
to: this.
|
|
134
|
+
to: this.proofSubmissionTarget,
|
|
133
135
|
data
|
|
134
136
|
}),
|
|
135
137
|
this.l1TxUtils.getGasPrice(),
|
|
@@ -183,7 +185,7 @@ export class ProverNodePublisher {
|
|
|
183
185
|
});
|
|
184
186
|
try {
|
|
185
187
|
const { receipt } = await this.l1TxUtils.sendAndMonitorTransaction({
|
|
186
|
-
to: this.
|
|
188
|
+
to: this.proofSubmissionTarget,
|
|
187
189
|
data
|
|
188
190
|
}, {
|
|
189
191
|
txTimeoutAt: args.deadline
|
|
@@ -195,7 +197,7 @@ export class ProverNodePublisher {
|
|
|
195
197
|
],
|
|
196
198
|
functionName: 'submitEpochRootProof',
|
|
197
199
|
abi: RollupAbi,
|
|
198
|
-
address: this.
|
|
200
|
+
address: this.proofSubmissionTarget
|
|
199
201
|
}, /*blobInputs*/ undefined, /*stateOverride*/ []);
|
|
200
202
|
this.log.error(`Rollup submit epoch proof tx reverted with ${errorMsg ?? 'unknown error'}`);
|
|
201
203
|
return undefined;
|
package/dest/prover-node.d.ts
CHANGED
|
@@ -4,7 +4,9 @@ import { BlockNumber, CheckpointNumber, EpochNumber } from '@aztec/foundation/br
|
|
|
4
4
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
5
5
|
import type { EpochProverFactory } from '@aztec/prover-client';
|
|
6
6
|
import { ChonkCache } from '@aztec/prover-client/orchestrator';
|
|
7
|
+
import { type AvmSimulator } from '@aztec/simulator/server';
|
|
7
8
|
import { type L2BlockSource, type L2BlockStreamEvent, type L2BlockStreamEventHandler } from '@aztec/stdlib/block';
|
|
9
|
+
import type { Checkpoint } from '@aztec/stdlib/checkpoint';
|
|
8
10
|
import type { ChainConfig } from '@aztec/stdlib/config';
|
|
9
11
|
import type { ContractDataSource } from '@aztec/stdlib/contract';
|
|
10
12
|
import { type L1RollupConstants } from '@aztec/stdlib/epoch-helpers';
|
|
@@ -14,7 +16,8 @@ import type { L1ToL2MessageSource } from '@aztec/stdlib/messaging';
|
|
|
14
16
|
import { L1Metrics, type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
|
|
15
17
|
import { CheckpointStore } from './checkpoint-store.js';
|
|
16
18
|
import type { SpecificProverNodeConfig } from './config.js';
|
|
17
|
-
import type {
|
|
19
|
+
import type { CheckpointProver, CheckpointProverTestHooks } from './job/checkpoint-prover.js';
|
|
20
|
+
import type { EpochSessionHooks } from './job/epoch-session.js';
|
|
18
21
|
import { ProofPublishingService } from './proof-publishing-service.js';
|
|
19
22
|
import type { ProverPublisherFactory } from './prover-publisher-factory.js';
|
|
20
23
|
import { SessionManager } from './session-manager.js';
|
|
@@ -42,6 +45,7 @@ export declare class ProverNode implements L2BlockStreamEventHandler, ProverNode
|
|
|
42
45
|
} & Partial<Service>;
|
|
43
46
|
protected readonly rollupContract: RollupContract;
|
|
44
47
|
protected readonly l1Metrics: L1Metrics;
|
|
48
|
+
private readonly avmSimulator;
|
|
45
49
|
protected readonly telemetryClient: TelemetryClient;
|
|
46
50
|
private delayer?;
|
|
47
51
|
private readonly dateProvider;
|
|
@@ -76,7 +80,7 @@ export declare class ProverNode implements L2BlockStreamEventHandler, ProverNode
|
|
|
76
80
|
protected publishingService: ProofPublishingService | undefined;
|
|
77
81
|
constructor(prover: EpochProverManager & EpochProverFactory, publisherFactory: ProverPublisherFactory, l2BlockSource: L2BlockSource & Partial<Service>, l1ToL2MessageSource: L1ToL2MessageSource, contractDataSource: ContractDataSource, worldState: WorldStateSynchronizer, p2pClient: {
|
|
78
82
|
getTxProvider(): ITxProvider;
|
|
79
|
-
} & Partial<Service>, rollupContract: RollupContract, l1Metrics: L1Metrics, config?: Partial<ProverNodeOptions>, telemetryClient?: TelemetryClient, delayer?: Delayer | undefined, dateProvider?: DateProvider);
|
|
83
|
+
} & Partial<Service>, rollupContract: RollupContract, l1Metrics: L1Metrics, avmSimulator: AvmSimulator, config?: Partial<ProverNodeOptions>, telemetryClient?: TelemetryClient, delayer?: Delayer | undefined, dateProvider?: DateProvider);
|
|
80
84
|
getProverId(): import("@aztec/foundation/eth-address").EthAddress;
|
|
81
85
|
getP2P(): {
|
|
82
86
|
getTxProvider(): ITxProvider;
|
|
@@ -112,9 +116,10 @@ export declare class ProverNode implements L2BlockStreamEventHandler, ProverNode
|
|
|
112
116
|
start(): Promise<void>;
|
|
113
117
|
stop(): Promise<void>;
|
|
114
118
|
/**
|
|
115
|
-
* Constructs the session manager. Extracted so subclasses (test harness) can swap
|
|
116
|
-
*
|
|
117
|
-
*
|
|
119
|
+
* Constructs the session manager. Extracted so subclasses (test harness) can swap the
|
|
120
|
+
* implementation. Wired to upload a post-mortem when a full session ends in its own genuine failure
|
|
121
|
+
* (`EpochSession.hasFailed()` — top-tree/submit failed with every prover healthy, so definitively not
|
|
122
|
+
* a prune). A `stopped` session (a prover under it failed) is not uploaded; it recovers on re-add.
|
|
118
123
|
*/
|
|
119
124
|
protected createSessionManager(publishingService: ProofPublishingService): SessionManager;
|
|
120
125
|
/**
|
|
@@ -123,8 +128,32 @@ export declare class ProverNode implements L2BlockStreamEventHandler, ProverNode
|
|
|
123
128
|
* Applies to every session constructed after this call.
|
|
124
129
|
*/
|
|
125
130
|
setSessionHooks(hooks: EpochSessionHooks): void;
|
|
126
|
-
/**
|
|
127
|
-
|
|
131
|
+
/**
|
|
132
|
+
* Installs checkpoint-prover test hooks (e.g. forcing a sub-tree failure) applied to every
|
|
133
|
+
* CheckpointProver constructed after this call. For the e2e harness only.
|
|
134
|
+
*/
|
|
135
|
+
setCheckpointHooks(hooks: CheckpointProverTestHooks): void;
|
|
136
|
+
/**
|
|
137
|
+
* Uploads a post-mortem snapshot for an epoch whose full session failed to prove, built from that
|
|
138
|
+
* session's checkpoint provers. Fired from the session manager's `onSessionFailed` callback (a
|
|
139
|
+
* genuine, race-free failure). Exposed as a method so tests can spy on it. No-ops if no failed-epoch
|
|
140
|
+
* store is configured or the checkpoint set is empty.
|
|
141
|
+
*/
|
|
142
|
+
tryUploadEpochFailure(id: string, checkpoints: readonly CheckpointProver[]): Promise<string | undefined>;
|
|
143
|
+
/**
|
|
144
|
+
* Uploads a post-mortem for a single failed checkpoint prover, built from just that checkpoint's
|
|
145
|
+
* proving data. Fired (fire-and-forget) from the store's `onFailed` callback for any non-cancel
|
|
146
|
+
* block-proof failure — a genuine sub-tree fault or a prune-induced fork fault alike. No-ops if no
|
|
147
|
+
* failed-epoch store is configured, or if the checkpoint is no longer canonical (a prune left nothing
|
|
148
|
+
* to diagnose). Swallows its own errors so a fire-and-forget caller can't leak.
|
|
149
|
+
*/
|
|
150
|
+
tryUploadCheckpointFailure(prover: CheckpointProver): Promise<string | undefined>;
|
|
151
|
+
/**
|
|
152
|
+
* True if the checkpoint still exists on the canonical chain: the archiver holds a block at its last
|
|
153
|
+
* block's height whose archive root matches. A prune (fork fault) leaves the block missing or replaced,
|
|
154
|
+
* so this returns false. Protected for direct unit-test access.
|
|
155
|
+
*/
|
|
156
|
+
protected isCheckpointCanonical(checkpoint: Checkpoint): Promise<boolean>;
|
|
128
157
|
private getL1Constants;
|
|
129
158
|
/**
|
|
130
159
|
* Returns true if every block in the given epoch is proven on L1. An epoch is only
|
|
@@ -152,4 +181,4 @@ export declare class ProverNode implements L2BlockStreamEventHandler, ProverNode
|
|
|
152
181
|
private validateConfig;
|
|
153
182
|
}
|
|
154
183
|
export { EpochProvingJobTerminalState };
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm92ZXItbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSzdGLE9BQU8sRUFBRSxZQUFZLEVBQWtCLE1BQU0seUJBQXlCLENBQUM7QUFDdkUsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssWUFBWSxFQUEwQixNQUFNLHlCQUF5QixDQUFDO0FBQ3BGLE9BQU8sRUFHTCxLQUFLLGFBQWEsRUFDbEIsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyx5QkFBeUIsRUFFL0IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQXVCLE1BQU0sMEJBQTBCLENBQUM7QUFDaEYsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsS0FBSyxpQkFBaUIsRUFBbUQsTUFBTSw2QkFBNkIsQ0FBQztBQUN0SCxPQUFPLEVBQ0wsS0FBSyxrQkFBa0IsRUFDdkIsS0FBSyxvQkFBb0IsRUFDekIsNEJBQTRCLEVBQzVCLEtBQUssV0FBVyxFQUNoQixLQUFLLGFBQWEsRUFDbEIsS0FBSyxPQUFPLEVBQ1osS0FBSyxzQkFBc0IsRUFFNUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFP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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAK7F,OAAO,EAAE,YAAY,EAAkB,MAAM,yBAAyB,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,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
|
@@ -414,6 +414,7 @@ import { SessionManager } from './session-manager.js';
|
|
|
414
414
|
p2pClient;
|
|
415
415
|
rollupContract;
|
|
416
416
|
l1Metrics;
|
|
417
|
+
avmSimulator;
|
|
417
418
|
telemetryClient;
|
|
418
419
|
delayer;
|
|
419
420
|
dateProvider;
|
|
@@ -450,7 +451,7 @@ import { SessionManager } from './session-manager.js';
|
|
|
450
451
|
/** Periodic tick that runs the epoch-expiry sweep during idle periods when no block-stream events arrive. */ expiryTicker;
|
|
451
452
|
tracer;
|
|
452
453
|
publishingService;
|
|
453
|
-
constructor(prover, publisherFactory, l2BlockSource, l1ToL2MessageSource, contractDataSource, worldState, p2pClient, rollupContract, l1Metrics, config = {}, telemetryClient = getTelemetryClient(), delayer, dateProvider = new DateProvider()){
|
|
454
|
+
constructor(prover, publisherFactory, l2BlockSource, l1ToL2MessageSource, contractDataSource, worldState, p2pClient, rollupContract, l1Metrics, avmSimulator, config = {}, telemetryClient = getTelemetryClient(), delayer, dateProvider = new DateProvider()){
|
|
454
455
|
this.prover = prover;
|
|
455
456
|
this.publisherFactory = publisherFactory;
|
|
456
457
|
this.l2BlockSource = l2BlockSource;
|
|
@@ -460,6 +461,7 @@ import { SessionManager } from './session-manager.js';
|
|
|
460
461
|
this.p2pClient = p2pClient;
|
|
461
462
|
this.rollupContract = rollupContract;
|
|
462
463
|
this.l1Metrics = l1Metrics;
|
|
464
|
+
this.avmSimulator = avmSimulator;
|
|
463
465
|
this.telemetryClient = telemetryClient;
|
|
464
466
|
this.delayer = delayer;
|
|
465
467
|
this.dateProvider = dateProvider;
|
|
@@ -487,14 +489,17 @@ import { SessionManager } from './session-manager.js';
|
|
|
487
489
|
this.checkpointStore = new CheckpointStore(this.l2BlockSource, {
|
|
488
490
|
proverFactory: this.prover,
|
|
489
491
|
chonkCache: this.chonkCache,
|
|
490
|
-
publicProcessorFactory: new PublicProcessorFactory(this.contractDataSource, this.dateProvider, this.telemetryClient, this.log.getBindings()),
|
|
492
|
+
publicProcessorFactory: new PublicProcessorFactory(this.contractDataSource, this.avmSimulator, this.dateProvider, this.telemetryClient, this.log.getBindings()),
|
|
491
493
|
dbProvider: this.worldState,
|
|
492
494
|
txProvider: this.p2pClient.getTxProvider(),
|
|
493
495
|
dateProvider: this.dateProvider,
|
|
494
496
|
proverId: this.prover.getProverId(),
|
|
495
497
|
metrics: this.jobMetrics,
|
|
496
498
|
txGatheringTimeoutMs: this.config.txGatheringTimeoutMs,
|
|
497
|
-
deadline: undefined
|
|
499
|
+
deadline: undefined,
|
|
500
|
+
// A checkpoint prover that fails (a sub-tree fault or a prune-induced fork fault) uploads a
|
|
501
|
+
// post-mortem for its own checkpoint, independently of any session. Fire-and-forget.
|
|
502
|
+
onFailed: (prover)=>void this.tryUploadCheckpointFailure(prover)
|
|
498
503
|
}, this.log.getBindings());
|
|
499
504
|
}
|
|
500
505
|
getProverId() {
|
|
@@ -549,11 +554,9 @@ import { SessionManager } from './session-manager.js';
|
|
|
549
554
|
break;
|
|
550
555
|
}
|
|
551
556
|
}
|
|
552
|
-
//
|
|
553
|
-
|
|
554
|
-
//
|
|
555
|
-
// failure above propagates to the L2BlockStream (which logs and stops this poll pass) and
|
|
556
|
-
// skips this update, so the event is re-emitted on the next poll rather than skipped (A-1041).
|
|
557
|
+
// Advance the local tips store only after the proving-side handling (registration / prune) has
|
|
558
|
+
// succeeded. Any failure above propagates to the L2BlockStream (which logs and stops this poll
|
|
559
|
+
// pass) and skips this update, so the event is re-emitted on the next poll rather than skipped
|
|
557
560
|
await this.tipsStore.handleBlockStreamEvent(event);
|
|
558
561
|
}
|
|
559
562
|
/**
|
|
@@ -740,8 +743,8 @@ import { SessionManager } from './session-manager.js';
|
|
|
740
743
|
this.lastExpiredEpoch = newlyExpiredUpTo;
|
|
741
744
|
}
|
|
742
745
|
/**
|
|
743
|
-
* Releases chonk-cache entries for every block in the supplied epoch (best-effort) and
|
|
744
|
-
*
|
|
746
|
+
* Releases chonk-cache entries for every block in the supplied epoch (best-effort) and reaps every
|
|
747
|
+
* CheckpointProver in the store whose epoch is at or below it.
|
|
745
748
|
*/ async expireEpoch(epoch) {
|
|
746
749
|
try {
|
|
747
750
|
const blocks = await this.l2BlockSource.getBlocks({
|
|
@@ -793,8 +796,9 @@ import { SessionManager } from './session-manager.js';
|
|
|
793
796
|
tipsOnly: true
|
|
794
797
|
});
|
|
795
798
|
this.blockStream.start();
|
|
796
|
-
//
|
|
797
|
-
//
|
|
799
|
+
// The periodic ticker is the sole driver of the expiry sweep: it fires every poll interval whether
|
|
800
|
+
// or not block-stream events arrive, and RunningPromise never overlaps its own runs, so the sweep's
|
|
801
|
+
// `lastExpiredEpoch` high-water mark advances — and each epoch's post-mortem uploads — exactly once.
|
|
798
802
|
this.expiryTicker = new RunningPromise(()=>this.checkEpochExpiry(), this.log, this.config.proverNodePollingIntervalMs);
|
|
799
803
|
this.expiryTicker.start();
|
|
800
804
|
await this.rewardsMetrics.start();
|
|
@@ -826,9 +830,10 @@ import { SessionManager } from './session-manager.js';
|
|
|
826
830
|
this.log.info('Stopped ProverNode');
|
|
827
831
|
}
|
|
828
832
|
/**
|
|
829
|
-
* Constructs the session manager. Extracted so subclasses (test harness) can swap
|
|
830
|
-
*
|
|
831
|
-
*
|
|
833
|
+
* Constructs the session manager. Extracted so subclasses (test harness) can swap the
|
|
834
|
+
* implementation. Wired to upload a post-mortem when a full session ends in its own genuine failure
|
|
835
|
+
* (`EpochSession.hasFailed()` — top-tree/submit failed with every prover healthy, so definitively not
|
|
836
|
+
* a prune). A `stopped` session (a prover under it failed) is not uploaded; it recovers on re-add.
|
|
832
837
|
*/ createSessionManager(publishingService) {
|
|
833
838
|
return new SessionManager({
|
|
834
839
|
checkpointStore: this.checkpointStore,
|
|
@@ -844,7 +849,7 @@ import { SessionManager } from './session-manager.js';
|
|
|
844
849
|
finalizationDelayMs: this.config.proverNodeEpochProvingDelayMs
|
|
845
850
|
},
|
|
846
851
|
onSessionFailed: async (session)=>{
|
|
847
|
-
await this.
|
|
852
|
+
await this.tryUploadEpochFailure(session.getId(), session.getCheckpoints());
|
|
848
853
|
},
|
|
849
854
|
bindings: this.log.getBindings()
|
|
850
855
|
});
|
|
@@ -859,14 +864,72 @@ import { SessionManager } from './session-manager.js';
|
|
|
859
864
|
}
|
|
860
865
|
this.sessionManager.setSessionHooks(hooks);
|
|
861
866
|
}
|
|
862
|
-
/**
|
|
867
|
+
/**
|
|
868
|
+
* Installs checkpoint-prover test hooks (e.g. forcing a sub-tree failure) applied to every
|
|
869
|
+
* CheckpointProver constructed after this call. For the e2e harness only.
|
|
870
|
+
*/ setCheckpointHooks(hooks) {
|
|
871
|
+
this.checkpointStore.setTestHooks(hooks);
|
|
872
|
+
}
|
|
873
|
+
/**
|
|
874
|
+
* Uploads a post-mortem snapshot for an epoch whose full session failed to prove, built from that
|
|
875
|
+
* session's checkpoint provers. Fired from the session manager's `onSessionFailed` callback (a
|
|
876
|
+
* genuine, race-free failure). Exposed as a method so tests can spy on it. No-ops if no failed-epoch
|
|
877
|
+
* store is configured or the checkpoint set is empty.
|
|
878
|
+
*/ async tryUploadEpochFailure(id, checkpoints) {
|
|
879
|
+
if (!this.config.proverNodeFailedEpochStore || checkpoints.length === 0) {
|
|
880
|
+
return undefined;
|
|
881
|
+
}
|
|
882
|
+
const data = SessionManager.buildProvingData(checkpoints);
|
|
883
|
+
return await uploadEpochProofFailure(this.config.proverNodeFailedEpochStore, // The session's own id; `uploadEpochProofFailure` already prefixes the path with the epoch number.
|
|
884
|
+
id, data, this.l2BlockSource, this.worldState, assertRequired(pick(this.config, 'l1ChainId', 'rollupVersion', 'dataDirectory')), this.log);
|
|
885
|
+
}
|
|
886
|
+
/**
|
|
887
|
+
* Uploads a post-mortem for a single failed checkpoint prover, built from just that checkpoint's
|
|
888
|
+
* proving data. Fired (fire-and-forget) from the store's `onFailed` callback for any non-cancel
|
|
889
|
+
* block-proof failure — a genuine sub-tree fault or a prune-induced fork fault alike. No-ops if no
|
|
890
|
+
* failed-epoch store is configured, or if the checkpoint is no longer canonical (a prune left nothing
|
|
891
|
+
* to diagnose). Swallows its own errors so a fire-and-forget caller can't leak.
|
|
892
|
+
*/ async tryUploadCheckpointFailure(prover) {
|
|
863
893
|
if (!this.config.proverNodeFailedEpochStore) {
|
|
864
894
|
return undefined;
|
|
865
895
|
}
|
|
866
|
-
|
|
867
|
-
|
|
896
|
+
try {
|
|
897
|
+
// A prune-induced fork fault and a genuine sub-tree failure are indistinguishable at the moment the
|
|
898
|
+
// prover rejects (no control-plane cancel has landed yet). But the archiver is the authoritative
|
|
899
|
+
// committed chain: if this checkpoint was pruned out, its last block is no longer canonical there.
|
|
900
|
+
// Only upload for a checkpoint that still exists on-chain — a prune leaves nothing to diagnose, and
|
|
901
|
+
// the snapshot (full world-state + archiver) is expensive to produce and store.
|
|
902
|
+
if (!await this.isCheckpointCanonical(prover.checkpoint)) {
|
|
903
|
+
this.log.debug(`Skipping checkpoint-failure upload for ${prover.id}: no longer canonical (pruned)`, {
|
|
904
|
+
checkpointNumber: prover.checkpoint.number
|
|
905
|
+
});
|
|
906
|
+
return undefined;
|
|
907
|
+
}
|
|
908
|
+
const data = SessionManager.buildProvingData([
|
|
909
|
+
prover
|
|
910
|
+
]);
|
|
911
|
+
return await uploadEpochProofFailure(this.config.proverNodeFailedEpochStore, // The prover's content-addressed id; the epoch number is already in the upload path.
|
|
912
|
+
prover.id, data, this.l2BlockSource, this.worldState, assertRequired(pick(this.config, 'l1ChainId', 'rollupVersion', 'dataDirectory')), this.log);
|
|
913
|
+
} catch (err) {
|
|
914
|
+
this.log.error(`Error uploading checkpoint failure for ${prover.id}`, err);
|
|
915
|
+
return undefined;
|
|
916
|
+
}
|
|
868
917
|
}
|
|
869
918
|
// ---------------- helpers ----------------
|
|
919
|
+
/**
|
|
920
|
+
* True if the checkpoint still exists on the canonical chain: the archiver holds a block at its last
|
|
921
|
+
* block's height whose archive root matches. A prune (fork fault) leaves the block missing or replaced,
|
|
922
|
+
* so this returns false. Protected for direct unit-test access.
|
|
923
|
+
*/ async isCheckpointCanonical(checkpoint) {
|
|
924
|
+
const lastBlock = checkpoint.blocks.at(-1);
|
|
925
|
+
if (!lastBlock) {
|
|
926
|
+
return false;
|
|
927
|
+
}
|
|
928
|
+
const onChain = await this.l2BlockSource.getBlock({
|
|
929
|
+
number: lastBlock.number
|
|
930
|
+
});
|
|
931
|
+
return !!onChain && onChain.archive.root.equals(checkpoint.archive.root);
|
|
932
|
+
}
|
|
870
933
|
getL1Constants() {
|
|
871
934
|
return this.l2BlockSource.getL1Constants();
|
|
872
935
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { RollupContract } from '@aztec/ethereum/contracts';
|
|
2
2
|
import type { L1TxUtils } from '@aztec/ethereum/l1-tx-utils';
|
|
3
3
|
import type { PublisherManager } from '@aztec/ethereum/publisher-manager';
|
|
4
|
+
import type { EthAddress } from '@aztec/foundation/eth-address';
|
|
4
5
|
import type { LoggerBindings } from '@aztec/foundation/log';
|
|
5
6
|
import type { ProverPublisherConfig, ProverTxSenderConfig } from '@aztec/sequencer-client';
|
|
6
7
|
import type { TelemetryClient } from '@aztec/telemetry-client';
|
|
@@ -12,6 +13,7 @@ export declare class ProverPublisherFactory {
|
|
|
12
13
|
constructor(config: ProverTxSenderConfig & ProverPublisherConfig, deps: {
|
|
13
14
|
rollupContract: RollupContract;
|
|
14
15
|
publisherManager: PublisherManager<L1TxUtils>;
|
|
16
|
+
proofSubmissionTarget?: EthAddress;
|
|
15
17
|
telemetry?: TelemetryClient;
|
|
16
18
|
}, bindings?: LoggerBindings | undefined);
|
|
17
19
|
start(): Promise<void>;
|
|
@@ -22,4 +24,4 @@ export declare class ProverPublisherFactory {
|
|
|
22
24
|
*/
|
|
23
25
|
create(): Promise<ProverNodePublisher>;
|
|
24
26
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLXB1Ymxpc2hlci1mYWN0b3J5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmVyLXB1Ymxpc2hlci1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEUsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRixPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVqRSxxQkFBYSxzQkFBc0I7SUFFL0IsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsSUFBSTtJQU1aLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFSbkIsWUFDVSxNQUFNLEVBQUUsb0JBQW9CLEdBQUcscUJBQXFCLEVBQ3BELElBQUksRUFBRTtRQUNaLGNBQWMsRUFBRSxjQUFjLENBQUM7UUFDL0IsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUMscUJBQXFCLENBQUMsRUFBRSxVQUFVLENBQUM7UUFDbkMsU0FBUyxDQUFDLEVBQUUsZUFBZSxDQUFDO0tBQzdCLEVBQ08sUUFBUSxDQUFDLDRCQUFnQixFQUMvQjtJQUVTLEtBQUssa0JBRWpCO0lBRVksSUFBSSxrQkFFaEI7SUFFRDs7O09BR0c7SUFDVSxNQUFNLElBQUksT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBWWxEO0NBQ0YifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prover-publisher-factory.d.ts","sourceRoot":"","sources":["../src/prover-publisher-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"prover-publisher-factory.d.ts","sourceRoot":"","sources":["../src/prover-publisher-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,QAAQ,CAAC;IARnB,YACU,MAAM,EAAE,oBAAoB,GAAG,qBAAqB,EACpD,IAAI,EAAE;QACZ,cAAc,EAAE,cAAc,CAAC;QAC/B,gBAAgB,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC9C,qBAAqB,CAAC,EAAE,UAAU,CAAC;QACnC,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B,EACO,QAAQ,CAAC,4BAAgB,EAC/B;IAES,KAAK,kBAEjB;IAEY,IAAI,kBAEhB;IAED;;;OAGG;IACU,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAYlD;CACF"}
|
|
@@ -22,6 +22,7 @@ export class ProverPublisherFactory {
|
|
|
22
22
|
return new ProverNodePublisher(this.config, {
|
|
23
23
|
rollupContract: this.deps.rollupContract,
|
|
24
24
|
l1TxUtils: l1Publisher,
|
|
25
|
+
proofSubmissionTarget: this.deps.proofSubmissionTarget,
|
|
25
26
|
telemetry: this.deps.telemetry
|
|
26
27
|
}, this.bindings);
|
|
27
28
|
}
|
|
@@ -43,8 +43,9 @@ export type SessionManagerDeps = {
|
|
|
43
43
|
dateProvider: DateProvider;
|
|
44
44
|
config: SessionManagerConfig;
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
46
|
+
* Fired once when a full session ends in its own genuine failure (`EpochSession.hasFailed()` — top-tree
|
|
47
|
+
* or submit failed with every prover healthy). The owner uploads a post-mortem here. Not fired for a
|
|
48
|
+
* `stopped` session (a prover under it failed — possibly a prune), which is recovered on re-add instead.
|
|
48
49
|
*/
|
|
49
50
|
onSessionFailed?: (session: EpochSession) => Promise<void>;
|
|
50
51
|
bindings?: LoggerBindings;
|
|
@@ -71,15 +72,6 @@ export declare class SessionManager {
|
|
|
71
72
|
private readonly reconcileQueue;
|
|
72
73
|
/** Cached L1 constants, populated on first read. */
|
|
73
74
|
private cachedL1Constants;
|
|
74
|
-
/**
|
|
75
|
-
* Highest epoch for which the periodic tick has successfully created a full session.
|
|
76
|
-
* Monotonic high-water mark: once the tick observes a session for epoch X, it stops
|
|
77
|
-
* trying to open one — even if that session subsequently fails (only a new checkpoint
|
|
78
|
-
* event reopens it). Crucially, the mark only advances when a session actually exists
|
|
79
|
-
* post-open, so transient blockers (atMaxSessionLimit, archiver still indexing) leave
|
|
80
|
-
* the mark in place and the next tick retries.
|
|
81
|
-
*/
|
|
82
|
-
private lastTickEpoch;
|
|
83
75
|
/** Test-only hooks applied to every session this manager constructs. */
|
|
84
76
|
private sessionHooks;
|
|
85
77
|
/** Periodic tick that nudges reconcile to pick up newly-complete epochs. Started by `start()`. */
|
|
@@ -131,6 +123,8 @@ export declare class SessionManager {
|
|
|
131
123
|
private scheduleReconcile;
|
|
132
124
|
private reconcile;
|
|
133
125
|
private recreateInvalidSessions;
|
|
126
|
+
/** A session may be built over a checkpoint set only when it is non-empty and contains no failed prover. */
|
|
127
|
+
private canBuildOver;
|
|
134
128
|
private openFullSessionIfReady;
|
|
135
129
|
private openPartialSession;
|
|
136
130
|
protected constructSession(spec: SessionSpec, checkpoints: readonly CheckpointProver[]): EpochSession;
|
|
@@ -140,19 +134,25 @@ export declare class SessionManager {
|
|
|
140
134
|
private computeDeadline;
|
|
141
135
|
private runSession;
|
|
142
136
|
/**
|
|
143
|
-
* Builds the EpochProvingJobData snapshot for failure upload
|
|
144
|
-
*
|
|
145
|
-
* partial state is still useful for post-mortem analysis.
|
|
137
|
+
* Builds the EpochProvingJobData snapshot for a post-mortem failure upload from a set of
|
|
138
|
+
* checkpoint provers. Includes every checkpoint regardless of whether sub-tree proving
|
|
139
|
+
* completed — partial state is still useful for post-mortem analysis.
|
|
146
140
|
*/
|
|
147
|
-
static
|
|
141
|
+
static buildProvingData(checkpoints: readonly CheckpointProver[]): EpochProvingJobData;
|
|
148
142
|
private atMaxSessionLimit;
|
|
149
143
|
private epochsForTrigger;
|
|
150
144
|
private nextUnprovenEpoch;
|
|
151
145
|
private checkpointsForSpec;
|
|
146
|
+
/**
|
|
147
|
+
* True if any prover in the set has failed. The epoch cannot be proven over a failed prover (it can
|
|
148
|
+
* never produce its block proofs), so a session must not be built or rebuilt over it until a prune/re-add
|
|
149
|
+
* has replaced it with a fresh prover.
|
|
150
|
+
*/
|
|
151
|
+
private hasFailedProver;
|
|
152
152
|
private fireAndForgetCancel;
|
|
153
153
|
private checkpointsMatch;
|
|
154
154
|
private archiverFullyCovered;
|
|
155
155
|
private isProvenChainEncompassing;
|
|
156
156
|
private getL1Constants;
|
|
157
157
|
}
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1tYW5hZ2VyLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2Vzc2lvbi1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxLQUFLLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWhGLE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2hFLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUd2RixPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBUXpELE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFNUUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsWUFBWSxFQUNaLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssaUJBQWlCLEVBRXRCLEtBQUssV0FBVyxFQUVqQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sS0FBSyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFNUUsdUNBQXVDO0FBQ3ZDLE1BQU0sTUFBTSxnQkFBZ0IsR0FDeEI7SUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDO0lBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQTtDQUFFLEdBQzFD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEhF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AAGvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EACL,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EAEtB,KAAK,WAAW,EAEjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,uCAAuC;AACvC,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,WAAW,EAAE,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAE/C,kDAAkD;AAClD,MAAM,MAAM,oBAAoB,GAAG;IACjC,+EAA+E;IAC/E,cAAc,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,cAAc,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,eAAe,EAAE,eAAe,CAAC;IACjC,aAAa,EAAE,IAAI,CACjB,aAAa,EACb,iBAAiB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,cAAc,CAC5F,CAAC;IACF,aAAa,EAAE,kBAAkB,CAAC;IAClC,QAAQ,EAAE,UAAU,CAAC;IACrB,iBAAiB,EAAE,sBAAsB,CAAC;IAC1C,OAAO,EAAE,oBAAoB,CAAC;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,oBAAoB,CAAC;IAC7B
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"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"}
|