@aztec/prover-client 0.0.1-commit.d3ec352c → 0.0.1-commit.d58ff9d0

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 (164) hide show
  1. package/dest/config.d.ts +2 -2
  2. package/dest/config.d.ts.map +1 -1
  3. package/dest/config.js +17 -3
  4. package/dest/light/index.d.ts +2 -0
  5. package/dest/light/index.d.ts.map +1 -0
  6. package/dest/light/index.js +1 -0
  7. package/dest/light/lightweight_checkpoint_builder.d.ts +38 -15
  8. package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -1
  9. package/dest/light/lightweight_checkpoint_builder.js +162 -36
  10. package/dest/mocks/fixtures.d.ts +1 -1
  11. package/dest/mocks/fixtures.d.ts.map +1 -1
  12. package/dest/mocks/fixtures.js +4 -3
  13. package/dest/mocks/test_context.d.ts +15 -13
  14. package/dest/mocks/test_context.d.ts.map +1 -1
  15. package/dest/mocks/test_context.js +50 -36
  16. package/dest/orchestrator/block-building-helpers.d.ts +6 -6
  17. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  18. package/dest/orchestrator/block-building-helpers.js +5 -5
  19. package/dest/orchestrator/block-proving-state.d.ts +5 -2
  20. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  21. package/dest/orchestrator/block-proving-state.js +8 -1
  22. package/dest/orchestrator/checkpoint-proving-state.d.ts +20 -23
  23. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -1
  24. package/dest/orchestrator/checkpoint-proving-state.js +23 -87
  25. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts +161 -0
  26. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts.map +1 -0
  27. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.js +1066 -0
  28. package/dest/orchestrator/chonk-cache.d.ts +39 -0
  29. package/dest/orchestrator/chonk-cache.d.ts.map +1 -0
  30. package/dest/orchestrator/chonk-cache.js +80 -0
  31. package/dest/orchestrator/index.d.ts +4 -2
  32. package/dest/orchestrator/index.d.ts.map +1 -1
  33. package/dest/orchestrator/index.js +3 -1
  34. package/dest/orchestrator/orchestrator_metrics.d.ts +1 -3
  35. package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
  36. package/dest/orchestrator/orchestrator_metrics.js +2 -15
  37. package/dest/orchestrator/proving-scheduler.d.ts +81 -0
  38. package/dest/orchestrator/proving-scheduler.d.ts.map +1 -0
  39. package/dest/orchestrator/proving-scheduler.js +120 -0
  40. package/dest/orchestrator/top-tree-orchestrator.d.ts +88 -0
  41. package/dest/orchestrator/top-tree-orchestrator.d.ts.map +1 -0
  42. package/dest/orchestrator/top-tree-orchestrator.js +232 -0
  43. package/dest/orchestrator/top-tree-proving-state.d.ts +61 -0
  44. package/dest/orchestrator/top-tree-proving-state.d.ts.map +1 -0
  45. package/dest/orchestrator/top-tree-proving-state.js +185 -0
  46. package/dest/orchestrator/tx-proving-state.d.ts +7 -6
  47. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  48. package/dest/orchestrator/tx-proving-state.js +8 -8
  49. package/dest/prover-client/factory.d.ts +3 -3
  50. package/dest/prover-client/factory.d.ts.map +1 -1
  51. package/dest/prover-client/prover-client.d.ts +65 -8
  52. package/dest/prover-client/prover-client.d.ts.map +1 -1
  53. package/dest/prover-client/prover-client.js +66 -14
  54. package/dest/proving_broker/broker_prover_facade.d.ts +8 -6
  55. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  56. package/dest/proving_broker/broker_prover_facade.js +18 -31
  57. package/dest/proving_broker/config.d.ts +13 -65
  58. package/dest/proving_broker/config.d.ts.map +1 -1
  59. package/dest/proving_broker/config.js +23 -6
  60. package/dest/proving_broker/fixtures.js +1 -1
  61. package/dest/proving_broker/index.d.ts +2 -1
  62. package/dest/proving_broker/index.d.ts.map +1 -1
  63. package/dest/proving_broker/index.js +1 -0
  64. package/dest/proving_broker/proof_store/factory.d.ts +2 -5
  65. package/dest/proving_broker/proof_store/factory.d.ts.map +1 -1
  66. package/dest/proving_broker/proof_store/factory.js +7 -30
  67. package/dest/proving_broker/proof_store/file_store_proof_store.d.ts +18 -0
  68. package/dest/proving_broker/proof_store/file_store_proof_store.d.ts.map +1 -0
  69. package/dest/proving_broker/proof_store/file_store_proof_store.js +60 -0
  70. package/dest/proving_broker/proof_store/index.d.ts +2 -2
  71. package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
  72. package/dest/proving_broker/proof_store/index.js +1 -1
  73. package/dest/proving_broker/proving_agent.d.ts +5 -9
  74. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  75. package/dest/proving_broker/proving_agent.js +4 -19
  76. package/dest/proving_broker/proving_broker.d.ts +8 -5
  77. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  78. package/dest/proving_broker/proving_broker.js +72 -21
  79. package/dest/proving_broker/proving_broker_database/persisted.d.ts +3 -2
  80. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
  81. package/dest/proving_broker/proving_broker_database/persisted.js +391 -3
  82. package/dest/proving_broker/proving_broker_instrumentation.d.ts +3 -1
  83. package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
  84. package/dest/proving_broker/proving_broker_instrumentation.js +22 -35
  85. package/dest/proving_broker/proving_job_controller.d.ts +4 -3
  86. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  87. package/dest/proving_broker/proving_job_controller.js +8 -6
  88. package/dest/proving_broker/rpc.d.ts +6 -2
  89. package/dest/proving_broker/rpc.d.ts.map +1 -1
  90. package/dest/proving_broker/rpc.js +87 -23
  91. package/dest/test/epoch_settlement.d.ts +36 -0
  92. package/dest/test/epoch_settlement.d.ts.map +1 -0
  93. package/dest/test/epoch_settlement.js +52 -0
  94. package/dest/test/index.d.ts +2 -0
  95. package/dest/test/index.d.ts.map +1 -0
  96. package/dest/test/index.js +1 -0
  97. package/dest/test/mock_proof_store.d.ts +3 -3
  98. package/dest/test/mock_proof_store.d.ts.map +1 -1
  99. package/dest/test/mock_prover.d.ts +5 -5
  100. package/dest/test/mock_prover.d.ts.map +1 -1
  101. package/dest/test/mock_prover.js +4 -4
  102. package/package.json +23 -22
  103. package/src/config.ts +19 -3
  104. package/src/light/index.ts +1 -0
  105. package/src/light/lightweight_checkpoint_builder.ts +229 -50
  106. package/src/mocks/fixtures.ts +4 -3
  107. package/src/mocks/test_context.ts +44 -48
  108. package/src/orchestrator/block-building-helpers.ts +5 -5
  109. package/src/orchestrator/block-proving-state.ts +10 -1
  110. package/src/orchestrator/checkpoint-proving-state.ts +22 -116
  111. package/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +1044 -0
  112. package/src/orchestrator/chonk-cache.ts +99 -0
  113. package/src/orchestrator/index.ts +8 -1
  114. package/src/orchestrator/orchestrator_metrics.ts +2 -25
  115. package/src/orchestrator/proving-scheduler.ts +160 -0
  116. package/src/orchestrator/top-tree-orchestrator.ts +384 -0
  117. package/src/orchestrator/top-tree-proving-state.ts +219 -0
  118. package/src/orchestrator/tx-proving-state.ts +11 -15
  119. package/src/prover-client/factory.ts +6 -2
  120. package/src/prover-client/prover-client.ts +148 -29
  121. package/src/proving_broker/broker_prover_facade.ts +27 -37
  122. package/src/proving_broker/config.ts +26 -3
  123. package/src/proving_broker/fixtures.ts +1 -1
  124. package/src/proving_broker/index.ts +1 -0
  125. package/src/proving_broker/proof_store/factory.ts +10 -32
  126. package/src/proving_broker/proof_store/file_store_proof_store.ts +78 -0
  127. package/src/proving_broker/proof_store/index.ts +1 -1
  128. package/src/proving_broker/proving_agent.ts +6 -19
  129. package/src/proving_broker/proving_broker.ts +68 -16
  130. package/src/proving_broker/proving_broker_database/persisted.ts +17 -3
  131. package/src/proving_broker/proving_broker_instrumentation.ts +23 -35
  132. package/src/proving_broker/proving_job_controller.ts +11 -6
  133. package/src/proving_broker/rpc.ts +46 -20
  134. package/src/test/epoch_settlement.ts +82 -0
  135. package/src/test/index.ts +1 -0
  136. package/src/test/mock_prover.ts +3 -15
  137. package/dest/block-factory/index.d.ts +0 -2
  138. package/dest/block-factory/index.d.ts.map +0 -1
  139. package/dest/block-factory/index.js +0 -1
  140. package/dest/block-factory/light.d.ts +0 -38
  141. package/dest/block-factory/light.d.ts.map +0 -1
  142. package/dest/block-factory/light.js +0 -108
  143. package/dest/orchestrator/epoch-proving-state.d.ts +0 -74
  144. package/dest/orchestrator/epoch-proving-state.d.ts.map +0 -1
  145. package/dest/orchestrator/epoch-proving-state.js +0 -233
  146. package/dest/orchestrator/orchestrator.d.ts +0 -113
  147. package/dest/orchestrator/orchestrator.d.ts.map +0 -1
  148. package/dest/orchestrator/orchestrator.js +0 -842
  149. package/dest/prover-client/server-epoch-prover.d.ts +0 -32
  150. package/dest/prover-client/server-epoch-prover.d.ts.map +0 -1
  151. package/dest/prover-client/server-epoch-prover.js +0 -40
  152. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +0 -14
  153. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +0 -1
  154. package/dest/proving_broker/proof_store/gcs_proof_store.js +0 -52
  155. package/dest/proving_broker/proving_agent_instrumentation.d.ts +0 -8
  156. package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +0 -1
  157. package/dest/proving_broker/proving_agent_instrumentation.js +0 -16
  158. package/src/block-factory/index.ts +0 -1
  159. package/src/block-factory/light.ts +0 -137
  160. package/src/orchestrator/epoch-proving-state.ts +0 -330
  161. package/src/orchestrator/orchestrator.ts +0 -1265
  162. package/src/prover-client/server-epoch-prover.ts +0 -69
  163. package/src/proving_broker/proof_store/gcs_proof_store.ts +0 -76
  164. package/src/proving_broker/proving_agent_instrumentation.ts +0 -21
@@ -1,18 +1,17 @@
1
- import { SpongeBlob, encodeCheckpointBlobDataFromBlocks } from '@aztec/blob-lib';
2
- import { BLOBS_PER_CHECKPOINT, FIELDS_PER_BLOB, NUM_MSGS_PER_BASE_PARITY } from '@aztec/constants';
1
+ import { SpongeBlob } from '@aztec/blob-lib';
2
+ import { NUM_MSGS_PER_BASE_PARITY } from '@aztec/constants';
3
3
  import { BlockNumber } from '@aztec/foundation/branded-types';
4
4
  import { padArrayEnd } from '@aztec/foundation/collection';
5
- import { BLS12Point, Fr } from '@aztec/foundation/fields';
5
+ import { Fr } from '@aztec/foundation/curves/bn254';
6
6
  import { UnbalancedTreeStore } from '@aztec/foundation/trees';
7
7
  import { ParityBasePrivateInputs } from '@aztec/stdlib/parity';
8
- import { BlockMergeRollupPrivateInputs, CheckpointRootRollupHints, CheckpointRootRollupPrivateInputs, CheckpointRootSingleBlockRollupPrivateInputs } from '@aztec/stdlib/rollup';
9
- import { accumulateBlobs, buildBlobHints, toProofData } from './block-building-helpers.js';
8
+ import { BlockMergeRollupPrivateInputs } from '@aztec/stdlib/rollup';
9
+ import { toProofData } from './block-building-helpers.js';
10
10
  import { BlockProvingState } from './block-proving-state.js';
11
11
  export class CheckpointProvingState {
12
12
  index;
13
13
  constants;
14
14
  totalNumBlocks;
15
- finalBlobBatchingChallenges;
16
15
  headerOfLastBlockInPreviousCheckpoint;
17
16
  lastArchiveSiblingPath;
18
17
  l1ToL2Messages;
@@ -20,23 +19,19 @@ export class CheckpointProvingState {
20
19
  lastL1ToL2MessageSubtreeRootSiblingPath;
21
20
  newL1ToL2MessageTreeSnapshot;
22
21
  newL1ToL2MessageSubtreeRootSiblingPath;
23
- parentEpoch;
24
- onBlobAccumulatorSet;
22
+ epochNumber;
23
+ isAlive;
24
+ onReject;
25
25
  blockProofs;
26
- checkpointRootProof;
27
26
  blocks;
28
- startBlobAccumulator;
29
- endBlobAccumulator;
30
- blobFields;
31
27
  error;
32
28
  firstBlockNumber;
33
- constructor(index, constants, totalNumBlocks, finalBlobBatchingChallenges, headerOfLastBlockInPreviousCheckpoint, lastArchiveSiblingPath, l1ToL2Messages, // The snapshot and sibling path before the new l1 to l2 message subtree is inserted.
29
+ constructor(index, constants, totalNumBlocks, headerOfLastBlockInPreviousCheckpoint, lastArchiveSiblingPath, l1ToL2Messages, // The snapshot and sibling path before the new l1 to l2 message subtree is inserted.
34
30
  lastL1ToL2MessageTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath, // The snapshot and sibling path after the new l1 to l2 message subtree is inserted.
35
- newL1ToL2MessageTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath, parentEpoch, onBlobAccumulatorSet){
31
+ newL1ToL2MessageTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath, epochNumber, /** Owner's liveness check. `verifyState()` returns false once this returns false. */ isAlive, /** Owner's failure callback. Invoked from `reject` to surface the error upward. */ onReject){
36
32
  this.index = index;
37
33
  this.constants = constants;
38
34
  this.totalNumBlocks = totalNumBlocks;
39
- this.finalBlobBatchingChallenges = finalBlobBatchingChallenges;
40
35
  this.headerOfLastBlockInPreviousCheckpoint = headerOfLastBlockInPreviousCheckpoint;
41
36
  this.lastArchiveSiblingPath = lastArchiveSiblingPath;
42
37
  this.l1ToL2Messages = l1ToL2Messages;
@@ -44,15 +39,13 @@ export class CheckpointProvingState {
44
39
  this.lastL1ToL2MessageSubtreeRootSiblingPath = lastL1ToL2MessageSubtreeRootSiblingPath;
45
40
  this.newL1ToL2MessageTreeSnapshot = newL1ToL2MessageTreeSnapshot;
46
41
  this.newL1ToL2MessageSubtreeRootSiblingPath = newL1ToL2MessageSubtreeRootSiblingPath;
47
- this.parentEpoch = parentEpoch;
48
- this.onBlobAccumulatorSet = onBlobAccumulatorSet;
42
+ this.epochNumber = epochNumber;
43
+ this.isAlive = isAlive;
44
+ this.onReject = onReject;
49
45
  this.blocks = [];
50
46
  this.blockProofs = new UnbalancedTreeStore(totalNumBlocks);
51
47
  this.firstBlockNumber = BlockNumber(headerOfLastBlockInPreviousCheckpoint.globalVariables.blockNumber + 1);
52
48
  }
53
- get epochNumber() {
54
- return this.parentEpoch.epochNumber;
55
- }
56
49
  startNewBlock(blockNumber, timestamp, totalNumTxs, lastArchiveTreeSnapshot, lastArchiveSiblingPath) {
57
50
  const index = Number(blockNumber) - Number(this.firstBlockNumber);
58
51
  if (index >= this.totalNumBlocks) {
@@ -95,38 +88,9 @@ export class CheckpointProvingState {
95
88
  provingOutput
96
89
  });
97
90
  }
98
- tryStartProvingCheckpointRoot() {
99
- if (this.checkpointRootProof?.isProving) {
100
- return false;
101
- } else {
102
- this.checkpointRootProof = {
103
- isProving: true
104
- };
105
- return true;
106
- }
107
- }
108
- setCheckpointRootRollupProof(provingOutput) {
109
- this.checkpointRootProof = {
110
- provingOutput
111
- };
112
- return this.parentEpoch.setCheckpointRootRollupProof(this.index, provingOutput);
113
- }
114
91
  getBaseParityInputs(baseParityIndex) {
115
92
  const messages = padArrayEnd(this.l1ToL2Messages.slice(baseParityIndex * NUM_MSGS_PER_BASE_PARITY, (baseParityIndex + 1) * NUM_MSGS_PER_BASE_PARITY), Fr.ZERO, NUM_MSGS_PER_BASE_PARITY);
116
- return new ParityBasePrivateInputs(messages, this.constants.vkTreeRoot);
117
- }
118
- async accumulateBlobs(startBlobAccumulator) {
119
- if (this.isAcceptingBlocks() || this.blocks.some((b)=>!b?.hasEndState())) {
120
- return;
121
- }
122
- this.blobFields = encodeCheckpointBlobDataFromBlocks(this.blocks.map((b)=>b.getBlockBlobData()));
123
- this.endBlobAccumulator = await accumulateBlobs(this.blobFields, startBlobAccumulator);
124
- this.startBlobAccumulator = startBlobAccumulator;
125
- this.onBlobAccumulatorSet(this);
126
- return this.endBlobAccumulator;
127
- }
128
- getEndBlobAccumulator() {
129
- return this.endBlobAccumulator;
93
+ return new ParityBasePrivateInputs(messages, this.constants.vkTreeRoot, this.constants.proverId);
130
94
  }
131
95
  getParentLocation(location) {
132
96
  return this.blockProofs.getParentLocation(location);
@@ -141,36 +105,6 @@ export class CheckpointProvingState {
141
105
  toProofData(right)
142
106
  ]);
143
107
  }
144
- getCheckpointRootRollupType() {
145
- return this.totalNumBlocks === 1 ? 'rollup-checkpoint-root-single-block' : 'rollup-checkpoint-root';
146
- }
147
- getCheckpointRootRollupInputs() {
148
- const proofs = this.#getChildProofsForRoot();
149
- const nonEmptyProofs = proofs.filter((p)=>!!p);
150
- if (proofs.length !== nonEmptyProofs.length) {
151
- throw new Error('At least one child is not ready for the checkpoint root rollup.');
152
- }
153
- if (!this.startBlobAccumulator) {
154
- throw new Error('Start blob accumulator is not set.');
155
- }
156
- // `blobFields` must've been set if `startBlobAccumulator` is set (in `accumulateBlobs`).
157
- const blobFields = this.blobFields;
158
- const { blobCommitments, blobsHash } = buildBlobHints(blobFields);
159
- const hints = CheckpointRootRollupHints.from({
160
- previousBlockHeader: this.headerOfLastBlockInPreviousCheckpoint,
161
- previousArchiveSiblingPath: this.lastArchiveSiblingPath,
162
- startBlobAccumulator: this.startBlobAccumulator.toBlobAccumulator(),
163
- finalBlobChallenges: this.finalBlobBatchingChallenges,
164
- blobFields: padArrayEnd(blobFields, Fr.ZERO, FIELDS_PER_BLOB * BLOBS_PER_CHECKPOINT),
165
- blobCommitments: padArrayEnd(blobCommitments, BLS12Point.ZERO, BLOBS_PER_CHECKPOINT),
166
- blobsHash
167
- });
168
- const [left, right] = nonEmptyProofs.map((p)=>toProofData(p));
169
- return !right ? new CheckpointRootSingleBlockRollupPrivateInputs(left, hints) : new CheckpointRootRollupPrivateInputs([
170
- left,
171
- right
172
- ], hints);
173
- }
174
108
  getBlockProvingStateByBlockNumber(blockNumber) {
175
109
  const index = Number(blockNumber) - Number(this.firstBlockNumber);
176
110
  return this.blocks[index];
@@ -178,12 +112,8 @@ export class CheckpointProvingState {
178
112
  isReadyForBlockMerge(location) {
179
113
  return !!this.blockProofs.getSibling(location)?.provingOutput;
180
114
  }
181
- isReadyForCheckpointRoot() {
182
- const allChildProofsReady = this.#getChildProofsForRoot().every((p)=>!!p);
183
- return allChildProofsReady && !!this.startBlobAccumulator;
184
- }
185
115
  verifyState() {
186
- return this.parentEpoch.verifyState();
116
+ return this.isAlive();
187
117
  }
188
118
  getError() {
189
119
  return this.error;
@@ -194,9 +124,12 @@ export class CheckpointProvingState {
194
124
  }
195
125
  reject(reason) {
196
126
  this.error = reason;
197
- this.parentEpoch.reject(reason);
127
+ this.onReject(reason);
198
128
  }
199
- #getChildProofsForRoot() {
129
+ /**
130
+ * Returns the block-level proof outputs that feed into the checkpoint root rollup.
131
+ * Used by `CheckpointSubTreeOrchestrator` to surface its sub-tree result.
132
+ */ getSubTreeOutputProofs() {
200
133
  const rootLocation = {
201
134
  level: 0,
202
135
  index: 0
@@ -206,4 +139,7 @@ export class CheckpointProvingState {
206
139
  ] // If there's only 1 block, its proof will be stored at the root.
207
140
  : this.blockProofs.getChildren(rootLocation).map((c)=>c?.provingOutput);
208
141
  }
142
+ /** Sibling path of the archive tree captured before any block in this checkpoint landed. */ getLastArchiveSiblingPath() {
143
+ return this.lastArchiveSiblingPath;
144
+ }
209
145
  }
@@ -0,0 +1,161 @@
1
+ import { type ARCHIVE_HEIGHT, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
2
+ import { BlockNumber, type EpochNumber } from '@aztec/foundation/branded-types';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
+ import type { LoggerBindings } from '@aztec/foundation/log';
5
+ import type { SerialQueue } from '@aztec/foundation/queue';
6
+ import { type Tuple } from '@aztec/foundation/serialize';
7
+ import { EthAddress } from '@aztec/stdlib/block';
8
+ import type { ForkMerkleTreeOperations, PublicInputsAndRecursiveProof, ReadonlyWorldStateAccess, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
9
+ import { type BlockRollupPublicInputs, CheckpointConstantData } from '@aztec/stdlib/rollup';
10
+ import type { BlockHeader, ProcessedTx, Tx } from '@aztec/stdlib/tx';
11
+ import type { UInt64 } from '@aztec/stdlib/types';
12
+ import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
13
+ import type { BlockProvingState } from './block-proving-state.js';
14
+ import { CheckpointProvingState } from './checkpoint-proving-state.js';
15
+ import type { ChonkCache } from './chonk-cache.js';
16
+ import { ProvingScheduler } from './proving-scheduler.js';
17
+ /**
18
+ * Result of proving a single checkpoint's block-level sub-tree.
19
+ *
20
+ * Contains the final block-rollup proof outputs that feed the checkpoint root rollup,
21
+ * plus the archive sibling path captured before any block in the checkpoint landed
22
+ * (the top-tree needs this to assemble the checkpoint root rollup hints).
23
+ */
24
+ export type SubTreeResult = {
25
+ blockProofOutputs: PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>[];
26
+ previousArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>;
27
+ };
28
+ /**
29
+ * Orchestrates block-level proving for a single checkpoint, stopping at the boundary
30
+ * where checkpoint root rollup would otherwise begin. Used by the per-checkpoint
31
+ * `CheckpointProver` in production; the top-tree orchestrator then composes the
32
+ * sub-tree's block proofs into the epoch proof.
33
+ *
34
+ * Wiring: a single-checkpoint mini-proving session is owned by the constructor. The
35
+ * canonical way to obtain a fully-started sub-tree is the `start` static factory,
36
+ * which also drives the single internal `startCheckpoint` call. The sub-tree never
37
+ * escalates past the checkpoint root boundary; `getSubTreeResult()` resolves once
38
+ * every block-level proof in the checkpoint's tree is ready.
39
+ */
40
+ export declare class CheckpointSubTreeOrchestrator extends ProvingScheduler {
41
+ private readonly dbProvider;
42
+ protected readonly prover: ServerCircuitProver;
43
+ private readonly proverId;
44
+ /**
45
+ * Shared chonk-verifier proof cache. Every chonk-verifier proof started by this
46
+ * sub-tree lives on the cache and survives the sub-tree's cancellation, so a tx
47
+ * whose original checkpoint is reorged out and re-appears in a replacement
48
+ * checkpoint reuses the cached proof.
49
+ */
50
+ private readonly chonkCache;
51
+ /** The epoch this sub-tree proves into. */
52
+ private readonly epochNumber;
53
+ private readonly cancelJobsOnStop;
54
+ /** The single checkpoint proving state this sub-tree owns. Allocated in the `start` factory. */
55
+ protected provingState: CheckpointProvingState | undefined;
56
+ private readonly subTreeResult;
57
+ private readonly metrics;
58
+ private dbs;
59
+ constructor(dbProvider: ReadonlyWorldStateAccess & ForkMerkleTreeOperations, prover: ServerCircuitProver, proverId: EthAddress,
60
+ /**
61
+ * Shared chonk-verifier proof cache. Every chonk-verifier proof started by this
62
+ * sub-tree lives on the cache and survives the sub-tree's cancellation, so a tx
63
+ * whose original checkpoint is reorged out and re-appears in a replacement
64
+ * checkpoint reuses the cached proof.
65
+ */
66
+ chonkCache: ChonkCache,
67
+ /** The epoch this sub-tree proves into. */
68
+ epochNumber: EpochNumber, cancelJobsOnStop: boolean | undefined, deferredJobQueue: SerialQueue, telemetryClient?: TelemetryClient, bindings?: LoggerBindings);
69
+ /** Tracks whether `cancel()` has been called; flows into the checkpoint state's isAlive hook. */
70
+ private cancelled;
71
+ get tracer(): Tracer;
72
+ getProverId(): EthAddress;
73
+ getNumActiveForks(): number;
74
+ /** Returns a promise that resolves when block-level proving completes for the checkpoint. */
75
+ getSubTreeResult(): Promise<SubTreeResult>;
76
+ /**
77
+ * Returns the archive sibling path captured at the internal checkpoint start.
78
+ * Available synchronously once `start` has resolved, before block-level proving
79
+ * completes. The top-tree consumer uses this to assemble checkpoint root rollup hints
80
+ * up-front so checkpoint root proofs can pipeline against in-flight sub-tree proving.
81
+ */
82
+ getPreviousArchiveSiblingPath(): Tuple<Fr, typeof ARCHIVE_HEIGHT>;
83
+ /**
84
+ * Constructs and starts a sub-tree for a single checkpoint. The returned sub-tree
85
+ * has had its single internal checkpoint state allocated; callers proceed directly
86
+ * to per-block `startNewBlock` / `addTxs` / `setBlockCompleted`.
87
+ *
88
+ * If the internal start rejects, the partially-constructed sub-tree is stopped
89
+ * before the error propagates, so no broker resources leak.
90
+ */
91
+ static start(dbProvider: ReadonlyWorldStateAccess & ForkMerkleTreeOperations, prover: ServerCircuitProver, proverId: EthAddress, chonkCache: ChonkCache, epochNumber: EpochNumber, cancelJobsOnStop: boolean, deferredJobQueue: SerialQueue, checkpointConstants: CheckpointConstantData, l1ToL2Messages: Fr[], totalNumBlocks: number, headerOfLastBlockInPreviousCheckpoint: BlockHeader, telemetryClient?: TelemetryClient, bindings?: LoggerBindings): Promise<CheckpointSubTreeOrchestrator>;
92
+ /**
93
+ * Kickstart chonk-verifier circuits via the shared `ChonkCache`. The cache owns the
94
+ * broker job lifecycle, so the proof survives this sub-tree's `cancel()` — a tx that
95
+ * ends up in a replacement checkpoint after a reorg can pick the cached promise up
96
+ * and skip re-proving.
97
+ */
98
+ startChonkVerifierCircuits(txs: Tx[]): Promise<void>;
99
+ /**
100
+ * Starts off a new block.
101
+ * @param blockNumber - The block number
102
+ * @param timestamp - The timestamp of the block. Required for empty blocks to construct private inputs.
103
+ * @param totalNumTxs - The total number of txs in the block.
104
+ */
105
+ startNewBlock(blockNumber: BlockNumber, timestamp: UInt64, totalNumTxs: number): Promise<void>;
106
+ /**
107
+ * The interface to add simulated transactions to the scheduler. Called at most once per block.
108
+ * @param txs - The transactions to be proven
109
+ */
110
+ addTxs(txs: ProcessedTx[]): Promise<void>;
111
+ /**
112
+ * Marks the block as completed.
113
+ * Computes the block header and updates the archive tree.
114
+ */
115
+ setBlockCompleted(blockNumber: BlockNumber, expectedHeader?: BlockHeader): Promise<BlockHeader>;
116
+ /**
117
+ * Cancels any further proving. If `cancelJobsOnStop` was set, aborts all pending broker jobs
118
+ * (used on reorg). Otherwise jobs remain in the broker queue and can be reused on restart.
119
+ */
120
+ cancel(): void;
121
+ protected cancelInternal(): void;
122
+ private startCheckpoint;
123
+ private updateL1ToL2MessageTree;
124
+ private prepareBaseRollupInputs;
125
+ private enqueueBaseRollup;
126
+ /**
127
+ * Route the tx's chonk-verifier dependency through the per-epoch context: read the
128
+ * cached promise (or enqueue if missing), then `.then(handleResult)` to progress to
129
+ * the base rollup once the proof lands.
130
+ */
131
+ private getOrEnqueueChonkVerifier;
132
+ private enqueueMergeRollup;
133
+ private enqueueBlockRootRollup;
134
+ private enqueueBaseParityCircuit;
135
+ private checkAndEnqueueRootParityCircuit;
136
+ private enqueueRootParityCircuit;
137
+ private enqueueBlockMergeRollup;
138
+ private checkAndEnqueueNextMergeRollup;
139
+ private checkAndEnqueueBlockRootRollup;
140
+ private checkAndEnqueueNextBlockMergeRollup;
141
+ /**
142
+ * Sub-tree analogue of the orchestrator's `checkAndEnqueueCheckpointRootRollup`:
143
+ * resolves the sub-tree promise with the block-level proof outputs once they're all ready,
144
+ * instead of escalating to the checkpoint root rollup.
145
+ */
146
+ private checkAndEnqueueSubTreeResolution;
147
+ /**
148
+ * Executes the VM circuit for a public function. Enqueues the base rollup once the
149
+ * tx's chonk-verifier + VM proofs are both ready.
150
+ */
151
+ private enqueueVM;
152
+ private checkAndEnqueueBaseRollup;
153
+ protected verifyBuiltBlockAgainstSyncedState(provingState: BlockProvingState): Promise<void>;
154
+ private getDbForBlock;
155
+ /**
156
+ * Wraps a circuit call with a tracer span and circuit attributes. Replaces the
157
+ * `ProvingScheduler.wrapCircuitCall` indirection that used to live on the abstract base.
158
+ */
159
+ private wrapCircuitCall;
160
+ }
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC1zdWItdHJlZS1vcmNoZXN0cmF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcmNoZXN0cmF0b3IvY2hlY2twb2ludC1zdWItdHJlZS1vcmNoZXN0cmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLEtBQUssY0FBYyxFQUduQix5Q0FBeUMsRUFFMUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXBELE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxLQUFLLEtBQUssRUFBZ0IsTUFBTSw2QkFBNkIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLEVBQ1Ysd0JBQXdCLEVBRXhCLDZCQUE2QixFQUM3Qix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ3BCLE1BQU0saUNBQWlDLENBQUM7QUFFekMsT0FBTyxFQUVMLEtBQUssdUJBQXVCLEVBSzVCLHNCQUFzQixFQUd2QixNQUFNLHNCQUFzQixDQUFDO0FBRzlCLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUVMLEtBQUssZUFBZSxFQUNwQixLQUFLLE1BQU0sRUFJWixNQUFNLHlCQUF5QixDQUFDO0FBZWpDLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHMUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxNQUFNLGFBQWEsR0FBRztJQUMxQixpQkFBaUIsRUFBRSw2QkFBNkIsQ0FDOUMsdUJBQXVCLEVBQ3ZCLE9BQU8seUNBQXlDLENBQ2pELEVBQUUsQ0FBQztJQUNKLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxjQUFjLENBQUMsQ0FBQztDQUM5RCxDQUFDO0FBZUY7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxxQkFBYSw2QkFBOEIsU0FBUSxnQkFBZ0I7SUFRL0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVO0lBQzNCLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLG1CQUFtQjtJQUM5QyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFDekI7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVU7SUFDM0IsMkNBQTJDO0lBQzNDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVztJQUM1QixPQUFPLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtJQW5CbkMsZ0dBQWdHO0lBQ2hHLFNBQVMsQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLEdBQUcsU0FBUyxDQUFhO0lBQ3ZFLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFzQztJQUNwRSxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBNkI7SUFDckQsT0FBTyxDQUFDLEdBQUcsQ0FBMEQ7SUFFckUsWUFDbUIsVUFBVSxFQUFFLHdCQUF3QixHQUFHLHdCQUF3QixFQUM3RCxNQUFNLEVBQUUsbUJBQW1CLEVBQzdCLFFBQVEsRUFBRSxVQUFVO0lBQ3JDOzs7OztPQUtHO0lBQ2MsVUFBVSxFQUFFLFVBQVU7SUFDdkMsMkNBQTJDO0lBQzFCLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLGdCQUFnQixxQkFBaUIsRUFDbEQsZ0JBQWdCLEVBQUUsV0FBVyxFQUM3QixlQUFlLEdBQUUsZUFBc0MsRUFDdkQsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQVMxQjtJQUVELGlHQUFpRztJQUNqRyxPQUFPLENBQUMsU0FBUyxDQUFTO0lBRTFCLElBQVcsTUFBTSxJQUFJLE1BQU0sQ0FFMUI7SUFFTSxXQUFXLElBQUksVUFBVSxDQUUvQjtJQUVNLGlCQUFpQixJQUFJLE1BQU0sQ0FFakM7SUFFRCw2RkFBNkY7SUFDdEYsZ0JBQWdCLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUVoRDtJQUVEOzs7OztPQUtHO0lBQ0ksNkJBQTZCLElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxPQUFPLGNBQWMsQ0FBQyxDQUt2RTtJQUVEOzs7Ozs7O09BT0c7SUFDSCxPQUFvQixLQUFLLENBQ3ZCLFVBQVUsRUFBRSx3QkFBd0IsR0FBRyx3QkFBd0IsRUFDL0QsTUFBTSxFQUFFLG1CQUFtQixFQUMzQixRQUFRLEVBQUUsVUFBVSxFQUNwQixVQUFVLEVBQUUsVUFBVSxFQUN0QixXQUFXLEVBQUUsV0FBVyxFQUN4QixnQkFBZ0IsRUFBRSxPQUFPLEVBQ3pCLGdCQUFnQixFQUFFLFdBQVcsRUFDN0IsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQzNDLGNBQWMsRUFBRSxFQUFFLEVBQUUsRUFDcEIsY0FBYyxFQUFFLE1BQU0sRUFDdEIscUNBQXFDLEVBQUUsV0FBVyxFQUNsRCxlQUFlLEdBQUUsZUFBc0MsRUFDdkQsUUFBUSxDQUFDLEVBQUUsY0FBYyxHQUN4QixPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0F3QnhDO0lBRUQ7Ozs7O09BS0c7SUFDSSwwQkFBMEIsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQWUxRDtJQUlEOzs7OztPQUtHO0lBSVUsYUFBYSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFrRDFGO0lBRUQ7OztPQUdHO0lBSVUsTUFBTSxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBb0ZyRDtJQUVEOzs7T0FHRztJQUlVLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDLEVBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FrRDNHO0lBSUQ7OztPQUdHO0lBQ0ksTUFBTSxTQVdaO0lBRUQsVUFBbUIsY0FBYyxJQUFJLElBQUksQ0FFeEM7WUFTYSxlQUFlO1lBK0NmLHVCQUF1QjtZQTRCdkIsdUJBQXVCO0lBa0NyQyxPQUFPLENBQUMsaUJBQWlCO0lBNkN6Qjs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLHlCQUF5QjtJQTBDakMsT0FBTyxDQUFDLGtCQUFrQjtJQTRCMUIsT0FBTyxDQUFDLHNCQUFzQjtJQTBEOUIsT0FBTyxDQUFDLHdCQUF3QjtJQStCaEMsT0FBTyxDQUFDLGdDQUFnQztJQVN4QyxPQUFPLENBQUMsd0JBQXdCO0lBNEJoQyxPQUFPLENBQUMsdUJBQXVCO0lBK0IvQixPQUFPLENBQUMsOEJBQThCO0lBWXRDLE9BQU8sQ0FBQyw4QkFBOEI7SUFRdEMsT0FBTyxDQUFDLG1DQUFtQztJQWUzQzs7OztPQUlHO0lBQ0gsT0FBTyxDQUFDLGdDQUFnQztJQWF4Qzs7O09BR0c7SUFDSCxPQUFPLENBQUMsU0FBUztJQTBCakIsT0FBTyxDQUFDLHlCQUF5QjtJQVdqQyxVQUFnQixrQ0FBa0MsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLGlCQTZDakY7SUFFRCxPQUFPLENBQUMsYUFBYTtJQVFyQjs7O09BR0c7SUFDSCxPQUFPLENBQUMsZUFBZTtDQVl4QiJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint-sub-tree-orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/checkpoint-sub-tree-orchestrator.ts"],"names":[],"mappings":"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"}