@aztec/prover-client 0.0.1-commit.b33fc05d0 → 0.0.1-commit.b3d3157a

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.
Files changed (78) hide show
  1. package/dest/config.d.ts +1 -1
  2. package/dest/config.d.ts.map +1 -1
  3. package/dest/config.js +16 -2
  4. package/dest/light/lightweight_checkpoint_builder.d.ts +1 -1
  5. package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
  6. package/dest/light/lightweight_checkpoint_builder.js +16 -4
  7. package/dest/mocks/test_context.d.ts +3 -1
  8. package/dest/mocks/test_context.d.ts.map +1 -1
  9. package/dest/mocks/test_context.js +13 -6
  10. package/dest/orchestrator/block-building-helpers.d.ts +1 -1
  11. package/dest/orchestrator/checkpoint-proving-state.d.ts +8 -1
  12. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -1
  13. package/dest/orchestrator/checkpoint-proving-state.js +10 -1
  14. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts +107 -0
  15. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts.map +1 -0
  16. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.js +151 -0
  17. package/dest/orchestrator/epoch-proving-context.d.ts +51 -0
  18. package/dest/orchestrator/epoch-proving-context.d.ts.map +1 -0
  19. package/dest/orchestrator/epoch-proving-context.js +81 -0
  20. package/dest/orchestrator/epoch-proving-state.d.ts +1 -1
  21. package/dest/orchestrator/index.d.ts +4 -1
  22. package/dest/orchestrator/index.d.ts.map +1 -1
  23. package/dest/orchestrator/index.js +3 -0
  24. package/dest/orchestrator/orchestrator.d.ts +14 -26
  25. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  26. package/dest/orchestrator/orchestrator.js +32 -166
  27. package/dest/orchestrator/proving-scheduler.d.ts +72 -0
  28. package/dest/orchestrator/proving-scheduler.d.ts.map +1 -0
  29. package/dest/orchestrator/proving-scheduler.js +117 -0
  30. package/dest/orchestrator/top-tree-orchestrator.d.ts +83 -0
  31. package/dest/orchestrator/top-tree-orchestrator.d.ts.map +1 -0
  32. package/dest/orchestrator/top-tree-orchestrator.js +182 -0
  33. package/dest/orchestrator/top-tree-proving-scheduler.d.ts +62 -0
  34. package/dest/orchestrator/top-tree-proving-scheduler.d.ts.map +1 -0
  35. package/dest/orchestrator/top-tree-proving-scheduler.js +73 -0
  36. package/dest/orchestrator/top-tree-proving-state.d.ts +61 -0
  37. package/dest/orchestrator/top-tree-proving-state.d.ts.map +1 -0
  38. package/dest/orchestrator/top-tree-proving-state.js +185 -0
  39. package/dest/prover-client/prover-client.d.ts +61 -2
  40. package/dest/prover-client/prover-client.d.ts.map +1 -1
  41. package/dest/prover-client/prover-client.js +49 -1
  42. package/dest/proving_broker/broker_prover_facade.d.ts +1 -1
  43. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  44. package/dest/proving_broker/broker_prover_facade.js +10 -16
  45. package/dest/proving_broker/config.d.ts +8 -72
  46. package/dest/proving_broker/config.d.ts.map +1 -1
  47. package/dest/proving_broker/config.js +2 -2
  48. package/dest/proving_broker/index.d.ts +2 -1
  49. package/dest/proving_broker/index.d.ts.map +1 -1
  50. package/dest/proving_broker/index.js +1 -0
  51. package/dest/proving_broker/proving_broker.d.ts +2 -2
  52. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  53. package/dest/proving_broker/proving_broker.js +32 -7
  54. package/dest/proving_broker/proving_broker_database/persisted.js +2 -2
  55. package/dest/proving_broker/rpc.d.ts +3 -1
  56. package/dest/proving_broker/rpc.d.ts.map +1 -1
  57. package/dest/proving_broker/rpc.js +80 -24
  58. package/dest/test/mock_prover.d.ts +3 -3
  59. package/package.json +17 -17
  60. package/src/config.ts +18 -2
  61. package/src/light/lightweight_checkpoint_builder.ts +21 -6
  62. package/src/mocks/test_context.ts +11 -7
  63. package/src/orchestrator/checkpoint-proving-state.ts +14 -1
  64. package/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +271 -0
  65. package/src/orchestrator/epoch-proving-context.ts +101 -0
  66. package/src/orchestrator/index.ts +8 -0
  67. package/src/orchestrator/orchestrator.ts +46 -222
  68. package/src/orchestrator/proving-scheduler.ts +156 -0
  69. package/src/orchestrator/top-tree-orchestrator.ts +314 -0
  70. package/src/orchestrator/top-tree-proving-scheduler.ts +154 -0
  71. package/src/orchestrator/top-tree-proving-state.ts +220 -0
  72. package/src/prover-client/prover-client.ts +125 -1
  73. package/src/proving_broker/broker_prover_facade.ts +8 -16
  74. package/src/proving_broker/config.ts +2 -1
  75. package/src/proving_broker/index.ts +1 -0
  76. package/src/proving_broker/proving_broker.ts +27 -5
  77. package/src/proving_broker/proving_broker_database/persisted.ts +2 -2
  78. package/src/proving_broker/rpc.ts +36 -24
@@ -0,0 +1,51 @@
1
+ import type { 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 { PublicInputsAndRecursiveProof, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
5
+ import type { PublicChonkVerifierPrivateInputs, PublicChonkVerifierPublicInputs } from '@aztec/stdlib/rollup';
6
+ /**
7
+ * Result of a chonk-verifier proof, cached per tx hash on `EpochProvingContext`.
8
+ */
9
+ export type ChonkVerifierProofResult = PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>;
10
+ /**
11
+ * Per-epoch state shared across every `CheckpointSubTreeOrchestrator` constructed for
12
+ * the same epoch. Owns the chonk-verifier proof cache so a tx whose checkpoint is
13
+ * reorged out and re-appears in a replacement checkpoint does not have to re-prove
14
+ * its chonk circuit.
15
+ *
16
+ * The context's chonk-verifier broker jobs are deliberately submitted **outside** the
17
+ * sub-tree's deferred-proving queue. The sub-tree's `cancel()` therefore does not abort
18
+ * them — by design, because their result is tx-scoped, not sub-tree-scoped, and a
19
+ * replacement sub-tree should be able to consume the cached proof.
20
+ *
21
+ * Callers (`EpochProvingJob`, or unit tests) construct one context per epoch and pass
22
+ * it into every sub-tree they create. `stop()` aborts every in-flight chonk job.
23
+ */
24
+ export declare class EpochProvingContext {
25
+ private readonly prover;
26
+ readonly epochNumber: EpochNumber;
27
+ private readonly cache;
28
+ /** Abort controllers for in-flight chonk jobs, keyed by tx hash. */
29
+ private readonly pending;
30
+ private readonly log;
31
+ private stopped;
32
+ constructor(prover: ServerCircuitProver, epochNumber: EpochNumber, bindings?: LoggerBindings);
33
+ /**
34
+ * Returns the cached chonk-verifier proof promise for the given tx hash, or
35
+ * `undefined` if none has been enqueued yet. Non-mutating.
36
+ */
37
+ getCached(txHash: string): Promise<ChonkVerifierProofResult> | undefined;
38
+ /**
39
+ * Enqueues a chonk-verifier proof for the given tx hash, returning the promise (or
40
+ * the already-cached one if already enqueued). The promise resolves when the broker
41
+ * delivers the result; on rejection (including `stop()`), the cache entry is removed
42
+ * so a subsequent caller can re-enqueue.
43
+ */
44
+ enqueue(txHash: string, inputs: PublicChonkVerifierPrivateInputs): Promise<ChonkVerifierProofResult>;
45
+ /**
46
+ * Aborts every in-flight chonk-verifier broker job and clears the cache. Called by
47
+ * the owning `EpochProvingJob` when the job stops.
48
+ */
49
+ stop(): void;
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtcHJvdmluZy1jb250ZXh0LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JjaGVzdHJhdG9yL2Vwb2NoLXByb3ZpbmctY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xGLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBZSxLQUFLLGNBQWMsRUFBZ0IsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RixPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFHLE9BQU8sS0FBSyxFQUFFLGdDQUFnQyxFQUFFLCtCQUErQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFOUc7O0dBRUc7QUFDSCxNQUFNLE1BQU0sd0JBQXdCLEdBQUcsNkJBQTZCLENBQ2xFLCtCQUErQixFQUMvQixPQUFPLHlDQUF5QyxDQUNqRCxDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILHFCQUFhLG1CQUFtQjtJQVE1QixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07YUFDUCxXQUFXLEVBQUUsV0FBVztJQVIxQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBd0Q7SUFDOUUsb0VBQW9FO0lBQ3BFLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFzQztJQUM5RCxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBUztJQUM3QixPQUFPLENBQUMsT0FBTyxDQUFTO0lBRXhCLFlBQ21CLE1BQU0sRUFBRSxtQkFBbUIsRUFDNUIsV0FBVyxFQUFFLFdBQVcsRUFDeEMsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUcxQjtJQUVEOzs7T0FHRztJQUNJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLFNBQVMsQ0FFOUU7SUFFRDs7Ozs7T0FLRztJQUNJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxnQ0FBZ0MsR0FBRyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0E2QjFHO0lBRUQ7OztPQUdHO0lBQ0ksSUFBSSxTQU9WO0NBQ0YifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"epoch-proving-context.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yCAAyC,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAe,KAAK,cAAc,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,KAAK,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC1G,OAAO,KAAK,EAAE,gCAAgC,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAE9G;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,6BAA6B,CAClE,+BAA+B,EAC/B,OAAO,yCAAyC,CACjD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,qBAAa,mBAAmB;IAQ5B,OAAO,CAAC,QAAQ,CAAC,MAAM;aACP,WAAW,EAAE,WAAW;IAR1C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwD;IAC9E,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;IAExB,YACmB,MAAM,EAAE,mBAAmB,EAC5B,WAAW,EAAE,WAAW,EACxC,QAAQ,CAAC,EAAE,cAAc,EAG1B;IAED;;;OAGG;IACI,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAE9E;IAED;;;;;OAKG;IACI,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gCAAgC,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA6B1G;IAED;;;OAGG;IACI,IAAI,SAOV;CACF"}
@@ -0,0 +1,81 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ /**
3
+ * Per-epoch state shared across every `CheckpointSubTreeOrchestrator` constructed for
4
+ * the same epoch. Owns the chonk-verifier proof cache so a tx whose checkpoint is
5
+ * reorged out and re-appears in a replacement checkpoint does not have to re-prove
6
+ * its chonk circuit.
7
+ *
8
+ * The context's chonk-verifier broker jobs are deliberately submitted **outside** the
9
+ * sub-tree's deferred-proving queue. The sub-tree's `cancel()` therefore does not abort
10
+ * them — by design, because their result is tx-scoped, not sub-tree-scoped, and a
11
+ * replacement sub-tree should be able to consume the cached proof.
12
+ *
13
+ * Callers (`EpochProvingJob`, or unit tests) construct one context per epoch and pass
14
+ * it into every sub-tree they create. `stop()` aborts every in-flight chonk job.
15
+ */ export class EpochProvingContext {
16
+ prover;
17
+ epochNumber;
18
+ cache;
19
+ /** Abort controllers for in-flight chonk jobs, keyed by tx hash. */ pending;
20
+ log;
21
+ stopped;
22
+ constructor(prover, epochNumber, bindings){
23
+ this.prover = prover;
24
+ this.epochNumber = epochNumber;
25
+ this.cache = new Map();
26
+ this.pending = new Map();
27
+ this.stopped = false;
28
+ this.log = createLogger('prover-client:epoch-proving-context', bindings);
29
+ }
30
+ /**
31
+ * Returns the cached chonk-verifier proof promise for the given tx hash, or
32
+ * `undefined` if none has been enqueued yet. Non-mutating.
33
+ */ getCached(txHash) {
34
+ return this.cache.get(txHash);
35
+ }
36
+ /**
37
+ * Enqueues a chonk-verifier proof for the given tx hash, returning the promise (or
38
+ * the already-cached one if already enqueued). The promise resolves when the broker
39
+ * delivers the result; on rejection (including `stop()`), the cache entry is removed
40
+ * so a subsequent caller can re-enqueue.
41
+ */ enqueue(txHash, inputs) {
42
+ if (this.stopped) {
43
+ return Promise.reject(new Error('EpochProvingContext is stopped'));
44
+ }
45
+ const cached = this.cache.get(txHash);
46
+ if (cached) {
47
+ return cached;
48
+ }
49
+ const controller = new AbortController();
50
+ this.pending.set(txHash, controller);
51
+ this.log.debug(`Enqueueing chonk-verifier circuit`, {
52
+ txHash,
53
+ epochNumber: this.epochNumber
54
+ });
55
+ const promise = this.prover.getPublicChonkVerifierProof(inputs, controller.signal, this.epochNumber).finally(()=>this.pending.delete(txHash));
56
+ // Self-clean on rejection so a future caller can re-enqueue. Mark the rejection
57
+ // path as observed to silence unhandled-rejection warnings when no consumer
58
+ // awaits the promise (e.g. when the only `.then` chain belonged to a cancelled
59
+ // sub-tree's tx-proving state).
60
+ promise.catch((err)=>{
61
+ this.cache.delete(txHash);
62
+ this.log.debug(`Chonk-verifier proof failed; evicted from cache`, {
63
+ txHash,
64
+ error: `${err}`
65
+ });
66
+ });
67
+ this.cache.set(txHash, promise);
68
+ return promise;
69
+ }
70
+ /**
71
+ * Aborts every in-flight chonk-verifier broker job and clears the cache. Called by
72
+ * the owning `EpochProvingJob` when the job stops.
73
+ */ stop() {
74
+ this.stopped = true;
75
+ for (const controller of this.pending.values()){
76
+ controller.abort();
77
+ }
78
+ this.pending.clear();
79
+ this.cache.clear();
80
+ }
81
+ }
@@ -39,7 +39,7 @@ export declare class EpochProvingState {
39
39
  private endBlobAccumulator;
40
40
  private finalBatchedBlob;
41
41
  private provingStateLifecycle;
42
- readonly cachedChonkVerifierProofs: Map<string, Promise<PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, 519>>>;
42
+ readonly cachedChonkVerifierProofs: Map<string, Promise<PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, 480>>>;
43
43
  constructor(epochNumber: EpochNumber, totalNumCheckpoints: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges, onCheckpointBlobAccumulatorSet: (checkpoint: CheckpointProvingState) => Promise<void>, completionCallback: (result: ProvingResult) => void, rejectionCallback: (reason: string) => void);
44
44
  startNewCheckpoint(checkpointIndex: number, constants: CheckpointConstantData, totalNumBlocks: number, previousBlockHeader: BlockHeader, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, l1ToL2Messages: Fr[], lastL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>, newL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>): CheckpointProvingState;
45
45
  getCheckpointProvingState(index: number): CheckpointProvingState | undefined;
@@ -1,2 +1,5 @@
1
1
  export { ProvingOrchestrator } from './orchestrator.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUMifQ==
2
+ export { CheckpointSubTreeOrchestrator, type SubTreeResult } from './checkpoint-sub-tree-orchestrator.js';
3
+ export { EpochProvingContext, type ChonkVerifierProofResult } from './epoch-proving-context.js';
4
+ export { TopTreeOrchestrator, TopTreeCancelledError, type CheckpointTopTreeData, type TopTreeResult, } from './top-tree-orchestrator.js';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDeEQsT0FBTyxFQUFFLDZCQUE2QixFQUFFLEtBQUssYUFBYSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLEtBQUssd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRyxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixLQUFLLHFCQUFxQixFQUMxQixLQUFLLGFBQWEsR0FDbkIsTUFBTSw0QkFBNEIsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,KAAK,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC1G,OAAO,EAAE,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAChG,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,GACnB,MAAM,4BAA4B,CAAC"}
@@ -1 +1,4 @@
1
1
  export { ProvingOrchestrator } from './orchestrator.js';
2
+ export { CheckpointSubTreeOrchestrator } from './checkpoint-sub-tree-orchestrator.js';
3
+ export { EpochProvingContext } from './epoch-proving-context.js';
4
+ export { TopTreeOrchestrator, TopTreeCancelledError } from './top-tree-orchestrator.js';
@@ -1,7 +1,7 @@
1
1
  import { BatchedBlob, FinalBlobBatchingChallenges } from '@aztec/blob-lib/types';
2
2
  import { BlockNumber, EpochNumber } from '@aztec/foundation/branded-types';
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
- import { type LoggerBindings } from '@aztec/foundation/log';
4
+ import type { LoggerBindings } from '@aztec/foundation/log';
5
5
  import { EthAddress } from '@aztec/stdlib/block';
6
6
  import type { EpochProver, ForkMerkleTreeOperations, ReadonlyWorldStateAccess, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
7
7
  import type { Proof } from '@aztec/stdlib/proofs';
@@ -10,6 +10,9 @@ import type { BlockHeader, ProcessedTx, Tx } from '@aztec/stdlib/tx';
10
10
  import type { UInt64 } from '@aztec/stdlib/types';
11
11
  import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
12
12
  import type { BlockProvingState } from './block-proving-state.js';
13
+ import type { CheckpointProvingState } from './checkpoint-proving-state.js';
14
+ import { EpochProvingState, type ProvingResult } from './epoch-proving-state.js';
15
+ import { TopTreeProvingScheduler } from './top-tree-proving-scheduler.js';
13
16
  /**
14
17
  * Implements an event driven proving scheduler to build the recursive proof tree. The idea being:
15
18
  * 1. Transactions are provided to the scheduler post simulation.
@@ -23,24 +26,21 @@ import type { BlockProvingState } from './block-proving-state.js';
23
26
  /**
24
27
  * The orchestrator, managing the flow of recursive proving operations required to build the rollup proof tree.
25
28
  */
26
- export declare class ProvingOrchestrator implements EpochProver {
29
+ export declare class ProvingOrchestrator extends TopTreeProvingScheduler implements EpochProver {
27
30
  private dbProvider;
28
- private prover;
29
31
  private readonly proverId;
30
32
  private readonly cancelJobsOnStop;
31
- private readonly enqueueConcurrency;
32
- private provingState;
33
- private pendingProvingJobs;
34
- private provingPromise;
33
+ protected provingState: EpochProvingState | undefined;
34
+ protected provingPromise: Promise<ProvingResult> | undefined;
35
35
  private metrics;
36
36
  private dbs;
37
- private logger;
38
- private deferredJobQueue;
39
37
  constructor(dbProvider: ReadonlyWorldStateAccess & ForkMerkleTreeOperations, prover: ServerCircuitProver, proverId: EthAddress, cancelJobsOnStop: boolean | undefined, enqueueConcurrency: number, telemetryClient?: TelemetryClient, bindings?: LoggerBindings);
40
38
  get tracer(): Tracer;
41
39
  getProverId(): EthAddress;
42
40
  getNumActiveForks(): number;
43
- stop(): Promise<void>;
41
+ protected cancelInternal(): void;
42
+ protected wrapCircuitCall<T>(circuitName: string, fn: (signal: AbortSignal) => Promise<T>): (signal: AbortSignal) => Promise<T>;
43
+ protected onRootRollupComplete(state: EpochProvingState): void;
44
44
  startNewEpoch(epochNumber: EpochNumber, totalNumCheckpoints: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges): void;
45
45
  /**
46
46
  * Starts a new checkpoint.
@@ -90,17 +90,10 @@ export declare class ProvingOrchestrator implements EpochProver {
90
90
  proof: Proof;
91
91
  batchedBlobInputs: BatchedBlob;
92
92
  }>;
93
- /**
94
- * Enqueue a job to be scheduled
95
- * @param provingState - The proving state object being operated on
96
- * @param jobType - The type of job to be queued
97
- * @param job - The actual job, returns a promise notifying of the job's completion
98
- */
99
- private deferredProving;
100
93
  private updateL1ToL2MessageTree;
101
94
  private prepareBaseRollupInputs;
102
95
  private enqueueBaseRollup;
103
- private getOrEnqueueChonkVerifier;
96
+ protected getOrEnqueueChonkVerifier(provingState: BlockProvingState, txIndex: number): void;
104
97
  private doEnqueueChonkVerifier;
105
98
  private enqueueMergeRollup;
106
99
  private enqueueBlockRootRollup;
@@ -109,15 +102,10 @@ export declare class ProvingOrchestrator implements EpochProver {
109
102
  private enqueueRootParityCircuit;
110
103
  private enqueueBlockMergeRollup;
111
104
  private enqueueCheckpointRootRollup;
112
- private enqueueCheckpointMergeRollup;
113
- private enqueueEpochPadding;
114
- private enqueueRootRollup;
115
105
  private checkAndEnqueueNextMergeRollup;
116
106
  private checkAndEnqueueBlockRootRollup;
117
107
  private checkAndEnqueueNextBlockMergeRollup;
118
- private checkAndEnqueueCheckpointRootRollup;
119
- private checkAndEnqueueNextCheckpointMergeRollup;
120
- private checkAndEnqueueRootRollup;
108
+ protected checkAndEnqueueCheckpointRootRollup(provingState: CheckpointProvingState): Promise<void>;
121
109
  /**
122
110
  * Executes the VM circuit for a public function, will enqueue the corresponding kernel if the
123
111
  * previous kernel is ready
@@ -125,6 +113,6 @@ export declare class ProvingOrchestrator implements EpochProver {
125
113
  * @param txIndex - The index of the transaction being proven
126
114
  */
127
115
  private enqueueVM;
128
- private checkAndEnqueueBaseRollup;
116
+ protected checkAndEnqueueBaseRollup(provingState: BlockProvingState, txIndex: number): void;
129
117
  }
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JjaGVzdHJhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JjaGVzdHJhdG9yL29yY2hlc3RyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFjLE1BQU0sdUJBQXVCLENBQUM7QUFRN0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUzRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFcEQsT0FBTyxFQUFlLEtBQUssY0FBYyxFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBT3ZGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEtBQUssRUFDVixXQUFXLEVBQ1gsd0JBQXdCLEVBR3hCLHdCQUF3QixFQUN4QixtQkFBbUIsRUFDcEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBTUwsc0JBQXNCLEVBS3RCLHNCQUFzQixFQUN2QixNQUFNLHNCQUFzQixDQUFDO0FBRzlCLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUVMLEtBQUssZUFBZSxFQUNwQixLQUFLLE1BQU0sRUFJWixNQUFNLHlCQUF5QixDQUFDO0FBZWpDLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFNbEU7Ozs7Ozs7OztHQVNHO0FBRUg7O0dBRUc7QUFDSCxxQkFBYSxtQkFBb0IsWUFBVyxXQUFXO0lBWW5ELE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxNQUFNO0lB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
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JjaGVzdHJhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JjaGVzdHJhdG9yL29yY2hlc3RyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFjLE1BQU0sdUJBQXVCLENBQUM7QUFPN0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFNNUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxFQUNWLFdBQVcsRUFDWCx3QkFBd0IsRUFHeEIsd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNwQixNQUFNLGlDQUFpQyxDQUFDO0FBRXpDLE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFNTCxzQkFBc0IsRUFLdEIsc0JBQXNCLEVBQ3ZCLE1BQU0sc0JBQXNCLENBQUM7QUFHOUIsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEVBRUwsS0FBSyxlQUFlLEVBQ3BCLEtBQUssTUFBTSxFQUlaLE1BQU0seUJBQXlCLENBQUM7QUFlakMsT0FBTyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLGFBQWEsRUFBc0IsTUFBTSwwQkFB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
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -371,17 +371,13 @@ function _apply_decs_2203_r(targetClass, memberDecs, classDecs, parentClass) {
371
371
  return (_apply_decs_2203_r = applyDecs2203RFactory())(targetClass, memberDecs, classDecs, parentClass);
372
372
  }
373
373
  var _dec, _dec1, _dec2, _dec3, _dec4, _initProto;
374
- import { L1_TO_L2_MSG_SUBTREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants';
374
+ import { L1_TO_L2_MSG_SUBTREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants';
375
375
  import { BlockNumber } from '@aztec/foundation/branded-types';
376
- import { padArrayEnd } from '@aztec/foundation/collection';
377
- import { Fr } from '@aztec/foundation/curves/bn254';
378
- import { AbortError } from '@aztec/foundation/error';
379
- import { createLogger } from '@aztec/foundation/log';
380
376
  import { promiseWithResolvers } from '@aztec/foundation/promise';
381
- import { SerialQueue } from '@aztec/foundation/queue';
382
377
  import { assertLength } from '@aztec/foundation/serialize';
383
378
  import { pushTestData } from '@aztec/foundation/testing';
384
379
  import { elapsed } from '@aztec/foundation/timer';
380
+ import { appendL1ToL2MessagesToTree } from '@aztec/stdlib/messaging';
385
381
  import { BlockRootEmptyTxFirstRollupPrivateInputs, BlockRootFirstRollupPrivateInputs, BlockRootSingleTxFirstRollupPrivateInputs, BlockRootSingleTxRollupPrivateInputs, CheckpointRootSingleBlockRollupPrivateInputs, PrivateTxBaseRollupPrivateInputs } from '@aztec/stdlib/rollup';
386
382
  import { MerkleTreeId } from '@aztec/stdlib/trees';
387
383
  import { Attributes, getTelemetryClient, trackSpan, wrapCallbackInSpan } from '@aztec/telemetry-client';
@@ -389,6 +385,7 @@ import { inspect } from 'util';
389
385
  import { buildHeaderFromCircuitOutputs, getLastSiblingPath, getPublicChonkVerifierPrivateInputsFromTx, getRootTreeSiblingPath, getSubtreeSiblingPath, getTreeSnapshot, insertSideEffectsAndBuildBaseRollupHints, validatePartialState, validateTx } from './block-building-helpers.js';
390
386
  import { EpochProvingState } from './epoch-proving-state.js';
391
387
  import { ProvingOrchestratorMetrics } from './orchestrator_metrics.js';
388
+ import { TopTreeProvingScheduler } from './top-tree-proving-scheduler.js';
392
389
  import { TxProvingState } from './tx-proving-state.js';
393
390
  _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
394
391
  [Attributes.BLOCK_NUMBER]: blockNumber
@@ -410,12 +407,10 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
410
407
  * The proving implementation is determined by the provided prover. This could be for example a local prover or a remote prover pool.
411
408
  */ /**
412
409
  * The orchestrator, managing the flow of recursive proving operations required to build the rollup proof tree.
413
- */ export class ProvingOrchestrator {
410
+ */ export class ProvingOrchestrator extends TopTreeProvingScheduler {
414
411
  dbProvider;
415
- prover;
416
412
  proverId;
417
413
  cancelJobsOnStop;
418
- enqueueConcurrency;
419
414
  static{
420
415
  ({ e: [_initProto] } = _apply_decs_2203_r(this, [
421
416
  [
@@ -446,27 +441,12 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
446
441
  ], []));
447
442
  }
448
443
  provingState;
449
- pendingProvingJobs;
450
444
  provingPromise;
451
445
  metrics;
452
- // eslint-disable-next-line aztec-custom/no-non-primitive-in-collections
453
446
  dbs;
454
- logger;
455
- deferredJobQueue;
456
447
  constructor(dbProvider, prover, proverId, cancelJobsOnStop = false, enqueueConcurrency, telemetryClient = getTelemetryClient(), bindings){
457
- this.dbProvider = dbProvider;
458
- this.prover = prover;
459
- this.proverId = proverId;
460
- this.cancelJobsOnStop = cancelJobsOnStop;
461
- this.enqueueConcurrency = enqueueConcurrency;
462
- this.provingState = (_initProto(this), undefined);
463
- this.pendingProvingJobs = [];
464
- this.provingPromise = undefined;
465
- this.dbs = new Map();
466
- this.deferredJobQueue = new SerialQueue();
467
- this.logger = createLogger('prover-client:orchestrator', bindings);
448
+ super(prover, enqueueConcurrency, 'prover-client:orchestrator', bindings), this.dbProvider = dbProvider, this.proverId = proverId, this.cancelJobsOnStop = cancelJobsOnStop, this.provingState = (_initProto(this), undefined), this.provingPromise = undefined, this.dbs = new Map();
468
449
  this.metrics = new ProvingOrchestratorMetrics(telemetryClient, 'ProvingOrchestrator');
469
- this.deferredJobQueue.start(this.enqueueConcurrency);
470
450
  }
471
451
  get tracer() {
472
452
  return this.metrics.tracer;
@@ -477,11 +457,18 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
477
457
  getNumActiveForks() {
478
458
  return this.dbs.size;
479
459
  }
480
- async stop() {
481
- // Grab the old queue before cancel() replaces it, so we can await its draining.
482
- const oldQueue = this.deferredJobQueue;
460
+ cancelInternal() {
483
461
  this.cancel();
484
- await oldQueue.cancel();
462
+ }
463
+ wrapCircuitCall(circuitName, fn) {
464
+ return wrapCallbackInSpan(this.tracer, `ProvingOrchestrator.prover.${circuitName}`, {
465
+ [Attributes.PROTOCOL_CIRCUIT_NAME]: circuitName
466
+ }, fn);
467
+ }
468
+ onRootRollupComplete(state) {
469
+ state.resolve({
470
+ status: 'success'
471
+ });
485
472
  }
486
473
  startNewEpoch(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges) {
487
474
  if (this.provingState?.verifyState()) {
@@ -741,15 +728,7 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
741
728
  * If cancelJobsOnStop is true, aborts all pending jobs with the broker (which marks them as 'Aborted').
742
729
  * If cancelJobsOnStop is false (default), jobs remain in the broker queue and can be reused on restart/reorg.
743
730
  */ cancel() {
744
- void this.deferredJobQueue.cancel();
745
- // Recreate the queue so it can accept jobs for subsequent epochs.
746
- this.deferredJobQueue = new SerialQueue();
747
- this.deferredJobQueue.start(this.enqueueConcurrency);
748
- if (this.cancelJobsOnStop) {
749
- for (const controller of this.pendingProvingJobs){
750
- controller.abort();
751
- }
752
- }
731
+ this.resetSchedulerState(this.cancelJobsOnStop);
753
732
  this.provingState?.cancel();
754
733
  for (const [blockNumber, db] of this.dbs.entries()){
755
734
  void db.close().catch((err)=>this.logger.error(`Error closing db for block ${blockNumber}`, err));
@@ -781,62 +760,11 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
781
760
  });
782
761
  return epochProofResult;
783
762
  }
784
- /**
785
- * Enqueue a job to be scheduled
786
- * @param provingState - The proving state object being operated on
787
- * @param jobType - The type of job to be queued
788
- * @param job - The actual job, returns a promise notifying of the job's completion
789
- */ deferredProving(provingState, request, callback) {
790
- if (!provingState.verifyState()) {
791
- this.logger.debug(`Not enqueuing job, state no longer valid`);
792
- return;
793
- }
794
- const controller = new AbortController();
795
- this.pendingProvingJobs.push(controller);
796
- // We use a 'safeJob'. We don't want promise rejections in the proving pool, we want to capture the error here
797
- // and reject the proving job whilst keeping the event loop free of rejections
798
- const safeJob = async ()=>{
799
- try {
800
- // there's a delay between enqueueing this job and it actually running
801
- if (controller.signal.aborted) {
802
- return;
803
- }
804
- const result = await request(controller.signal);
805
- if (!provingState.verifyState()) {
806
- this.logger.debug(`State no longer valid, discarding result`);
807
- return;
808
- }
809
- // we could have been cancelled whilst waiting for the result
810
- // and the prover ignored the signal. Drop the result in that case
811
- if (controller.signal.aborted) {
812
- return;
813
- }
814
- await callback(result);
815
- } catch (err) {
816
- if (err instanceof AbortError) {
817
- // operation was cancelled, probably because the block was cancelled
818
- // drop this result
819
- return;
820
- }
821
- this.logger.error(`Error thrown when proving job`, err);
822
- provingState.reject(`${err}`);
823
- } finally{
824
- const index = this.pendingProvingJobs.indexOf(controller);
825
- if (index > -1) {
826
- this.pendingProvingJobs.splice(index, 1);
827
- }
828
- }
829
- };
830
- // Enqueue onto the serial queue with limited workers to avoid starving the event loop.
831
- // Workers yield between jobs via await, allowing I/O callbacks to process.
832
- void this.deferredJobQueue.put(()=>safeJob());
833
- }
834
763
  async updateL1ToL2MessageTree(l1ToL2Messages, db) {
835
- const l1ToL2MessagesPadded = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, 'Too many L1 to L2 messages');
836
764
  const lastL1ToL2MessageTreeSnapshot = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, db);
837
765
  const lastL1ToL2MessageSubtreeRootSiblingPath = assertLength(await getSubtreeSiblingPath(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, L1_TO_L2_MSG_SUBTREE_HEIGHT, db), L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH);
838
766
  // Update the local trees to include the new l1 to l2 messages
839
- await db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2MessagesPadded);
767
+ await appendL1ToL2MessagesToTree(db, l1ToL2Messages);
840
768
  const newL1ToL2MessageTreeSnapshot = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, db);
841
769
  const newL1ToL2MessageSubtreeRootSiblingPath = assertLength(await getSubtreeSiblingPath(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, L1_TO_L2_MSG_SUBTREE_HEIGHT, db), L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH);
842
770
  return {
@@ -915,7 +843,6 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
915
843
  }
916
844
  const txProvingState = provingState.getTxProvingState(txIndex);
917
845
  const txHash = txProvingState.processedTx.hash.toString();
918
- NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH;
919
846
  const handleResult = (result)=>{
920
847
  this.logger.debug(`Got chonk verifier proof for tx index: ${txIndex}`, {
921
848
  txHash
@@ -990,7 +917,11 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
990
917
  return this.prover.getBlockRootRollupProof(inputs, signal, provingState.epochNumber);
991
918
  }
992
919
  }), async (result)=>{
993
- this.logger.debug(`Completed ${rollupType} proof for block ${provingState.blockNumber}`);
920
+ this.logger.debug(`Completed ${rollupType} proof for block ${provingState.blockNumber}`, {
921
+ blockNumber: provingState.blockNumber,
922
+ checkpointIndex: provingState.parentCheckpoint.index,
923
+ ...result.inputs.toInspect()
924
+ });
994
925
  const leafLocation = provingState.setBlockRootRollupProof(result);
995
926
  const checkpointProvingState = provingState.parentCheckpoint;
996
927
  // Verification is called from both here and setBlockCompleted. Whichever runs last
@@ -1062,6 +993,11 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
1062
993
  this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getBlockMergeRollupProof', {
1063
994
  [Attributes.PROTOCOL_CIRCUIT_NAME]: 'rollup-block-merge'
1064
995
  }, (signal)=>this.prover.getBlockMergeRollupProof(inputs, signal, provingState.epochNumber)), async (result)=>{
996
+ this.logger.debug(`Completed block merge rollup proof for checkpoint ${provingState.index}`, {
997
+ checkpointIndex: provingState.index,
998
+ mergeLocation: location,
999
+ ...result.inputs.toInspect()
1000
+ });
1065
1001
  provingState.setBlockMergeRollupProof(location, result);
1066
1002
  await this.checkAndEnqueueNextBlockMergeRollup(provingState, location);
1067
1003
  });
@@ -1094,7 +1030,10 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
1094
1030
  provingState.reject(`Blob accumulator state mismatch.`);
1095
1031
  return;
1096
1032
  }
1097
- this.logger.debug(`Completed ${rollupType} proof for checkpoint ${provingState.index}.`);
1033
+ this.logger.debug(`Completed ${rollupType} proof for checkpoint ${provingState.index}`, {
1034
+ checkpointIndex: provingState.index,
1035
+ ...result.inputs.toInspect()
1036
+ });
1098
1037
  const leafLocation = provingState.setCheckpointRootRollupProof(result);
1099
1038
  const epochProvingState = provingState.parentEpoch;
1100
1039
  if (epochProvingState.totalNumCheckpoints === 1) {
@@ -1104,61 +1043,6 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
1104
1043
  }
1105
1044
  });
1106
1045
  }
1107
- enqueueCheckpointMergeRollup(provingState, location) {
1108
- if (!provingState.verifyState()) {
1109
- this.logger.debug('Not running checkpoint merge rollup. State no longer valid.');
1110
- return;
1111
- }
1112
- if (!provingState.tryStartProvingCheckpointMerge(location)) {
1113
- this.logger.debug('Checkpoint merge rollup already started.');
1114
- return;
1115
- }
1116
- const inputs = provingState.getCheckpointMergeRollupInputs(location);
1117
- this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getCheckpointMergeRollupProof', {
1118
- [Attributes.PROTOCOL_CIRCUIT_NAME]: 'rollup-checkpoint-merge'
1119
- }, (signal)=>this.prover.getCheckpointMergeRollupProof(inputs, signal, provingState.epochNumber)), (result)=>{
1120
- this.logger.debug('Completed proof for checkpoint merge rollup.');
1121
- provingState.setCheckpointMergeRollupProof(location, result);
1122
- this.checkAndEnqueueNextCheckpointMergeRollup(provingState, location);
1123
- });
1124
- }
1125
- enqueueEpochPadding(provingState) {
1126
- if (!provingState.verifyState()) {
1127
- this.logger.debug('Not running epoch padding. State no longer valid.');
1128
- return;
1129
- }
1130
- if (!provingState.tryStartProvingPaddingCheckpoint()) {
1131
- this.logger.debug('Padding checkpoint already started.');
1132
- return;
1133
- }
1134
- this.logger.debug('Padding epoch proof with a padding block root proof.');
1135
- const inputs = provingState.getPaddingCheckpointInputs();
1136
- this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getCheckpointPaddingRollupProof', {
1137
- [Attributes.PROTOCOL_CIRCUIT_NAME]: 'rollup-checkpoint-padding'
1138
- }, (signal)=>this.prover.getCheckpointPaddingRollupProof(inputs, signal, provingState.epochNumber)), (result)=>{
1139
- this.logger.debug('Completed proof for padding checkpoint.');
1140
- provingState.setCheckpointPaddingProof(result);
1141
- this.checkAndEnqueueRootRollup(provingState);
1142
- });
1143
- }
1144
- // Executes the root rollup circuit
1145
- enqueueRootRollup(provingState) {
1146
- if (!provingState.verifyState()) {
1147
- this.logger.debug('Not running root rollup, state no longer valid');
1148
- return;
1149
- }
1150
- this.logger.debug(`Preparing root rollup`);
1151
- const inputs = provingState.getRootRollupInputs();
1152
- this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getRootRollupProof', {
1153
- [Attributes.PROTOCOL_CIRCUIT_NAME]: 'rollup-root'
1154
- }, (signal)=>this.prover.getRootRollupProof(inputs, signal, provingState.epochNumber)), (result)=>{
1155
- this.logger.verbose(`Orchestrator completed root rollup for epoch ${provingState.epochNumber}`);
1156
- provingState.setRootRollupProof(result);
1157
- provingState.resolve({
1158
- status: 'success'
1159
- });
1160
- });
1161
- }
1162
1046
  checkAndEnqueueNextMergeRollup(provingState, currentLocation) {
1163
1047
  if (!provingState.isReadyForMergeRollup(currentLocation)) {
1164
1048
  return;
@@ -1194,24 +1078,6 @@ _dec = trackSpan('ProvingOrchestrator.startNewBlock', (blockNumber)=>({
1194
1078
  }
1195
1079
  await this.enqueueCheckpointRootRollup(provingState);
1196
1080
  }
1197
- checkAndEnqueueNextCheckpointMergeRollup(provingState, currentLocation) {
1198
- if (!provingState.isReadyForCheckpointMerge(currentLocation)) {
1199
- return;
1200
- }
1201
- const parentLocation = provingState.getParentLocation(currentLocation);
1202
- if (parentLocation.level === 0) {
1203
- this.checkAndEnqueueRootRollup(provingState);
1204
- } else {
1205
- this.enqueueCheckpointMergeRollup(provingState, parentLocation);
1206
- }
1207
- }
1208
- checkAndEnqueueRootRollup(provingState) {
1209
- if (!provingState.isReadyForRootRollup()) {
1210
- this.logger.debug('Not ready for root rollup');
1211
- return;
1212
- }
1213
- this.enqueueRootRollup(provingState);
1214
- }
1215
1081
  /**
1216
1082
  * Executes the VM circuit for a public function, will enqueue the corresponding kernel if the
1217
1083
  * previous kernel is ready