@aztec/prover-client 0.0.1-commit.b9865e97 → 0.0.1-commit.be03c316
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/light/lightweight_checkpoint_builder.d.ts +1 -1
- package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
- package/dest/light/lightweight_checkpoint_builder.js +3 -1
- package/dest/mocks/test_context.d.ts +9 -11
- package/dest/mocks/test_context.d.ts.map +1 -1
- package/dest/mocks/test_context.js +13 -22
- package/dest/orchestrator/block-building-helpers.d.ts +1 -1
- package/dest/orchestrator/checkpoint-proving-state.d.ts +13 -36
- package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/checkpoint-proving-state.js +18 -125
- package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts +116 -62
- package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/checkpoint-sub-tree-orchestrator.js +1005 -90
- package/dest/orchestrator/chonk-cache.d.ts +39 -0
- package/dest/orchestrator/chonk-cache.d.ts.map +1 -0
- package/dest/orchestrator/chonk-cache.js +80 -0
- package/dest/orchestrator/index.d.ts +2 -3
- package/dest/orchestrator/index.d.ts.map +1 -1
- package/dest/orchestrator/index.js +1 -2
- package/dest/orchestrator/proving-scheduler.d.ts +26 -17
- package/dest/orchestrator/proving-scheduler.d.ts.map +1 -1
- package/dest/orchestrator/proving-scheduler.js +28 -25
- package/dest/orchestrator/top-tree-orchestrator.d.ts +11 -6
- package/dest/orchestrator/top-tree-orchestrator.d.ts.map +1 -1
- package/dest/orchestrator/top-tree-orchestrator.js +71 -21
- package/dest/orchestrator/top-tree-proving-state.d.ts +1 -1
- package/dest/orchestrator/top-tree-proving-state.d.ts.map +1 -1
- package/dest/orchestrator/tx-proving-state.d.ts +3 -3
- package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
- package/dest/prover-client/prover-client.d.ts +17 -19
- package/dest/prover-client/prover-client.d.ts.map +1 -1
- package/dest/prover-client/prover-client.js +24 -25
- package/dest/proving_broker/broker_prover_facade.d.ts +3 -3
- package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
- package/dest/test/epoch_settlement.d.ts +36 -0
- package/dest/test/epoch_settlement.d.ts.map +1 -0
- package/dest/test/epoch_settlement.js +52 -0
- package/dest/test/index.d.ts +2 -0
- package/dest/test/index.d.ts.map +1 -0
- package/dest/test/index.js +1 -0
- package/dest/test/mock_prover.d.ts +1 -1
- package/dest/test/mock_prover.js +2 -2
- package/package.json +17 -16
- package/src/light/lightweight_checkpoint_builder.ts +2 -0
- package/src/mocks/test_context.ts +14 -34
- package/src/orchestrator/checkpoint-proving-state.ts +14 -168
- package/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +902 -129
- package/src/orchestrator/chonk-cache.ts +99 -0
- package/src/orchestrator/index.ts +1 -2
- package/src/orchestrator/proving-scheduler.ts +29 -25
- package/src/orchestrator/top-tree-orchestrator.ts +114 -44
- package/src/orchestrator/top-tree-proving-state.ts +0 -1
- package/src/orchestrator/tx-proving-state.ts +3 -3
- package/src/prover-client/prover-client.ts +35 -49
- package/src/proving_broker/broker_prover_facade.ts +2 -2
- package/src/test/epoch_settlement.ts +82 -0
- package/src/test/index.ts +1 -0
- package/src/test/mock_prover.ts +2 -2
- package/dest/orchestrator/epoch-proving-context.d.ts +0 -51
- package/dest/orchestrator/epoch-proving-context.d.ts.map +0 -1
- package/dest/orchestrator/epoch-proving-context.js +0 -81
- package/dest/orchestrator/epoch-proving-state.d.ts +0 -75
- package/dest/orchestrator/epoch-proving-state.d.ts.map +0 -1
- package/dest/orchestrator/epoch-proving-state.js +0 -269
- package/dest/orchestrator/orchestrator.d.ts +0 -118
- package/dest/orchestrator/orchestrator.d.ts.map +0 -1
- package/dest/orchestrator/orchestrator.js +0 -1113
- package/dest/orchestrator/top-tree-proving-scheduler.d.ts +0 -62
- package/dest/orchestrator/top-tree-proving-scheduler.d.ts.map +0 -1
- package/dest/orchestrator/top-tree-proving-scheduler.js +0 -73
- package/dest/prover-client/server-epoch-prover.d.ts +0 -32
- package/dest/prover-client/server-epoch-prover.d.ts.map +0 -1
- package/dest/prover-client/server-epoch-prover.js +0 -40
- package/src/orchestrator/epoch-proving-context.ts +0 -101
- package/src/orchestrator/epoch-proving-state.ts +0 -380
- package/src/orchestrator/orchestrator.ts +0 -1111
- package/src/orchestrator/top-tree-proving-scheduler.ts +0 -154
- package/src/prover-client/server-epoch-prover.ts +0 -69
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import type { NESTED_RECURSIVE_PROOF_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
|
|
2
|
-
import type { EpochNumber } from '@aztec/foundation/branded-types';
|
|
3
|
-
import type { LoggerBindings } from '@aztec/foundation/log';
|
|
4
|
-
import type { TreeNodeLocation } from '@aztec/foundation/trees';
|
|
5
|
-
import type { PublicInputsAndRecursiveProof, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
6
|
-
import type { CheckpointMergeRollupPrivateInputs, CheckpointPaddingRollupPrivateInputs, CheckpointRollupPublicInputs, RootRollupPrivateInputs, RootRollupPublicInputs } from '@aztec/stdlib/rollup';
|
|
7
|
-
import { ProvingScheduler, type ProvingStateLike } from './proving-scheduler.js';
|
|
8
|
-
type CheckpointRollupProof = PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>;
|
|
9
|
-
type RootRollupProof = PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>;
|
|
10
|
-
/**
|
|
11
|
-
* State interface required by the top-tree proving drivers (checkpoint-merge → padding →
|
|
12
|
-
* root-rollup). Both `EpochProvingState` and `TopTreeProvingState` satisfy it structurally;
|
|
13
|
-
* the per-checkpoint state in `EpochProvingState` (block/tx proving, world-state forks)
|
|
14
|
-
* is owned outside this surface.
|
|
15
|
-
*/
|
|
16
|
-
export interface TopTreeStateLike extends ProvingStateLike {
|
|
17
|
-
readonly epochNumber: EpochNumber;
|
|
18
|
-
readonly totalNumCheckpoints: number;
|
|
19
|
-
tryStartProvingCheckpointMerge(location: TreeNodeLocation): boolean;
|
|
20
|
-
setCheckpointMergeRollupProof(location: TreeNodeLocation, provingOutput: CheckpointRollupProof): void;
|
|
21
|
-
isReadyForCheckpointMerge(location: TreeNodeLocation): boolean;
|
|
22
|
-
getParentLocation(location: TreeNodeLocation): TreeNodeLocation;
|
|
23
|
-
getCheckpointMergeRollupInputs(location: TreeNodeLocation): CheckpointMergeRollupPrivateInputs;
|
|
24
|
-
tryStartProvingPaddingCheckpoint(): boolean;
|
|
25
|
-
setCheckpointPaddingProof(provingOutput: CheckpointRollupProof): void;
|
|
26
|
-
getPaddingCheckpointInputs(): CheckpointPaddingRollupPrivateInputs;
|
|
27
|
-
tryStartProvingRootRollup(): boolean;
|
|
28
|
-
setRootRollupProof(provingOutput: RootRollupProof): void;
|
|
29
|
-
isReadyForRootRollup(): boolean;
|
|
30
|
-
getRootRollupInputs(): RootRollupPrivateInputs;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Shared scheduling for the top-tree section of epoch proving — checkpoint-merge,
|
|
34
|
-
* padding (single-checkpoint case), and root rollup. Both `ProvingOrchestrator` and
|
|
35
|
-
* `TopTreeOrchestrator` extend this; their per-checkpoint-root drivers diverge (one
|
|
36
|
-
* drains state-derived inputs once block-merge is done, the other builds inputs from
|
|
37
|
-
* caller-supplied checkpoint data), but the rest of the tree is identical.
|
|
38
|
-
*
|
|
39
|
-
* Subclasses provide a `wrapCircuitCall` hook for telemetry (the orchestrator wraps
|
|
40
|
-
* each call in a span; the top-tree leaves it as identity), and an
|
|
41
|
-
* `onRootRollupComplete` hook to invoke the right shape of `state.resolve()` —
|
|
42
|
-
* `EpochProvingState.resolve` takes a `ProvingResult`, `TopTreeProvingState.resolve`
|
|
43
|
-
* is no-arg.
|
|
44
|
-
*/
|
|
45
|
-
export declare abstract class TopTreeProvingScheduler extends ProvingScheduler {
|
|
46
|
-
protected readonly prover: ServerCircuitProver;
|
|
47
|
-
constructor(prover: ServerCircuitProver, enqueueConcurrency: number, loggerName?: string, bindings?: LoggerBindings);
|
|
48
|
-
/**
|
|
49
|
-
* Wraps a circuit call for telemetry. Default is identity; the orchestrator overrides
|
|
50
|
-
* to wrap with `wrapCallbackInSpan`.
|
|
51
|
-
*/
|
|
52
|
-
protected wrapCircuitCall<T>(_circuitName: string, fn: (signal: AbortSignal) => Promise<T>): (signal: AbortSignal) => Promise<T>;
|
|
53
|
-
/** Called once the root rollup proof has been set; subclasses call `state.resolve(...)` with the right shape. */
|
|
54
|
-
protected abstract onRootRollupComplete(state: TopTreeStateLike): void;
|
|
55
|
-
protected enqueueCheckpointMergeRollup(state: TopTreeStateLike, location: TreeNodeLocation): void;
|
|
56
|
-
protected enqueueEpochPadding(state: TopTreeStateLike): void;
|
|
57
|
-
protected enqueueRootRollup(state: TopTreeStateLike): void;
|
|
58
|
-
protected checkAndEnqueueNextCheckpointMergeRollup(state: TopTreeStateLike, currentLocation: TreeNodeLocation): void;
|
|
59
|
-
protected checkAndEnqueueRootRollup(state: TopTreeStateLike): void;
|
|
60
|
-
}
|
|
61
|
-
export {};
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLXRyZWUtcHJvdmluZy1zY2hlZHVsZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvdG9wLXRyZWUtcHJvdmluZy1zY2hlZHVsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUseUNBQXlDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqSCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUcsT0FBTyxLQUFLLEVBQ1Ysa0NBQWtDLEVBQ2xDLG9DQUFvQyxFQUNwQyw0QkFBNEIsRUFDNUIsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN2QixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakYsS0FBSyxxQkFBcUIsR0FBRyw2QkFBNkIsQ0FDeEQsNEJBQTRCLEVBQzVCLE9BQU8seUNBQXlDLENBQ2pELENBQUM7QUFFRixLQUFLLGVBQWUsR0FBRyw2QkFBNkIsQ0FBQyxzQkFBc0IsRUFBRSxPQUFPLDZCQUE2QixDQUFDLENBQUM7QUFFbkg7Ozs7O0dBS0c7QUFDSCxNQUFNLFdBQVcsZ0JBQWlCLFNBQVEsZ0JBQWdCO0lBQ3hELFFBQVEsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQ2xDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUM7SUFFckMsOEJBQThCLENBQUMsUUFBUSxFQUFFLGdCQUFnQixHQUFHLE9BQU8sQ0FBQztJQUNwRSw2QkFBNkIsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixHQUFHLElBQUksQ0FBQztJQUN0Ryx5QkFBeUIsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0lBQy9ELGlCQUFpQixDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztJQUNoRSw4QkFBOEIsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEdBQUcsa0NBQWtDLENBQUM7SUFFL0YsZ0NBQWdDLElBQUksT0FBTyxDQUFDO0lBQzVDLHlCQUF5QixDQUFDLGFBQWEsRUFBRSxxQkFBcUIsR0FBRyxJQUFJLENBQUM7SUFDdEUsMEJBQTBCLElBQUksb0NBQW9DLENBQUM7SUFFbkUseUJBQXlCLElBQUksT0FBTyxDQUFDO0lBQ3JDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQ3pELG9CQUFvQixJQUFJLE9BQU8sQ0FBQztJQUNoQyxtQkFBbUIsSUFBSSx1QkFBdUIsQ0FBQztDQUNoRDtBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILDhCQUFzQix1QkFBd0IsU0FBUSxnQkFBZ0I7SUFFbEUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CO0lBRGhELFlBQ3FCLE1BQU0sRUFBRSxtQkFBbUIsRUFDOUMsa0JBQWtCLEVBQUUsTUFBTSxFQUMxQixVQUFVLENBQUMsRUFBRSxNQUFNLEVBQ25CLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHMUI7SUFFRDs7O09BR0c7SUFDSCxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsRUFDekIsWUFBWSxFQUFFLE1BQU0sRUFDcEIsRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQ3RDLENBQUMsTUFBTSxFQUFFLFdBQVcsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBRXJDO0lBRUQsaUhBQWlIO0lBQ2pILFNBQVMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUV2RSxTQUFTLENBQUMsNEJBQTRCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsUUFlekY7SUFFRCxTQUFTLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLGdCQUFnQixRQWVwRDtJQUVELFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLFFBY2xEO0lBRUQsU0FBUyxDQUFDLHdDQUF3QyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLFFBVTVHO0lBRUQsU0FBUyxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsUUFLMUQ7Q0FDRiJ9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"top-tree-proving-scheduler.d.ts","sourceRoot":"","sources":["../../src/orchestrator/top-tree-proving-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,yCAAyC,EAAE,MAAM,kBAAkB,CAAC;AACjH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC1G,OAAO,KAAK,EACV,kCAAkC,EAClC,oCAAoC,EACpC,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEjF,KAAK,qBAAqB,GAAG,6BAA6B,CACxD,4BAA4B,EAC5B,OAAO,yCAAyC,CACjD,CAAC;AAEF,KAAK,eAAe,GAAG,6BAA6B,CAAC,sBAAsB,EAAE,OAAO,6BAA6B,CAAC,CAAC;AAEnH;;;;;GAKG;AACH,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IAErC,8BAA8B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC;IACpE,6BAA6B,CAAC,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACtG,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC;IAC/D,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IAChE,8BAA8B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,kCAAkC,CAAC;IAE/F,gCAAgC,IAAI,OAAO,CAAC;IAC5C,yBAAyB,CAAC,aAAa,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACtE,0BAA0B,IAAI,oCAAoC,CAAC;IAEnE,yBAAyB,IAAI,OAAO,CAAC;IACrC,kBAAkB,CAAC,aAAa,EAAE,eAAe,GAAG,IAAI,CAAC;IACzD,oBAAoB,IAAI,OAAO,CAAC;IAChC,mBAAmB,IAAI,uBAAuB,CAAC;CAChD;AAED;;;;;;;;;;;;GAYG;AACH,8BAAsB,uBAAwB,SAAQ,gBAAgB;IAElE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,mBAAmB;IADhD,YACqB,MAAM,EAAE,mBAAmB,EAC9C,kBAAkB,EAAE,MAAM,EAC1B,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAED;;;OAGG;IACH,SAAS,CAAC,eAAe,CAAC,CAAC,EACzB,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GACtC,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAErC;IAED,iHAAiH;IACjH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAEvE,SAAS,CAAC,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,QAezF;IAED,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,QAepD;IAED,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,QAclD;IAED,SAAS,CAAC,wCAAwC,CAAC,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,QAU5G;IAED,SAAS,CAAC,yBAAyB,CAAC,KAAK,EAAE,gBAAgB,QAK1D;CACF"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { ProvingScheduler } from './proving-scheduler.js';
|
|
2
|
-
/**
|
|
3
|
-
* Shared scheduling for the top-tree section of epoch proving — checkpoint-merge,
|
|
4
|
-
* padding (single-checkpoint case), and root rollup. Both `ProvingOrchestrator` and
|
|
5
|
-
* `TopTreeOrchestrator` extend this; their per-checkpoint-root drivers diverge (one
|
|
6
|
-
* drains state-derived inputs once block-merge is done, the other builds inputs from
|
|
7
|
-
* caller-supplied checkpoint data), but the rest of the tree is identical.
|
|
8
|
-
*
|
|
9
|
-
* Subclasses provide a `wrapCircuitCall` hook for telemetry (the orchestrator wraps
|
|
10
|
-
* each call in a span; the top-tree leaves it as identity), and an
|
|
11
|
-
* `onRootRollupComplete` hook to invoke the right shape of `state.resolve()` —
|
|
12
|
-
* `EpochProvingState.resolve` takes a `ProvingResult`, `TopTreeProvingState.resolve`
|
|
13
|
-
* is no-arg.
|
|
14
|
-
*/ export class TopTreeProvingScheduler extends ProvingScheduler {
|
|
15
|
-
prover;
|
|
16
|
-
constructor(prover, enqueueConcurrency, loggerName, bindings){
|
|
17
|
-
super(enqueueConcurrency, loggerName, bindings), this.prover = prover;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Wraps a circuit call for telemetry. Default is identity; the orchestrator overrides
|
|
21
|
-
* to wrap with `wrapCallbackInSpan`.
|
|
22
|
-
*/ wrapCircuitCall(_circuitName, fn) {
|
|
23
|
-
return fn;
|
|
24
|
-
}
|
|
25
|
-
enqueueCheckpointMergeRollup(state, location) {
|
|
26
|
-
if (!state.verifyState() || !state.tryStartProvingCheckpointMerge(location)) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
const inputs = state.getCheckpointMergeRollupInputs(location);
|
|
30
|
-
this.deferredProving(state, this.wrapCircuitCall('rollup-checkpoint-merge', (signal)=>this.prover.getCheckpointMergeRollupProof(inputs, signal, state.epochNumber)), (result)=>{
|
|
31
|
-
state.setCheckpointMergeRollupProof(location, result);
|
|
32
|
-
this.checkAndEnqueueNextCheckpointMergeRollup(state, location);
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
enqueueEpochPadding(state) {
|
|
36
|
-
if (!state.verifyState() || !state.tryStartProvingPaddingCheckpoint()) {
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
const inputs = state.getPaddingCheckpointInputs();
|
|
40
|
-
this.deferredProving(state, this.wrapCircuitCall('rollup-checkpoint-padding', (signal)=>this.prover.getCheckpointPaddingRollupProof(inputs, signal, state.epochNumber)), (result)=>{
|
|
41
|
-
state.setCheckpointPaddingProof(result);
|
|
42
|
-
this.checkAndEnqueueRootRollup(state);
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
enqueueRootRollup(state) {
|
|
46
|
-
if (!state.verifyState() || !state.tryStartProvingRootRollup()) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
const inputs = state.getRootRollupInputs();
|
|
50
|
-
this.deferredProving(state, this.wrapCircuitCall('rollup-root', (signal)=>this.prover.getRootRollupProof(inputs, signal, state.epochNumber)), (result)=>{
|
|
51
|
-
this.logger.verbose(`Completed root rollup for epoch ${state.epochNumber}`);
|
|
52
|
-
state.setRootRollupProof(result);
|
|
53
|
-
this.onRootRollupComplete(state);
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
checkAndEnqueueNextCheckpointMergeRollup(state, currentLocation) {
|
|
57
|
-
if (!state.isReadyForCheckpointMerge(currentLocation)) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
const parentLocation = state.getParentLocation(currentLocation);
|
|
61
|
-
if (parentLocation.level === 0) {
|
|
62
|
-
this.checkAndEnqueueRootRollup(state);
|
|
63
|
-
} else {
|
|
64
|
-
this.enqueueCheckpointMergeRollup(state, parentLocation);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
checkAndEnqueueRootRollup(state) {
|
|
68
|
-
if (!state.isReadyForRootRollup()) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
this.enqueueRootRollup(state);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import type { BatchedBlob, FinalBlobBatchingChallenges } from '@aztec/blob-lib/types';
|
|
2
|
-
import { BlockNumber, EpochNumber } from '@aztec/foundation/branded-types';
|
|
3
|
-
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
|
-
import type { EthAddress } from '@aztec/stdlib/block';
|
|
5
|
-
import type { EpochProver } from '@aztec/stdlib/interfaces/server';
|
|
6
|
-
import type { Proof } from '@aztec/stdlib/proofs';
|
|
7
|
-
import type { CheckpointConstantData, RootRollupPublicInputs } from '@aztec/stdlib/rollup';
|
|
8
|
-
import type { BlockHeader, ProcessedTx, Tx } from '@aztec/stdlib/tx';
|
|
9
|
-
import type { UInt64 } from '@aztec/stdlib/types';
|
|
10
|
-
import type { ProvingOrchestrator } from '../orchestrator/orchestrator.js';
|
|
11
|
-
import type { BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
|
|
12
|
-
/** Encapsulates the proving orchestrator and the broker facade */
|
|
13
|
-
export declare class ServerEpochProver implements EpochProver {
|
|
14
|
-
private facade;
|
|
15
|
-
private orchestrator;
|
|
16
|
-
constructor(facade: BrokerCircuitProverFacade, orchestrator: ProvingOrchestrator);
|
|
17
|
-
startNewEpoch(epochNumber: EpochNumber, totalNumCheckpoints: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges): void;
|
|
18
|
-
startNewCheckpoint(checkpointIndex: number, constants: CheckpointConstantData, l1ToL2Messages: Fr[], totalNumBlocks: number, headerOfLastBlockInPreviousCheckpoint: BlockHeader): Promise<void>;
|
|
19
|
-
startChonkVerifierCircuits(txs: Tx[]): Promise<void>;
|
|
20
|
-
setBlockCompleted(blockNumber: BlockNumber, expectedBlockHeader?: BlockHeader): Promise<BlockHeader>;
|
|
21
|
-
finalizeEpoch(): Promise<{
|
|
22
|
-
publicInputs: RootRollupPublicInputs;
|
|
23
|
-
proof: Proof;
|
|
24
|
-
batchedBlobInputs: BatchedBlob;
|
|
25
|
-
}>;
|
|
26
|
-
cancel(): void;
|
|
27
|
-
getProverId(): EthAddress;
|
|
28
|
-
stop(): Promise<void>;
|
|
29
|
-
startNewBlock(blockNumber: BlockNumber, timestamp: UInt64, totalNumTxs: number): Promise<void>;
|
|
30
|
-
addTxs(txs: ProcessedTx[]): Promise<void>;
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWVwb2NoLXByb3Zlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Byb3Zlci1jbGllbnQvc2VydmVyLWVwb2NoLXByb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNFLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0YsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNFLE9BQU8sS0FBSyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFM0Ysa0VBQWtFO0FBQ2xFLHFCQUFhLGlCQUFrQixZQUFXLFdBQVc7SUFFakQsT0FBTyxDQUFDLE1BQU07SUFDZCxPQUFPLENBQUMsWUFBWTtJQUZ0QixZQUNVLE1BQU0sRUFBRSx5QkFBeUIsRUFDakMsWUFBWSxFQUFFLG1CQUFtQixFQUN2QztJQUVKLGFBQWEsQ0FDWCxXQUFXLEVBQUUsV0FBVyxFQUN4QixtQkFBbUIsRUFBRSxNQUFNLEVBQzNCLDJCQUEyQixFQUFFLDJCQUEyQixHQUN2RCxJQUFJLENBR047SUFDRCxrQkFBa0IsQ0FDaEIsZUFBZSxFQUFFLE1BQU0sRUFDdkIsU0FBUyxFQUFFLHNCQUFzQixFQUNqQyxjQUFjLEVBQUUsRUFBRSxFQUFFLEVBQ3BCLGNBQWMsRUFBRSxNQUFNLEVBQ3RCLHFDQUFxQyxFQUFFLFdBQVcsR0FDakQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQVFmO0lBQ0QsMEJBQTBCLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFbkQ7SUFDRCxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixDQUFDLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FFbkc7SUFDRCxhQUFhLElBQUksT0FBTyxDQUFDO1FBQUUsWUFBWSxFQUFFLHNCQUFzQixDQUFDO1FBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztRQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQTtLQUFFLENBQUMsQ0FFL0c7SUFDRCxNQUFNLElBQUksSUFBSSxDQUViO0lBQ0QsV0FBVyxJQUFJLFVBQVUsQ0FFeEI7SUFDSyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUcxQjtJQUNELGFBQWEsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRTdGO0lBQ0QsTUFBTSxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBRXhDO0NBQ0YifQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server-epoch-prover.d.ts","sourceRoot":"","sources":["../../src/prover-client/server-epoch-prover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAE3F,kEAAkE;AAClE,qBAAa,iBAAkB,YAAW,WAAW;IAEjD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IAFtB,YACU,MAAM,EAAE,yBAAyB,EACjC,YAAY,EAAE,mBAAmB,EACvC;IAEJ,aAAa,CACX,WAAW,EAAE,WAAW,EACxB,mBAAmB,EAAE,MAAM,EAC3B,2BAA2B,EAAE,2BAA2B,GACvD,IAAI,CAGN;IACD,kBAAkB,CAChB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,sBAAsB,EACjC,cAAc,EAAE,EAAE,EAAE,EACpB,cAAc,EAAE,MAAM,EACtB,qCAAqC,EAAE,WAAW,GACjD,OAAO,CAAC,IAAI,CAAC,CAQf;IACD,0BAA0B,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnD;IACD,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,mBAAmB,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAEnG;IACD,aAAa,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,sBAAsB,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;QAAC,iBAAiB,EAAE,WAAW,CAAA;KAAE,CAAC,CAE/G;IACD,MAAM,IAAI,IAAI,CAEb;IACD,WAAW,IAAI,UAAU,CAExB;IACK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAG1B;IACD,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F;IACD,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAExC;CACF"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/** Encapsulates the proving orchestrator and the broker facade */ export class ServerEpochProver {
|
|
2
|
-
facade;
|
|
3
|
-
orchestrator;
|
|
4
|
-
constructor(facade, orchestrator){
|
|
5
|
-
this.facade = facade;
|
|
6
|
-
this.orchestrator = orchestrator;
|
|
7
|
-
}
|
|
8
|
-
startNewEpoch(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges) {
|
|
9
|
-
this.orchestrator.startNewEpoch(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges);
|
|
10
|
-
this.facade.start();
|
|
11
|
-
}
|
|
12
|
-
startNewCheckpoint(checkpointIndex, constants, l1ToL2Messages, totalNumBlocks, headerOfLastBlockInPreviousCheckpoint) {
|
|
13
|
-
return this.orchestrator.startNewCheckpoint(checkpointIndex, constants, l1ToL2Messages, totalNumBlocks, headerOfLastBlockInPreviousCheckpoint);
|
|
14
|
-
}
|
|
15
|
-
startChonkVerifierCircuits(txs) {
|
|
16
|
-
return this.orchestrator.startChonkVerifierCircuits(txs);
|
|
17
|
-
}
|
|
18
|
-
setBlockCompleted(blockNumber, expectedBlockHeader) {
|
|
19
|
-
return this.orchestrator.setBlockCompleted(blockNumber, expectedBlockHeader);
|
|
20
|
-
}
|
|
21
|
-
finalizeEpoch() {
|
|
22
|
-
return this.orchestrator.finalizeEpoch();
|
|
23
|
-
}
|
|
24
|
-
cancel() {
|
|
25
|
-
this.orchestrator.cancel();
|
|
26
|
-
}
|
|
27
|
-
getProverId() {
|
|
28
|
-
return this.orchestrator.getProverId();
|
|
29
|
-
}
|
|
30
|
-
async stop() {
|
|
31
|
-
await this.facade.stop();
|
|
32
|
-
await this.orchestrator.stop();
|
|
33
|
-
}
|
|
34
|
-
startNewBlock(blockNumber, timestamp, totalNumTxs) {
|
|
35
|
-
return this.orchestrator.startNewBlock(blockNumber, timestamp, totalNumTxs);
|
|
36
|
-
}
|
|
37
|
-
addTxs(txs) {
|
|
38
|
-
return this.orchestrator.addTxs(txs);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import type { NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
|
|
2
|
-
import type { EpochNumber } from '@aztec/foundation/branded-types';
|
|
3
|
-
import { type Logger, type LoggerBindings, createLogger } from '@aztec/foundation/log';
|
|
4
|
-
import type { PublicInputsAndRecursiveProof, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
5
|
-
import type { PublicChonkVerifierPrivateInputs, PublicChonkVerifierPublicInputs } from '@aztec/stdlib/rollup';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Result of a chonk-verifier proof, cached per tx hash on `EpochProvingContext`.
|
|
9
|
-
*/
|
|
10
|
-
export type ChonkVerifierProofResult = PublicInputsAndRecursiveProof<
|
|
11
|
-
PublicChonkVerifierPublicInputs,
|
|
12
|
-
typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
|
|
13
|
-
>;
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Per-epoch state shared across every `CheckpointSubTreeOrchestrator` constructed for
|
|
17
|
-
* the same epoch. Owns the chonk-verifier proof cache so a tx whose checkpoint is
|
|
18
|
-
* reorged out and re-appears in a replacement checkpoint does not have to re-prove
|
|
19
|
-
* its chonk circuit.
|
|
20
|
-
*
|
|
21
|
-
* The context's chonk-verifier broker jobs are deliberately submitted **outside** the
|
|
22
|
-
* sub-tree's deferred-proving queue. The sub-tree's `cancel()` therefore does not abort
|
|
23
|
-
* them — by design, because their result is tx-scoped, not sub-tree-scoped, and a
|
|
24
|
-
* replacement sub-tree should be able to consume the cached proof.
|
|
25
|
-
*
|
|
26
|
-
* Callers (`EpochProvingJob`, or unit tests) construct one context per epoch and pass
|
|
27
|
-
* it into every sub-tree they create. `stop()` aborts every in-flight chonk job.
|
|
28
|
-
*/
|
|
29
|
-
export class EpochProvingContext {
|
|
30
|
-
private readonly cache = new Map<string, Promise<ChonkVerifierProofResult>>();
|
|
31
|
-
/** Abort controllers for in-flight chonk jobs, keyed by tx hash. */
|
|
32
|
-
private readonly pending = new Map<string, AbortController>();
|
|
33
|
-
private readonly log: Logger;
|
|
34
|
-
private stopped = false;
|
|
35
|
-
|
|
36
|
-
constructor(
|
|
37
|
-
private readonly prover: ServerCircuitProver,
|
|
38
|
-
public readonly epochNumber: EpochNumber,
|
|
39
|
-
bindings?: LoggerBindings,
|
|
40
|
-
) {
|
|
41
|
-
this.log = createLogger('prover-client:epoch-proving-context', bindings);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Returns the cached chonk-verifier proof promise for the given tx hash, or
|
|
46
|
-
* `undefined` if none has been enqueued yet. Non-mutating.
|
|
47
|
-
*/
|
|
48
|
-
public getCached(txHash: string): Promise<ChonkVerifierProofResult> | undefined {
|
|
49
|
-
return this.cache.get(txHash);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Enqueues a chonk-verifier proof for the given tx hash, returning the promise (or
|
|
54
|
-
* the already-cached one if already enqueued). The promise resolves when the broker
|
|
55
|
-
* delivers the result; on rejection (including `stop()`), the cache entry is removed
|
|
56
|
-
* so a subsequent caller can re-enqueue.
|
|
57
|
-
*/
|
|
58
|
-
public enqueue(txHash: string, inputs: PublicChonkVerifierPrivateInputs): Promise<ChonkVerifierProofResult> {
|
|
59
|
-
if (this.stopped) {
|
|
60
|
-
return Promise.reject(new Error('EpochProvingContext is stopped'));
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
const cached = this.cache.get(txHash);
|
|
64
|
-
if (cached) {
|
|
65
|
-
return cached;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const controller = new AbortController();
|
|
69
|
-
this.pending.set(txHash, controller);
|
|
70
|
-
this.log.debug(`Enqueueing chonk-verifier circuit`, { txHash, epochNumber: this.epochNumber });
|
|
71
|
-
|
|
72
|
-
const promise = this.prover
|
|
73
|
-
.getPublicChonkVerifierProof(inputs, controller.signal, this.epochNumber)
|
|
74
|
-
.finally(() => this.pending.delete(txHash));
|
|
75
|
-
|
|
76
|
-
// Self-clean on rejection so a future caller can re-enqueue. Mark the rejection
|
|
77
|
-
// path as observed to silence unhandled-rejection warnings when no consumer
|
|
78
|
-
// awaits the promise (e.g. when the only `.then` chain belonged to a cancelled
|
|
79
|
-
// sub-tree's tx-proving state).
|
|
80
|
-
promise.catch(err => {
|
|
81
|
-
this.cache.delete(txHash);
|
|
82
|
-
this.log.debug(`Chonk-verifier proof failed; evicted from cache`, { txHash, error: `${err}` });
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
this.cache.set(txHash, promise);
|
|
86
|
-
return promise;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Aborts every in-flight chonk-verifier broker job and clears the cache. Called by
|
|
91
|
-
* the owning `EpochProvingJob` when the job stops.
|
|
92
|
-
*/
|
|
93
|
-
public stop() {
|
|
94
|
-
this.stopped = true;
|
|
95
|
-
for (const controller of this.pending.values()) {
|
|
96
|
-
controller.abort();
|
|
97
|
-
}
|
|
98
|
-
this.pending.clear();
|
|
99
|
-
this.cache.clear();
|
|
100
|
-
}
|
|
101
|
-
}
|