@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
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
|
|
2
|
+
import { type LoggerBindings } from '@aztec/foundation/log';
|
|
3
|
+
import type { L2Block } from '@aztec/stdlib/block';
|
|
4
|
+
import type { PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
5
|
+
import type { PublicChonkVerifierPublicInputs } from '@aztec/stdlib/rollup';
|
|
6
|
+
/** Result of a chonk-verifier proof, cached by tx hash. */
|
|
7
|
+
export type ChonkVerifierProofResult = PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>;
|
|
8
|
+
/**
|
|
9
|
+
* Shared cache of `getPublicChonkVerifierProof` results, keyed by tx hash.
|
|
10
|
+
*
|
|
11
|
+
* Owned by the prover-node and shared across every epoch / session: a tx remined into
|
|
12
|
+
* a different block (e.g. after a brief L1 reorg) reuses the already-computed chonk
|
|
13
|
+
* proof rather than redoing it. Entries are released via `releaseForBlocks` once the
|
|
14
|
+
* containing block is no longer interesting to the caller (e.g. its epoch's proof
|
|
15
|
+
* submission window has expired).
|
|
16
|
+
*/
|
|
17
|
+
export declare class ChonkCache {
|
|
18
|
+
private readonly cache;
|
|
19
|
+
private readonly pending;
|
|
20
|
+
private readonly log;
|
|
21
|
+
private stopped;
|
|
22
|
+
constructor(bindings?: LoggerBindings);
|
|
23
|
+
/** Returns the cached promise for `txHash`, or `undefined` if none is registered. */
|
|
24
|
+
get(txHash: string): Promise<ChonkVerifierProofResult> | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Atomic get-or-compute: returns the cached promise for `txHash`, or runs `factory`
|
|
27
|
+
* (passing an AbortSignal the cache controls) and caches its result. Concurrent
|
|
28
|
+
* callers for the same `txHash` share the same promise.
|
|
29
|
+
*
|
|
30
|
+
* Rejected promises are evicted so a future caller can retry. The factory's
|
|
31
|
+
* AbortSignal fires when the cache is stopped.
|
|
32
|
+
*/
|
|
33
|
+
getOrCompute(txHash: string, factory: (signal: AbortSignal) => Promise<ChonkVerifierProofResult>): Promise<ChonkVerifierProofResult>;
|
|
34
|
+
/** Drops cache entries for every tx in the supplied blocks. */
|
|
35
|
+
releaseForBlocks(blocks: L2Block[]): void;
|
|
36
|
+
/** Aborts every in-flight chonk-verifier job and clears the cache. */
|
|
37
|
+
stop(): void;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvbmstY2FjaGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvY2hvbmstY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUseUNBQXlDLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRixPQUFPLEVBQWUsS0FBSyxjQUFjLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDdkYsT0FBTyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEtBQUssRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTVFLDJEQUEyRDtBQUMzRCxNQUFNLE1BQU0sd0JBQXdCLEdBQUcsNkJBQTZCLENBQ2xFLCtCQUErQixFQUMvQixPQUFPLHlDQUF5QyxDQUNqRCxDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxxQkFBYSxVQUFVO0lBQ3JCLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUF3RDtJQUM5RSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBc0M7SUFDOUQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQVM7SUFDN0IsT0FBTyxDQUFDLE9BQU8sQ0FBUztJQUV4QixZQUFZLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFFcEM7SUFFRCxxRkFBcUY7SUFDOUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDLEdBQUcsU0FBUyxDQUV4RTtJQUVEOzs7Ozs7O09BT0c7SUFDSSxZQUFZLENBQ2pCLE1BQU0sRUFBRSxNQUFNLEVBQ2QsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsS0FBSyxPQUFPLENBQUMsd0JBQXdCLENBQUMsR0FDbEUsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBbUJuQztJQUVELCtEQUErRDtJQUN4RCxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQWUvQztJQUVELHNFQUFzRTtJQUMvRCxJQUFJLElBQUksSUFBSSxDQVVsQjtDQUNGIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chonk-cache.d.ts","sourceRoot":"","sources":["../../src/orchestrator/chonk-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yCAAyC,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAE5E,2DAA2D;AAC3D,MAAM,MAAM,wBAAwB,GAAG,6BAA6B,CAClE,+BAA+B,EAC/B,OAAO,yCAAyC,CACjD,CAAC;AAEF;;;;;;;;GAQG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwD;IAC9E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;IAExB,YAAY,QAAQ,CAAC,EAAE,cAAc,EAEpC;IAED,qFAAqF;IAC9E,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAExE;IAED;;;;;;;OAOG;IACI,YAAY,CACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,wBAAwB,CAAC,GAClE,OAAO,CAAC,wBAAwB,CAAC,CAmBnC;IAED,+DAA+D;IACxD,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAe/C;IAED,sEAAsE;IAC/D,IAAI,IAAI,IAAI,CAUlB;CACF"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { createLogger } from '@aztec/foundation/log';
|
|
2
|
+
/**
|
|
3
|
+
* Shared cache of `getPublicChonkVerifierProof` results, keyed by tx hash.
|
|
4
|
+
*
|
|
5
|
+
* Owned by the prover-node and shared across every epoch / session: a tx remined into
|
|
6
|
+
* a different block (e.g. after a brief L1 reorg) reuses the already-computed chonk
|
|
7
|
+
* proof rather than redoing it. Entries are released via `releaseForBlocks` once the
|
|
8
|
+
* containing block is no longer interesting to the caller (e.g. its epoch's proof
|
|
9
|
+
* submission window has expired).
|
|
10
|
+
*/ export class ChonkCache {
|
|
11
|
+
cache = new Map();
|
|
12
|
+
pending = new Map();
|
|
13
|
+
log;
|
|
14
|
+
stopped = false;
|
|
15
|
+
constructor(bindings){
|
|
16
|
+
this.log = createLogger('prover-client:chonk-cache', bindings);
|
|
17
|
+
}
|
|
18
|
+
/** Returns the cached promise for `txHash`, or `undefined` if none is registered. */ get(txHash) {
|
|
19
|
+
return this.cache.get(txHash);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Atomic get-or-compute: returns the cached promise for `txHash`, or runs `factory`
|
|
23
|
+
* (passing an AbortSignal the cache controls) and caches its result. Concurrent
|
|
24
|
+
* callers for the same `txHash` share the same promise.
|
|
25
|
+
*
|
|
26
|
+
* Rejected promises are evicted so a future caller can retry. The factory's
|
|
27
|
+
* AbortSignal fires when the cache is stopped.
|
|
28
|
+
*/ getOrCompute(txHash, factory) {
|
|
29
|
+
if (this.stopped) {
|
|
30
|
+
return Promise.reject(new Error('ChonkCache is stopped'));
|
|
31
|
+
}
|
|
32
|
+
const existing = this.cache.get(txHash);
|
|
33
|
+
if (existing) {
|
|
34
|
+
return existing;
|
|
35
|
+
}
|
|
36
|
+
const controller = new AbortController();
|
|
37
|
+
this.pending.set(txHash, controller);
|
|
38
|
+
this.log.debug(`Enqueueing chonk-verifier circuit`, {
|
|
39
|
+
txHash
|
|
40
|
+
});
|
|
41
|
+
const promise = factory(controller.signal).finally(()=>this.pending.delete(txHash));
|
|
42
|
+
// Silently observe the rejection branch and evict so a retry is possible.
|
|
43
|
+
promise.catch((err)=>{
|
|
44
|
+
this.cache.delete(txHash);
|
|
45
|
+
this.log.debug(`Chonk-verifier proof failed; evicted from cache`, {
|
|
46
|
+
txHash,
|
|
47
|
+
error: `${err}`
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
this.cache.set(txHash, promise);
|
|
51
|
+
return promise;
|
|
52
|
+
}
|
|
53
|
+
/** Drops cache entries for every tx in the supplied blocks. */ releaseForBlocks(blocks) {
|
|
54
|
+
let released = 0;
|
|
55
|
+
for (const block of blocks){
|
|
56
|
+
for (const txEffect of block.body.txEffects){
|
|
57
|
+
if (this.cache.delete(txEffect.txHash.toString())) {
|
|
58
|
+
released++;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (released > 0) {
|
|
63
|
+
this.log.debug(`Released ${released} chonk-verifier cache entries`, {
|
|
64
|
+
blockCount: blocks.length,
|
|
65
|
+
releasedCount: released
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/** Aborts every in-flight chonk-verifier job and clears the cache. */ stop() {
|
|
70
|
+
if (this.stopped) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
this.stopped = true;
|
|
74
|
+
for (const controller of this.pending.values()){
|
|
75
|
+
controller.abort();
|
|
76
|
+
}
|
|
77
|
+
this.pending.clear();
|
|
78
|
+
this.cache.clear();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export { ProvingOrchestrator } from './orchestrator.js';
|
|
2
1
|
export { CheckpointSubTreeOrchestrator, type SubTreeResult } from './checkpoint-sub-tree-orchestrator.js';
|
|
3
|
-
export {
|
|
2
|
+
export { ChonkCache, type ChonkVerifierProofResult } from './chonk-cache.js';
|
|
4
3
|
export { TopTreeOrchestrator, TopTreeCancelledError, type CheckpointTopTreeData, type TopTreeResult, } from './top-tree-orchestrator.js';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDZCQUE2QixFQUFFLEtBQUssYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLHdCQUF3QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsS0FBSyxxQkFBcUIsRUFDMUIsS0FBSyxhQUFhLEdBQ25CLE1BQU0sNEJBQTRCLENBQUMifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,KAAK,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC1G,OAAO,EAAE,UAAU,EAAE,KAAK,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,GACnB,MAAM,4BAA4B,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export { ProvingOrchestrator } from './orchestrator.js';
|
|
2
1
|
export { CheckpointSubTreeOrchestrator } from './checkpoint-sub-tree-orchestrator.js';
|
|
3
|
-
export {
|
|
2
|
+
export { ChonkCache } from './chonk-cache.js';
|
|
4
3
|
export { TopTreeOrchestrator, TopTreeCancelledError } from './top-tree-orchestrator.js';
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { type Logger, type LoggerBindings } from '@aztec/foundation/log';
|
|
2
|
+
import { SerialQueue } from '@aztec/foundation/queue';
|
|
2
3
|
/**
|
|
3
|
-
* Minimal surface a deferred-proving state must expose. Both `
|
|
4
|
-
* `
|
|
5
|
-
*
|
|
4
|
+
* Minimal surface a deferred-proving state must expose. Both `CheckpointProvingState` /
|
|
5
|
+
* `BlockProvingState` (used by `CheckpointSubTreeOrchestrator`) and `TopTreeProvingState`
|
|
6
|
+
* (used by `TopTreeOrchestrator`) satisfy it.
|
|
6
7
|
*/
|
|
7
8
|
export interface ProvingStateLike {
|
|
8
9
|
/** Returns false once the state has been cancelled or otherwise invalidated. */
|
|
@@ -14,7 +15,16 @@ export interface ProvingStateLike {
|
|
|
14
15
|
* Common scheduling infrastructure shared by every orchestrator that drives broker
|
|
15
16
|
* proving jobs:
|
|
16
17
|
*
|
|
17
|
-
* -
|
|
18
|
+
* - A shared `SerialQueue` (`deferredJobQueue`) that serialises the *act of handing a
|
|
19
|
+
* job to the broker*, one initiation per event-loop tick. Each queue task kicks off
|
|
20
|
+
* `safeJob` (which submits to the broker) without awaiting it, then yields with
|
|
21
|
+
* `sleep(0)`; the next task therefore runs on the following macrotask. This does NOT
|
|
22
|
+
* cap how many broker jobs are concurrently in flight — the broker's own queue absorbs
|
|
23
|
+
* that. What it bounds is the burst rate: a sub-tree that synchronously discovers
|
|
24
|
+
* thousands of ready jobs can't flood the broker (and monopolise the event loop) in a
|
|
25
|
+
* single tick. The queue is owned by the `ProverClient` and shared across every
|
|
26
|
+
* orchestrator (every sub-tree and top-tree across every concurrent epoch session), so
|
|
27
|
+
* this pacing is applied once globally rather than once-per-orchestrator.
|
|
18
28
|
* - A list of `AbortController`s (`pendingProvingJobs`) so a `cancel()` can abort
|
|
19
29
|
* in-flight broker jobs when needed.
|
|
20
30
|
* - A `deferredProving<T>(state, request, callback, isCancelled?)` method that wraps
|
|
@@ -23,24 +33,24 @@ export interface ProvingStateLike {
|
|
|
23
33
|
*
|
|
24
34
|
* Subclasses own their own concrete proving state and define `cancelInternal()` for
|
|
25
35
|
* the rest of the cleanup work (closing world-state forks, marking sub-trees
|
|
26
|
-
* cancelled, etc.).
|
|
27
|
-
*
|
|
28
|
-
*
|
|
36
|
+
* cancelled, etc.). Because the queue is shared, neither `cancel()` nor `stop()` touch
|
|
37
|
+
* it — they only abort this orchestrator's in-flight broker jobs. Queued-but-unrun jobs
|
|
38
|
+
* for a cancelled orchestrator no-op via the guards in `deferredProving`.
|
|
29
39
|
*/
|
|
30
40
|
export declare abstract class ProvingScheduler {
|
|
31
|
-
private readonly
|
|
41
|
+
private readonly deferredJobQueue;
|
|
32
42
|
protected pendingProvingJobs: AbortController[];
|
|
33
43
|
protected logger: Logger;
|
|
34
|
-
|
|
35
|
-
constructor(enqueueConcurrency: number, loggerName?: string, bindings?: LoggerBindings);
|
|
44
|
+
constructor(deferredJobQueue: SerialQueue, loggerName?: string, bindings?: LoggerBindings);
|
|
36
45
|
/** Number of broker jobs currently in flight. */
|
|
37
46
|
getNumPendingProvingJobs(): number;
|
|
38
47
|
/**
|
|
39
|
-
*
|
|
40
|
-
* optionally aborts every in-flight broker job. Aborting is the right choice on
|
|
48
|
+
* Optionally aborts every in-flight broker job. Aborting is the right choice on
|
|
41
49
|
* reorg-driven cancel (where the in-flight inputs are no longer valid) and the
|
|
42
50
|
* wrong choice on shutdown (where leaving jobs in the broker queue lets a restart
|
|
43
|
-
* pick them up).
|
|
51
|
+
* pick them up). The shared queue is not touched — queued-but-unrun jobs belonging
|
|
52
|
+
* to this orchestrator no-op once their controller is aborted (or once their state
|
|
53
|
+
* is marked invalid by the subclass).
|
|
44
54
|
*/
|
|
45
55
|
protected resetSchedulerState(abortJobs: boolean): void;
|
|
46
56
|
/**
|
|
@@ -50,9 +60,8 @@ export declare abstract class ProvingScheduler {
|
|
|
50
60
|
*/
|
|
51
61
|
protected abstract cancelInternal(): void;
|
|
52
62
|
/**
|
|
53
|
-
* Standard stop:
|
|
54
|
-
*
|
|
55
|
-
* return.
|
|
63
|
+
* Standard stop: cancel this orchestrator's work. The shared queue is owned by the
|
|
64
|
+
* `ProverClient` and outlives every orchestrator, so it is not drained here.
|
|
56
65
|
*/
|
|
57
66
|
stop(): Promise<void>;
|
|
58
67
|
/**
|
|
@@ -69,4 +78,4 @@ export declare abstract class ProvingScheduler {
|
|
|
69
78
|
*/
|
|
70
79
|
protected deferredProving<S extends ProvingStateLike, T>(state: S, request: (signal: AbortSignal) => Promise<T>, callback: (result: T) => void | Promise<void>, isCancelled?: () => boolean): void;
|
|
71
80
|
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmluZy1zY2hlZHVsZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvcHJvdmluZy1zY2hlZHVsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssTUFBTSxFQUFFLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd0RDs7OztHQUlHO0FBQ0gsTUFBTSxXQUFXLGdCQUFnQjtJQUMvQixnRkFBZ0Y7SUFDaEYsV0FBVyxJQUFJLE9BQU8sQ0FBQztJQUN2QixxREFBcUQ7SUFDckQsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDO0NBQzlCO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSCw4QkFBc0IsZ0JBQWdCO0lBS2xDLE9BQU8sQ0FBQyxRQUFRLENBQUMsZ0JBQWdCO0lBSm5DLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsQ0FBTTtJQUNyRCxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUV6QixZQUNtQixnQkFBZ0IsRUFBRSxXQUFXLEVBQzlDLFVBQVUsU0FBb0MsRUFDOUMsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUcxQjtJQUVELGlEQUFpRDtJQUMxQyx3QkFBd0IsSUFBSSxNQUFNLENBRXhDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsT0FBTyxHQUFHLElBQUksQ0FNdEQ7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLFFBQVEsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDO0lBRTFDOzs7T0FHRztJQUNJLElBQUksSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBRzNCO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxnQkFBZ0IsRUFBRSxDQUFDLEVBQ3JELEtBQUssRUFBRSxDQUFDLEVBQ1IsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQzVDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFDN0MsV0FBVyxHQUFFLE1BQU0sT0FBcUIsR0FDdkMsSUFBSSxDQWlETjtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proving-scheduler.d.ts","sourceRoot":"","sources":["../../src/orchestrator/proving-scheduler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"proving-scheduler.d.ts","sourceRoot":"","sources":["../../src/orchestrator/proving-scheduler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gFAAgF;IAChF,WAAW,IAAI,OAAO,CAAC;IACvB,qDAAqD;IACrD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,8BAAsB,gBAAgB;IAKlC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAJnC,SAAS,CAAC,kBAAkB,EAAE,eAAe,EAAE,CAAM;IACrD,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB,YACmB,gBAAgB,EAAE,WAAW,EAC9C,UAAU,SAAoC,EAC9C,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAED,iDAAiD;IAC1C,wBAAwB,IAAI,MAAM,CAExC;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAMtD;IAED;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI,CAAC;IAE1C;;;OAGG;IACI,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAG3B;IAED;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,eAAe,CAAC,CAAC,SAAS,gBAAgB,EAAE,CAAC,EACrD,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EAC5C,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAC7C,WAAW,GAAE,MAAM,OAAqB,GACvC,IAAI,CAiDN;CACF"}
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
import { AbortError } from '@aztec/foundation/error';
|
|
2
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
|
-
import { SerialQueue } from '@aztec/foundation/queue';
|
|
4
3
|
import { sleep } from '@aztec/foundation/sleep';
|
|
5
4
|
/**
|
|
6
5
|
* Common scheduling infrastructure shared by every orchestrator that drives broker
|
|
7
6
|
* proving jobs:
|
|
8
7
|
*
|
|
9
|
-
* -
|
|
8
|
+
* - A shared `SerialQueue` (`deferredJobQueue`) that serialises the *act of handing a
|
|
9
|
+
* job to the broker*, one initiation per event-loop tick. Each queue task kicks off
|
|
10
|
+
* `safeJob` (which submits to the broker) without awaiting it, then yields with
|
|
11
|
+
* `sleep(0)`; the next task therefore runs on the following macrotask. This does NOT
|
|
12
|
+
* cap how many broker jobs are concurrently in flight — the broker's own queue absorbs
|
|
13
|
+
* that. What it bounds is the burst rate: a sub-tree that synchronously discovers
|
|
14
|
+
* thousands of ready jobs can't flood the broker (and monopolise the event loop) in a
|
|
15
|
+
* single tick. The queue is owned by the `ProverClient` and shared across every
|
|
16
|
+
* orchestrator (every sub-tree and top-tree across every concurrent epoch session), so
|
|
17
|
+
* this pacing is applied once globally rather than once-per-orchestrator.
|
|
10
18
|
* - A list of `AbortController`s (`pendingProvingJobs`) so a `cancel()` can abort
|
|
11
19
|
* in-flight broker jobs when needed.
|
|
12
20
|
* - A `deferredProving<T>(state, request, callback, isCancelled?)` method that wraps
|
|
@@ -15,34 +23,29 @@ import { sleep } from '@aztec/foundation/sleep';
|
|
|
15
23
|
*
|
|
16
24
|
* Subclasses own their own concrete proving state and define `cancelInternal()` for
|
|
17
25
|
* the rest of the cleanup work (closing world-state forks, marking sub-trees
|
|
18
|
-
* cancelled, etc.).
|
|
19
|
-
*
|
|
20
|
-
*
|
|
26
|
+
* cancelled, etc.). Because the queue is shared, neither `cancel()` nor `stop()` touch
|
|
27
|
+
* it — they only abort this orchestrator's in-flight broker jobs. Queued-but-unrun jobs
|
|
28
|
+
* for a cancelled orchestrator no-op via the guards in `deferredProving`.
|
|
21
29
|
*/ export class ProvingScheduler {
|
|
22
|
-
|
|
30
|
+
deferredJobQueue;
|
|
23
31
|
pendingProvingJobs;
|
|
24
32
|
logger;
|
|
25
|
-
deferredJobQueue
|
|
26
|
-
|
|
27
|
-
this.enqueueConcurrency = enqueueConcurrency;
|
|
33
|
+
constructor(deferredJobQueue, loggerName = 'prover-client:proving-scheduler', bindings){
|
|
34
|
+
this.deferredJobQueue = deferredJobQueue;
|
|
28
35
|
this.pendingProvingJobs = [];
|
|
29
36
|
this.logger = createLogger(loggerName, bindings);
|
|
30
|
-
this.deferredJobQueue = new SerialQueue();
|
|
31
|
-
this.deferredJobQueue.start(this.enqueueConcurrency);
|
|
32
37
|
}
|
|
33
38
|
/** Number of broker jobs currently in flight. */ getNumPendingProvingJobs() {
|
|
34
39
|
return this.pendingProvingJobs.length;
|
|
35
40
|
}
|
|
36
41
|
/**
|
|
37
|
-
*
|
|
38
|
-
* optionally aborts every in-flight broker job. Aborting is the right choice on
|
|
42
|
+
* Optionally aborts every in-flight broker job. Aborting is the right choice on
|
|
39
43
|
* reorg-driven cancel (where the in-flight inputs are no longer valid) and the
|
|
40
44
|
* wrong choice on shutdown (where leaving jobs in the broker queue lets a restart
|
|
41
|
-
* pick them up).
|
|
45
|
+
* pick them up). The shared queue is not touched — queued-but-unrun jobs belonging
|
|
46
|
+
* to this orchestrator no-op once their controller is aborted (or once their state
|
|
47
|
+
* is marked invalid by the subclass).
|
|
42
48
|
*/ resetSchedulerState(abortJobs) {
|
|
43
|
-
void this.deferredJobQueue.cancel();
|
|
44
|
-
this.deferredJobQueue = new SerialQueue();
|
|
45
|
-
this.deferredJobQueue.start(this.enqueueConcurrency);
|
|
46
49
|
if (abortJobs) {
|
|
47
50
|
for (const controller of this.pendingProvingJobs){
|
|
48
51
|
controller.abort();
|
|
@@ -50,13 +53,11 @@ import { sleep } from '@aztec/foundation/sleep';
|
|
|
50
53
|
}
|
|
51
54
|
}
|
|
52
55
|
/**
|
|
53
|
-
* Standard stop:
|
|
54
|
-
*
|
|
55
|
-
|
|
56
|
-
*/ async stop() {
|
|
57
|
-
const oldQueue = this.deferredJobQueue;
|
|
56
|
+
* Standard stop: cancel this orchestrator's work. The shared queue is owned by the
|
|
57
|
+
* `ProverClient` and outlives every orchestrator, so it is not drained here.
|
|
58
|
+
*/ stop() {
|
|
58
59
|
this.cancelInternal();
|
|
59
|
-
|
|
60
|
+
return Promise.resolve();
|
|
60
61
|
}
|
|
61
62
|
/**
|
|
62
63
|
* Submits a broker request. The returned-via-callback result is dropped if the
|
|
@@ -108,9 +109,11 @@ import { sleep } from '@aztec/foundation/sleep';
|
|
|
108
109
|
}
|
|
109
110
|
};
|
|
110
111
|
void this.deferredJobQueue.put(async ()=>{
|
|
112
|
+
// Kick off the broker submission without awaiting it — awaiting here would serialise all
|
|
113
|
+
// proving (one job at a time) and kill parallelism. The `sleep(0)` yields the event loop
|
|
114
|
+
// so the next queued job initiates on the following macrotask, pacing bursts rather than
|
|
115
|
+
// bounding in-flight broker concurrency (the broker's own queue handles that).
|
|
111
116
|
void safeJob();
|
|
112
|
-
// Yield to the macrotask queue so Node has a chance to interleave other work
|
|
113
|
-
// between enqueues.
|
|
114
117
|
await sleep(0);
|
|
115
118
|
});
|
|
116
119
|
}
|
|
@@ -4,6 +4,7 @@ import { type ARCHIVE_HEIGHT, type NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } f
|
|
|
4
4
|
import type { EpochNumber } from '@aztec/foundation/branded-types';
|
|
5
5
|
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
6
6
|
import type { LoggerBindings } from '@aztec/foundation/log';
|
|
7
|
+
import type { SerialQueue } from '@aztec/foundation/queue';
|
|
7
8
|
import type { Tuple } from '@aztec/foundation/serialize';
|
|
8
9
|
import type { EthAddress } from '@aztec/stdlib/block';
|
|
9
10
|
import type { PublicInputsAndRecursiveProof, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
|
|
@@ -11,8 +12,7 @@ import type { Proof } from '@aztec/stdlib/proofs';
|
|
|
11
12
|
import { type BlockRollupPublicInputs, type RootRollupPublicInputs } from '@aztec/stdlib/rollup';
|
|
12
13
|
import type { BlockHeader } from '@aztec/stdlib/tx';
|
|
13
14
|
import { type TelemetryClient } from '@aztec/telemetry-client';
|
|
14
|
-
import {
|
|
15
|
-
import { TopTreeProvingState } from './top-tree-proving-state.js';
|
|
15
|
+
import { ProvingScheduler } from './proving-scheduler.js';
|
|
16
16
|
/** Per-checkpoint data fed into the top tree. */
|
|
17
17
|
export type CheckpointTopTreeData = {
|
|
18
18
|
/**
|
|
@@ -52,11 +52,12 @@ export declare class TopTreeCancelledError extends Error {
|
|
|
52
52
|
* and each checkpoint's root rollup fires the moment its sub-tree's `blockProofs`
|
|
53
53
|
* promise resolves. Later checkpoints can still be block-level proving in parallel.
|
|
54
54
|
*/
|
|
55
|
-
export declare class TopTreeOrchestrator extends
|
|
55
|
+
export declare class TopTreeOrchestrator extends ProvingScheduler {
|
|
56
|
+
protected readonly prover: ServerCircuitProver;
|
|
56
57
|
private readonly proverId;
|
|
57
58
|
private state;
|
|
58
59
|
private cancelled;
|
|
59
|
-
constructor(prover: ServerCircuitProver, proverId: EthAddress,
|
|
60
|
+
constructor(prover: ServerCircuitProver, proverId: EthAddress, deferredJobQueue: SerialQueue, _telemetryClient?: TelemetryClient, bindings?: LoggerBindings);
|
|
60
61
|
getProverId(): EthAddress;
|
|
61
62
|
/**
|
|
62
63
|
* Proves the top tree from per-checkpoint data and pending block-proofs promises.
|
|
@@ -75,9 +76,13 @@ export declare class TopTreeOrchestrator extends TopTreeProvingScheduler {
|
|
|
75
76
|
}): void;
|
|
76
77
|
/** Standard shutdown — preserve the broker queue (`abortJobs: false`). */
|
|
77
78
|
protected cancelInternal(): void;
|
|
78
|
-
protected onRootRollupComplete(state: TopTreeProvingState): void;
|
|
79
79
|
private enqueueCheckpointRoot;
|
|
80
80
|
private buildCheckpointRootInputs;
|
|
81
|
+
private enqueueCheckpointMergeRollup;
|
|
82
|
+
private enqueueEpochPadding;
|
|
83
|
+
private enqueueRootRollup;
|
|
84
|
+
private checkAndEnqueueNextCheckpointMergeRollup;
|
|
85
|
+
private checkAndEnqueueRootRollup;
|
|
81
86
|
private computeOutHashHints;
|
|
82
87
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLXRyZWUtb3JjaGVzdHJhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JjaGVzdHJhdG9yL3RvcC10cmVlLW9yY2hlc3RyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTBCLEtBQUssMkJBQTJCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsS0FBSyxjQUFjLEVBR25CLEtBQUsseUNBQXlDLEVBRS9DLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHbkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXpELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFMUcsT0FBTyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUNMLEtBQUssdUJBQXVCLEVBSTVCLEtBQUssc0JBQXNCLEVBQzVCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHlCQUF5QixDQUFDO0FBR25GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRzFELGlEQUFpRDtBQUNqRCxNQUFNLE1BQU0scUJBQXFCLEdBQUc7SUFDbEM7Ozs7T0FJRztJQUNILFdBQVcsRUFBRSxPQUFPLENBQ2xCLDZCQUE2QixDQUFDLHVCQUF1QixFQUFFLE9BQU8seUNBQXlDLENBQUMsRUFBRSxDQUMzRyxDQUFDO0lBQ0YsbUZBQW1GO0lBQ25GLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUM3Qiw4RkFBOEY7SUFDOUYsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pCLG9HQUFvRztJQUNwRyxtQkFBbUIsRUFBRSxXQUFXLENBQUM7SUFDakMsbUZBQW1GO0lBQ25GLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxjQUFjLENBQUMsQ0FBQztDQUM5RCxDQUFDO0FBRUYsc0NBQXNDO0FBQ3RDLE1BQU0sTUFBTSxhQUFhLEdBQUc7SUFDMUIsWUFBWSxFQUFFLHNCQUFzQixDQUFDO0lBQ3JDLEtBQUssRUFBRSxLQUFLLENBQUM7SUFDYixpQkFBaUIsRUFBRSxXQUFXLENBQUM7Q0FDaEMsQ0FBQztBQUVGOzs7R0FHRztBQUNILHFCQUFhLHFCQUFzQixTQUFRLEtBQUs7SUFDOUMsWUFBWSxNQUFNLFNBQStCLEVBR2hEO0NBQ0Y7QUFPRDs7Ozs7Ozs7R0FRRztBQUNILHFCQUFhLG1CQUFvQixTQUFRLGdCQUFnQjtJQUtyRCxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxtQkFBbUI7SUFDOUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRO0lBTDNCLE9BQU8sQ0FBQyxLQUFLLENBQWtDO0lBQy9DLE9BQU8sQ0FBQyxTQUFTLENBQVM7SUFFMUIsWUFDcUIsTUFBTSxFQUFFLG1CQUFtQixFQUM3QixRQUFRLEVBQUUsVUFBVSxFQUNyQyxnQkFBZ0IsRUFBRSxXQUFXLEVBQzdCLGdCQUFnQixHQUFFLGVBQXNDLEVBQ3hELFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFHMUI7SUFFTSxXQUFXLElBQUksVUFBVSxDQUUvQjtJQUVEOzs7O09BSUc7SUFDVSxLQUFLLENBQ2hCLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLG1CQUFtQixFQUFFLE1BQU0sRUFDM0IsMkJBQTJCLEVBQUUsMkJBQTJCLEVBQ3hELGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxHQUN0QyxPQUFPLENBQUMsYUFBYSxDQUFDLENBaUZ4QjtJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUU7UUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFBO0tBQUUsUUFJbEQ7SUFFRCw0RUFBMEU7SUFDMUUsVUFBbUIsY0FBYyxJQUFJLElBQUksQ0FFeEM7SUFJRCxPQUFPLENBQUMscUJBQXFCO1lBMkNmLHlCQUF5QjtJQStCdkMsT0FBTyxDQUFDLDRCQUE0QjtJQWVwQyxPQUFPLENBQUMsbUJBQW1CO0lBZTNCLE9BQU8sQ0FBQyxpQkFBaUI7SUFnQnpCLE9BQU8sQ0FBQyx3Q0FBd0M7SUFZaEQsT0FBTyxDQUFDLHlCQUF5QjtZQU9uQixtQkFBbUI7Q0F5QmxDIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"top-tree-orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/top-tree-orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,yCAAyC,EAE/C,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGnE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE1G,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,KAAK,uBAAuB,EAI5B,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAGnF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"top-tree-orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/top-tree-orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,yCAAyC,EAE/C,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGnE,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE1G,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,KAAK,uBAAuB,EAI5B,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAGnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,iDAAiD;AACjD,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAClB,6BAA6B,CAAC,uBAAuB,EAAE,OAAO,yCAAyC,CAAC,EAAE,CAC3G,CAAC;IACF,mFAAmF;IACnF,kBAAkB,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAC7B,8FAA8F;IAC9F,UAAU,EAAE,EAAE,EAAE,CAAC;IACjB,oGAAoG;IACpG,mBAAmB,EAAE,WAAW,CAAC;IACjC,mFAAmF;IACnF,0BAA0B,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,cAAc,CAAC,CAAC;CAC9D,CAAC;AAEF,sCAAsC;AACtC,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,EAAE,sBAAsB,CAAC;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,iBAAiB,EAAE,WAAW,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,MAAM,SAA+B,EAGhD;CACF;AAOD;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,SAAQ,gBAAgB;IAKrD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,mBAAmB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,SAAS,CAAS;IAE1B,YACqB,MAAM,EAAE,mBAAmB,EAC7B,QAAQ,EAAE,UAAU,EACrC,gBAAgB,EAAE,WAAW,EAC7B,gBAAgB,GAAE,eAAsC,EACxD,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAEM,WAAW,IAAI,UAAU,CAE/B;IAED;;;;OAIG;IACU,KAAK,CAChB,WAAW,EAAE,WAAW,EACxB,mBAAmB,EAAE,MAAM,EAC3B,2BAA2B,EAAE,2BAA2B,EACxD,cAAc,EAAE,qBAAqB,EAAE,GACtC,OAAO,CAAC,aAAa,CAAC,CAiFxB;IAED;;;;;OAKG;IACI,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,QAIlD;IAED,4EAA0E;IAC1E,UAAmB,cAAc,IAAI,IAAI,CAExC;IAID,OAAO,CAAC,qBAAqB;YA2Cf,yBAAyB;IA+BvC,OAAO,CAAC,4BAA4B;IAepC,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,wCAAwC;IAYhD,OAAO,CAAC,yBAAyB;YAOnB,mBAAmB;CAyBlC"}
|
|
@@ -10,7 +10,7 @@ import { CheckpointRootRollupHints, CheckpointRootRollupPrivateInputs, Checkpoin
|
|
|
10
10
|
import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
|
|
11
11
|
import { getTelemetryClient } from '@aztec/telemetry-client';
|
|
12
12
|
import { buildBlobHints, toProofData } from './block-building-helpers.js';
|
|
13
|
-
import {
|
|
13
|
+
import { ProvingScheduler } from './proving-scheduler.js';
|
|
14
14
|
import { TopTreeProvingState } from './top-tree-proving-state.js';
|
|
15
15
|
/**
|
|
16
16
|
* Sentinel thrown by `cancel` so callers can distinguish reorg-driven cancellation from
|
|
@@ -29,12 +29,13 @@ import { TopTreeProvingState } from './top-tree-proving-state.js';
|
|
|
29
29
|
* out-hash and blob-accumulator hint chains immediately from archiver-derivable data,
|
|
30
30
|
* and each checkpoint's root rollup fires the moment its sub-tree's `blockProofs`
|
|
31
31
|
* promise resolves. Later checkpoints can still be block-level proving in parallel.
|
|
32
|
-
*/ export class TopTreeOrchestrator extends
|
|
32
|
+
*/ export class TopTreeOrchestrator extends ProvingScheduler {
|
|
33
|
+
prover;
|
|
33
34
|
proverId;
|
|
34
35
|
state;
|
|
35
36
|
cancelled;
|
|
36
|
-
constructor(prover, proverId,
|
|
37
|
-
super(
|
|
37
|
+
constructor(prover, proverId, deferredJobQueue, _telemetryClient = getTelemetryClient(), bindings){
|
|
38
|
+
super(deferredJobQueue, 'prover-client:top-tree-orchestrator', bindings), this.prover = prover, this.proverId = proverId, this.cancelled = false;
|
|
38
39
|
}
|
|
39
40
|
getProverId() {
|
|
40
41
|
return this.proverId;
|
|
@@ -59,10 +60,9 @@ import { TopTreeProvingState } from './top-tree-proving-state.js';
|
|
|
59
60
|
throw new TopTreeCancelledError();
|
|
60
61
|
}
|
|
61
62
|
const { promise: completionPromise, resolve, reject } = promiseWithResolvers();
|
|
62
|
-
// The completion promise is awaited
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
// is silenced.
|
|
63
|
+
// The completion promise is awaited below. Attach a no-op catch here as well so any
|
|
64
|
+
// spurious unhandled-rejection detection during cancellation (where reject() can fire
|
|
65
|
+
// synchronously before the await microtask installs a handler) is silenced.
|
|
66
66
|
completionPromise.catch(()=>{});
|
|
67
67
|
const startBlobAccumulator = BatchedBlobAccumulator.newWithChallenges(finalBlobBatchingChallenges);
|
|
68
68
|
this.state = new TopTreeProvingState(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges, startBlobAccumulator, resolve, (reason)=>reject(this.cancelled ? new TopTreeCancelledError(reason) : new Error(reason)));
|
|
@@ -94,16 +94,13 @@ import { TopTreeProvingState } from './top-tree-proving-state.js';
|
|
|
94
94
|
this.state?.reject(`Sub-tree for checkpoint ${i} failed: ${err}`);
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
throw err;
|
|
106
|
-
}
|
|
97
|
+
// The error type is stamped atomically at rejection time by the rejectionCallback above
|
|
98
|
+
// (TopTreeCancelledError iff cancel() drove the rejection). Re-deriving it here from the
|
|
99
|
+
// live `cancelled` flag would mask a genuine failure that lost a race with a late cancel
|
|
100
|
+
// (A-1035), so let the original error propagate untouched.
|
|
101
|
+
await completionPromise;
|
|
102
|
+
await this.state.finalizeBatchedBlob();
|
|
103
|
+
return this.state.getEpochProofResult();
|
|
107
104
|
}
|
|
108
105
|
/**
|
|
109
106
|
* Cancels in-flight proving. If `abortJobs` is true, each pending broker job is aborted
|
|
@@ -121,9 +118,6 @@ import { TopTreeProvingState } from './top-tree-proving-state.js';
|
|
|
121
118
|
});
|
|
122
119
|
}
|
|
123
120
|
// --- internal: per-checkpoint enqueue path ---
|
|
124
|
-
onRootRollupComplete(state) {
|
|
125
|
-
state.resolve();
|
|
126
|
-
}
|
|
127
121
|
enqueueCheckpointRoot(state, checkpointIndex, blockProofs, cd, outHashHint, startBlobAccumulator) {
|
|
128
122
|
void this.buildCheckpointRootInputs(blockProofs, cd, outHashHint, startBlobAccumulator).then((inputs)=>{
|
|
129
123
|
this.deferredProving(state, (signal)=>{
|
|
@@ -140,6 +134,13 @@ import { TopTreeProvingState } from './top-tree-proving-state.js';
|
|
|
140
134
|
this.checkAndEnqueueNextCheckpointMergeRollup(state, leafLocation);
|
|
141
135
|
}
|
|
142
136
|
});
|
|
137
|
+
}, // Without this, an input-building failure rejects a discarded promise, state.reject() is
|
|
138
|
+
// never called, and prove() hangs forever on its completion promise (A-1036).
|
|
139
|
+
(err)=>{
|
|
140
|
+
if (this.cancelled) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
state.reject(`Building checkpoint root inputs for checkpoint ${checkpointIndex} failed: ${err}`);
|
|
143
144
|
});
|
|
144
145
|
}
|
|
145
146
|
async buildCheckpointRootInputs(blockProofs, cd, outHashHint, startBlobAccumulator) {
|
|
@@ -161,6 +162,55 @@ import { TopTreeProvingState } from './top-tree-proving-state.js';
|
|
|
161
162
|
proofDatas[1]
|
|
162
163
|
], hints);
|
|
163
164
|
}
|
|
165
|
+
// --- internal: top-tree proof orchestration (formerly TopTreeProvingScheduler) ---
|
|
166
|
+
enqueueCheckpointMergeRollup(state, location) {
|
|
167
|
+
if (!state.verifyState() || !state.tryStartProvingCheckpointMerge(location)) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
const inputs = state.getCheckpointMergeRollupInputs(location);
|
|
171
|
+
this.deferredProving(state, (signal)=>this.prover.getCheckpointMergeRollupProof(inputs, signal, state.epochNumber), (result)=>{
|
|
172
|
+
state.setCheckpointMergeRollupProof(location, result);
|
|
173
|
+
this.checkAndEnqueueNextCheckpointMergeRollup(state, location);
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
enqueueEpochPadding(state) {
|
|
177
|
+
if (!state.verifyState() || !state.tryStartProvingPaddingCheckpoint()) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const inputs = state.getPaddingCheckpointInputs();
|
|
181
|
+
this.deferredProving(state, (signal)=>this.prover.getCheckpointPaddingRollupProof(inputs, signal, state.epochNumber), (result)=>{
|
|
182
|
+
state.setCheckpointPaddingProof(result);
|
|
183
|
+
this.checkAndEnqueueRootRollup(state);
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
enqueueRootRollup(state) {
|
|
187
|
+
if (!state.verifyState() || !state.tryStartProvingRootRollup()) {
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
const inputs = state.getRootRollupInputs();
|
|
191
|
+
this.deferredProving(state, (signal)=>this.prover.getRootRollupProof(inputs, signal, state.epochNumber), (result)=>{
|
|
192
|
+
this.logger.verbose(`Completed root rollup for epoch ${state.epochNumber}`);
|
|
193
|
+
state.setRootRollupProof(result);
|
|
194
|
+
state.resolve();
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
checkAndEnqueueNextCheckpointMergeRollup(state, currentLocation) {
|
|
198
|
+
if (!state.isReadyForCheckpointMerge(currentLocation)) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
const parentLocation = state.getParentLocation(currentLocation);
|
|
202
|
+
if (parentLocation.level === 0) {
|
|
203
|
+
this.checkAndEnqueueRootRollup(state);
|
|
204
|
+
} else {
|
|
205
|
+
this.enqueueCheckpointMergeRollup(state, parentLocation);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
checkAndEnqueueRootRollup(state) {
|
|
209
|
+
if (!state.isReadyForRootRollup()) {
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
this.enqueueRootRollup(state);
|
|
213
|
+
}
|
|
164
214
|
async computeOutHashHints(checkpointData) {
|
|
165
215
|
const treeCalculator = await MerkleTreeCalculator.create(OUT_HASH_TREE_HEIGHT, undefined, (left, right)=>Promise.resolve(shaMerkleHash(left, right)));
|
|
166
216
|
const computeHint = async (leaves)=>{
|
|
@@ -58,4 +58,4 @@ export declare class TopTreeProvingState {
|
|
|
58
58
|
reject(reason: string): void;
|
|
59
59
|
cancel(): void;
|
|
60
60
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLXRyZWUtcHJvdmluZy1zdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yY2hlc3RyYXRvci90b3AtdHJlZS1wcm92aW5nLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hHLE9BQU8sS0FBSyxFQUFpQyx5Q0FBeUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBdUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRixPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxrQ0FBa0MsRUFDbEMsb0NBQW9DLEVBQ3BDLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsS0FBSyxzQkFBc0IsRUFDNUIsTUFBTSxzQkFBc0IsQ0FBQztBQVc5Qjs7Ozs7Ozs7R0FRRztBQUNILHFCQUFhLG1CQUFtQjs7YUFZWixXQUFXLEVBQUUsV0FBVzthQUN4QixtQkFBbUIsRUFBRSxNQUFNO2FBQzNCLDJCQUEyQixFQUFFLDJCQUEyQjthQUN4RCxvQkFBb0IsRUFBRSxzQkFBc0I7SUFDNUQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0I7SUFDbkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUI7SUFoQnBDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FFdEI7SUFDRixPQUFPLENBQUMsc0JBQXNCLENBRWhCO0lBQ2QsT0FBTyxDQUFDLGVBQWUsQ0FBdUY7SUFDOUcsT0FBTyxDQUFDLGtCQUFrQixDQUFxQztJQUMvRCxPQUFPLENBQUMsZ0JBQWdCLENBQTBCO0lBQ2xELE9BQU8sQ0FBQyxTQUFTLENBQThCO0lBQy9DLFlBQ2tCLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLG1CQUFtQixFQUFFLE1BQU0sRUFDM0IsMkJBQTJCLEVBQUUsMkJBQTJCLEVBQ3hELG9CQUFvQixFQUFFLHNCQUFzQixFQUMzQyxrQkFBa0IsRUFBRSxNQUFNLElBQUksRUFDOUIsaUJBQWlCLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxLQUFLLElBQUksRUFNN0Q7SUFJTSw0QkFBNEIsQ0FDakMsZUFBZSxFQUFFLE1BQU0sRUFDdkIsYUFBYSxFQUFFLDZCQUE2QixDQUMxQyw0QkFBNEIsRUFDNUIsT0FBTyx5Q0FBeUMsQ0FDakQsR0FDQSxnQkFBZ0IsQ0FFbEI7SUFJTSw4QkFBOEIsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLFdBTS9EO0lBRU0sNkJBQTZCLENBQ2xDLFFBQVEsRUFBRSxnQkFBZ0IsRUFDMUIsYUFBYSxFQUFFLDZCQUE2QixDQUMxQyw0QkFBNEIsRUFDNUIsT0FBTyx5Q0FBeUMsQ0FDakQsUUFHRjtJQUVNLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsV0FFMUQ7SUFFTSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLG9CQUVsRDtJQUVNLDhCQUE4QixDQUFDLGFBQWEsRUFBRSxnQkFBZ0Isc0NBTXBFO0lBSU0sZ0NBQWdDLFlBTXRDO0lBRU0seUJBQXlCLENBQzlCLGFBQWEsRUFBRSw2QkFBNkIsQ0FDMUMsNEJBQTRCLEVBQzVCLE9BQU8seUNBQXlDLENBQ2pELFFBR0Y7SUFFTSwwQkFBMEIseUNBRWhDO0lBSU0seUJBQXlCLFlBTS9CO0lBRU0sa0JBQWtCLENBQUMsYUFBYSxFQUFFLDZCQUE2QixDQUFDLHNCQUFzQixDQUFDLFFBRTdGO0lBRU0sb0JBQW9CLFlBRzFCO0lBRU0sbUJBQW1CLDRCQVF6QjtJQUlEOzs7T0FHRztJQUNJLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxzQkFBc0IsUUFFL0Q7SUFFWSxtQkFBbUIsa0JBSy9CO0lBRU0sbUJBQW1CLElBQUk7UUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQUMsWUFBWSxFQUFFLHNCQUFzQixDQUFDO1FBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFBO0tBQUUsQ0FVbkg7SUFJTSxXQUFXLFlBRWpCO0lBRU0sT0FBTyxTQU1iO0lBRU0sTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLFFBTTNCO0lBRU0sTUFBTSxTQUVaO0NBUUYifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"top-tree-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/top-tree-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACxG,OAAO,KAAK,EAAiC,yCAAyC,EAAE,MAAM,kBAAkB,CAAC;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AACrF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,kCAAkC,EAClC,oCAAoC,EACpC,4BAA4B,EAC5B,uBAAuB,EACvB,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAC;AAW9B;;;;;;;;GAQG;AACH,qBAAa,mBAAmB;;
|
|
1
|
+
{"version":3,"file":"top-tree-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/top-tree-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACxG,OAAO,KAAK,EAAiC,yCAAyC,EAAE,MAAM,kBAAkB,CAAC;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AACrF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,kCAAkC,EAClC,oCAAoC,EACpC,4BAA4B,EAC5B,uBAAuB,EACvB,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAC;AAW9B;;;;;;;;GAQG;AACH,qBAAa,mBAAmB;;aAYZ,WAAW,EAAE,WAAW;aACxB,mBAAmB,EAAE,MAAM;aAC3B,2BAA2B,EAAE,2BAA2B;aACxD,oBAAoB,EAAE,sBAAsB;IAC5D,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAhBpC,OAAO,CAAC,gBAAgB,CAEtB;IACF,OAAO,CAAC,sBAAsB,CAEhB;IACd,OAAO,CAAC,eAAe,CAAuF;IAC9G,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,gBAAgB,CAA0B;IAClD,OAAO,CAAC,SAAS,CAA8B;IAC/C,YACkB,WAAW,EAAE,WAAW,EACxB,mBAAmB,EAAE,MAAM,EAC3B,2BAA2B,EAAE,2BAA2B,EACxD,oBAAoB,EAAE,sBAAsB,EAC3C,kBAAkB,EAAE,MAAM,IAAI,EAC9B,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EAM7D;IAIM,4BAA4B,CACjC,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,6BAA6B,CAC1C,4BAA4B,EAC5B,OAAO,yCAAyC,CACjD,GACA,gBAAgB,CAElB;IAIM,8BAA8B,CAAC,QAAQ,EAAE,gBAAgB,WAM/D;IAEM,6BAA6B,CAClC,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,EAAE,6BAA6B,CAC1C,4BAA4B,EAC5B,OAAO,yCAAyC,CACjD,QAGF;IAEM,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,WAE1D;IAEM,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,oBAElD;IAEM,8BAA8B,CAAC,aAAa,EAAE,gBAAgB,sCAMpE;IAIM,gCAAgC,YAMtC;IAEM,yBAAyB,CAC9B,aAAa,EAAE,6BAA6B,CAC1C,4BAA4B,EAC5B,OAAO,yCAAyC,CACjD,QAGF;IAEM,0BAA0B,yCAEhC;IAIM,yBAAyB,YAM/B;IAEM,kBAAkB,CAAC,aAAa,EAAE,6BAA6B,CAAC,sBAAsB,CAAC,QAE7F;IAEM,oBAAoB,YAG1B;IAEM,mBAAmB,4BAQzB;IAID;;;OAGG;IACI,qBAAqB,CAAC,WAAW,EAAE,sBAAsB,QAE/D;IAEY,mBAAmB,kBAK/B;IAEM,mBAAmB,IAAI;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,YAAY,EAAE,sBAAsB,CAAC;QAAC,iBAAiB,EAAE,WAAW,CAAA;KAAE,CAUnH;IAIM,WAAW,YAEjB;IAEM,OAAO,SAMb;IAEM,MAAM,CAAC,MAAM,EAAE,MAAM,QAM3B;IAEM,MAAM,SAEZ;CAQF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AVM_V2_PROOF_LENGTH_IN_FIELDS, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
|
|
2
2
|
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
3
|
import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
|
|
4
4
|
import type { PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
|
|
@@ -32,6 +32,6 @@ export declare class TxProvingState {
|
|
|
32
32
|
inputs: PrivateTxBaseRollupPrivateInputs;
|
|
33
33
|
};
|
|
34
34
|
setPublicChonkVerifierProof(publicChonkVerifierProofAndVk: PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): void;
|
|
35
|
-
setAvmProof(avmProof: RecursiveProof<typeof
|
|
35
|
+
setAvmProof(avmProof: RecursiveProof<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS>): void;
|
|
36
36
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHgtcHJvdmluZy1zdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yY2hlc3RyYXRvci90eC1wcm92aW5nLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVHLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXpELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEVBQWtDLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RGLE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFFcEIsZ0NBQWdDLEVBRWhDLCtCQUErQixFQUMvQiwrQkFBK0IsRUFDaEMsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRixPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVFwRDs7OztHQUlHO0FBQ0gscUJBQWEsY0FBYzs7YUFRUCxXQUFXLEVBQUUsV0FBVztJQUN4QyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWU7YUFDaEIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLENBQUM7SUFDeEUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRO0lBVjNCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUcxQjtJQUNGLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBdUQ7SUFFeEUsWUFDa0IsV0FBVyxFQUFFLFdBQVcsRUFDdkIsZUFBZSxFQUFFLGVBQWUsRUFDakMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLENBQUMsRUFDdkQsUUFBUSxFQUFFLEVBQUUsRUFDM0I7SUFFSixJQUFJLGVBQWUsWUFFbEI7SUFFTSxLQUFLLFlBRVg7SUFFTSxZQUFZLElBQUksZ0JBQWdCLENBRXRDO0lBRU0sbUNBQW1DLG9FQUV6QztJQUVNLDBCQUEwQjs7Ozs7O01BWWhDO0lBRU0sMkJBQTJCLENBQ2hDLDZCQUE2QixFQUFFLDZCQUE2QixDQUMxRCwrQkFBK0IsRUFDL0IsT0FBTyx5Q0FBeUMsQ0FDakQsUUFHRjtJQUVNLFdBQVcsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLE9BQU8sNkJBQTZCLENBQUMsUUFFaEY7Q0FvQ0YifQ==
|