@aztec/prover-client 3.0.0-canary.a9708bd → 3.0.0-devnet.2-patch.1

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 (118) hide show
  1. package/dest/block-factory/index.d.ts +1 -1
  2. package/dest/block-factory/light.d.ts +5 -3
  3. package/dest/block-factory/light.d.ts.map +1 -1
  4. package/dest/block-factory/light.js +32 -11
  5. package/dest/config.d.ts +1 -1
  6. package/dest/config.js +1 -1
  7. package/dest/index.d.ts +1 -1
  8. package/dest/light/lightweight_checkpoint_builder.d.ts +29 -0
  9. package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
  10. package/dest/light/lightweight_checkpoint_builder.js +108 -0
  11. package/dest/mocks/fixtures.d.ts +5 -5
  12. package/dest/mocks/fixtures.d.ts.map +1 -1
  13. package/dest/mocks/fixtures.js +33 -15
  14. package/dest/mocks/test_context.d.ts +37 -33
  15. package/dest/mocks/test_context.d.ts.map +1 -1
  16. package/dest/mocks/test_context.js +124 -82
  17. package/dest/orchestrator/block-building-helpers.d.ts +35 -35
  18. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  19. package/dest/orchestrator/block-building-helpers.js +151 -187
  20. package/dest/orchestrator/block-proving-state.d.ts +68 -55
  21. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  22. package/dest/orchestrator/block-proving-state.js +273 -185
  23. package/dest/orchestrator/checkpoint-proving-state.d.ts +63 -0
  24. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
  25. package/dest/orchestrator/checkpoint-proving-state.js +210 -0
  26. package/dest/orchestrator/epoch-proving-state.d.ts +38 -31
  27. package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
  28. package/dest/orchestrator/epoch-proving-state.js +128 -84
  29. package/dest/orchestrator/index.d.ts +1 -1
  30. package/dest/orchestrator/orchestrator.d.ts +33 -32
  31. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  32. package/dest/orchestrator/orchestrator.js +369 -243
  33. package/dest/orchestrator/orchestrator_metrics.d.ts +1 -1
  34. package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
  35. package/dest/orchestrator/tx-proving-state.d.ts +12 -10
  36. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  37. package/dest/orchestrator/tx-proving-state.js +23 -29
  38. package/dest/prover-client/factory.d.ts +1 -1
  39. package/dest/prover-client/index.d.ts +1 -1
  40. package/dest/prover-client/prover-client.d.ts +1 -1
  41. package/dest/prover-client/prover-client.d.ts.map +1 -1
  42. package/dest/prover-client/server-epoch-prover.d.ts +13 -11
  43. package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
  44. package/dest/prover-client/server-epoch-prover.js +9 -9
  45. package/dest/proving_broker/broker_prover_facade.d.ts +23 -18
  46. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  47. package/dest/proving_broker/broker_prover_facade.js +41 -25
  48. package/dest/proving_broker/config.d.ts +18 -14
  49. package/dest/proving_broker/config.d.ts.map +1 -1
  50. package/dest/proving_broker/config.js +13 -7
  51. package/dest/proving_broker/factory.d.ts +1 -1
  52. package/dest/proving_broker/factory.js +1 -1
  53. package/dest/proving_broker/fixtures.d.ts +3 -2
  54. package/dest/proving_broker/fixtures.d.ts.map +1 -1
  55. package/dest/proving_broker/fixtures.js +3 -2
  56. package/dest/proving_broker/index.d.ts +1 -1
  57. package/dest/proving_broker/proof_store/factory.d.ts +2 -2
  58. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +1 -1
  59. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -1
  60. package/dest/proving_broker/proof_store/index.d.ts +2 -1
  61. package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
  62. package/dest/proving_broker/proof_store/index.js +1 -0
  63. package/dest/proving_broker/proof_store/inline_proof_store.d.ts +1 -1
  64. package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -1
  65. package/dest/proving_broker/proof_store/proof_store.d.ts +1 -1
  66. package/dest/proving_broker/proving_agent.d.ts +1 -1
  67. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  68. package/dest/proving_broker/proving_agent_instrumentation.d.ts +1 -1
  69. package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +1 -1
  70. package/dest/proving_broker/proving_broker.d.ts +2 -2
  71. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  72. package/dest/proving_broker/proving_broker.js +31 -19
  73. package/dest/proving_broker/proving_broker_database/memory.d.ts +3 -2
  74. package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
  75. package/dest/proving_broker/proving_broker_database/persisted.d.ts +3 -2
  76. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
  77. package/dest/proving_broker/proving_broker_database/persisted.js +8 -7
  78. package/dest/proving_broker/proving_broker_database.d.ts +3 -2
  79. package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
  80. package/dest/proving_broker/proving_broker_instrumentation.d.ts +1 -1
  81. package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
  82. package/dest/proving_broker/proving_job_controller.d.ts +3 -2
  83. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  84. package/dest/proving_broker/proving_job_controller.js +39 -19
  85. package/dest/proving_broker/rpc.d.ts +4 -4
  86. package/dest/test/mock_proof_store.d.ts +3 -3
  87. package/dest/test/mock_proof_store.d.ts.map +1 -1
  88. package/dest/test/mock_prover.d.ts +23 -19
  89. package/dest/test/mock_prover.d.ts.map +1 -1
  90. package/dest/test/mock_prover.js +35 -20
  91. package/package.json +19 -19
  92. package/src/block-factory/light.ts +40 -17
  93. package/src/config.ts +1 -1
  94. package/src/light/lightweight_checkpoint_builder.ts +144 -0
  95. package/src/mocks/fixtures.ts +41 -36
  96. package/src/mocks/test_context.ts +188 -114
  97. package/src/orchestrator/block-building-helpers.ts +233 -313
  98. package/src/orchestrator/block-proving-state.ts +315 -247
  99. package/src/orchestrator/checkpoint-proving-state.ts +303 -0
  100. package/src/orchestrator/epoch-proving-state.ts +176 -129
  101. package/src/orchestrator/orchestrator.ts +554 -319
  102. package/src/orchestrator/tx-proving-state.ts +48 -55
  103. package/src/prover-client/server-epoch-prover.ts +30 -21
  104. package/src/proving_broker/broker_prover_facade.ts +175 -103
  105. package/src/proving_broker/config.ts +15 -8
  106. package/src/proving_broker/factory.ts +1 -1
  107. package/src/proving_broker/fixtures.ts +8 -3
  108. package/src/proving_broker/proof_store/index.ts +1 -0
  109. package/src/proving_broker/proving_broker.ts +38 -19
  110. package/src/proving_broker/proving_broker_database/memory.ts +2 -1
  111. package/src/proving_broker/proving_broker_database/persisted.ts +10 -9
  112. package/src/proving_broker/proving_broker_database.ts +2 -1
  113. package/src/proving_broker/proving_job_controller.ts +41 -20
  114. package/src/test/mock_prover.ts +142 -60
  115. package/dest/bin/get-proof-inputs.d.ts +0 -2
  116. package/dest/bin/get-proof-inputs.d.ts.map +0 -1
  117. package/dest/bin/get-proof-inputs.js +0 -51
  118. package/src/bin/get-proof-inputs.ts +0 -59
@@ -1,28 +1,26 @@
1
- import {
2
- AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED,
3
- AVM_VK_INDEX,
4
- PRIVATE_TUBE_VK_INDEX,
5
- PUBLIC_TUBE_VK_INDEX,
6
- type TUBE_PROOF_LENGTH,
7
- } from '@aztec/constants';
8
- import { getVKSiblingPath } from '@aztec/noir-protocol-circuits-types/vk-tree';
1
+ import { AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
2
+ import type { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { getAvmVkData, getVkData } from '@aztec/noir-protocol-circuits-types/server/vks';
9
4
  import type { AvmCircuitInputs } from '@aztec/stdlib/avm';
10
- import type { ProofAndVerificationKey } from '@aztec/stdlib/interfaces/server';
5
+ import type { ProofAndVerificationKey, PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
6
+ import { ProofData } from '@aztec/stdlib/proofs';
11
7
  import {
12
- AvmProofData,
13
8
  type BaseRollupHints,
14
9
  PrivateBaseRollupHints,
15
- PrivateBaseRollupInputs,
16
- PrivateTubeData,
10
+ PrivateTxBaseRollupPrivateInputs,
17
11
  PublicBaseRollupHints,
18
- PublicBaseRollupInputs,
19
- PublicTubeData,
20
- TubeInputs,
12
+ PublicChonkVerifierPublicInputs,
13
+ PublicTxBaseRollupPrivateInputs,
21
14
  } from '@aztec/stdlib/rollup';
22
15
  import type { CircuitName } from '@aztec/stdlib/stats';
23
16
  import type { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
24
17
  import type { ProcessedTx } from '@aztec/stdlib/tx';
25
- import { VerificationKeyData, VkData } from '@aztec/stdlib/vks';
18
+
19
+ import {
20
+ getChonkProofFromTx,
21
+ getPublicChonkVerifierPrivateInputsFromTx,
22
+ toProofData,
23
+ } from './block-building-helpers.js';
26
24
 
27
25
  /**
28
26
  * Helper class to manage the proving cycle of a transaction
@@ -30,13 +28,17 @@ import { VerificationKeyData, VkData } from '@aztec/stdlib/vks';
30
28
  * Also stores the inputs to the base rollup for this transaction and the tree snapshots
31
29
  */
32
30
  export class TxProvingState {
33
- private tube?: ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>;
31
+ private publicChonkVerifier?: PublicInputsAndRecursiveProof<
32
+ PublicChonkVerifierPublicInputs,
33
+ typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
34
+ >;
34
35
  private avm?: ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>;
35
36
 
36
37
  constructor(
37
38
  public readonly processedTx: ProcessedTx,
38
39
  private readonly baseRollupHints: BaseRollupHints,
39
40
  public readonly treeSnapshots: Map<MerkleTreeId, AppendOnlyTreeSnapshot>,
41
+ private readonly proverId: Fr,
40
42
  ) {}
41
43
 
42
44
  get requireAvmProof() {
@@ -44,33 +46,38 @@ export class TxProvingState {
44
46
  }
45
47
 
46
48
  public ready() {
47
- return !!this.tube && (!this.requireAvmProof || !!this.avm);
48
- }
49
-
50
- public getTubeInputs() {
51
- return new TubeInputs(!!this.processedTx.data.forPublic, this.processedTx.clientIvcProof);
49
+ return !this.requireAvmProof || (!!this.avm && !!this.publicChonkVerifier);
52
50
  }
53
51
 
54
52
  public getAvmInputs(): AvmCircuitInputs {
55
53
  return this.processedTx.avmProvingRequest!.inputs;
56
54
  }
57
55
 
56
+ public getPublicChonkVerifierPrivateInputs() {
57
+ return getPublicChonkVerifierPrivateInputsFromTx(this.processedTx, this.proverId);
58
+ }
59
+
58
60
  public getBaseRollupTypeAndInputs() {
59
61
  if (this.requireAvmProof) {
60
62
  return {
61
- rollupType: 'public-base-rollup' satisfies CircuitName,
63
+ rollupType: 'rollup-tx-base-public' satisfies CircuitName,
62
64
  inputs: this.#getPublicBaseInputs(),
63
65
  };
64
66
  } else {
65
67
  return {
66
- rollupType: 'private-base-rollup' satisfies CircuitName,
68
+ rollupType: 'rollup-tx-base-private' satisfies CircuitName,
67
69
  inputs: this.#getPrivateBaseInputs(),
68
70
  };
69
71
  }
70
72
  }
71
73
 
72
- public setTubeProof(tubeProofAndVk: ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>) {
73
- this.tube = tubeProofAndVk;
74
+ public setPublicChonkVerifierProof(
75
+ publicChonkVerifierProofAndVk: PublicInputsAndRecursiveProof<
76
+ PublicChonkVerifierPublicInputs,
77
+ typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH
78
+ >,
79
+ ) {
80
+ this.publicChonkVerifier = publicChonkVerifierProofAndVk;
74
81
  }
75
82
 
76
83
  public setAvmProof(avmProofAndVk: ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>) {
@@ -78,55 +85,41 @@ export class TxProvingState {
78
85
  }
79
86
 
80
87
  #getPrivateBaseInputs() {
81
- if (!this.tube) {
82
- throw new Error('Tx not ready for proving base rollup.');
88
+ if (!(this.baseRollupHints instanceof PrivateBaseRollupHints)) {
89
+ throw new Error('Mismatched base rollup hints, expected private base rollup hints');
83
90
  }
84
91
 
85
- const vkData = this.#getVkData(this.tube!.verificationKey, PRIVATE_TUBE_VK_INDEX);
86
- const tubeData = new PrivateTubeData(
92
+ const privateTailProofData = new ProofData(
87
93
  this.processedTx.data.toPrivateToRollupKernelCircuitPublicInputs(),
88
- this.tube.proof,
89
- vkData,
94
+ getChonkProofFromTx(this.processedTx),
95
+ getVkData('HidingKernelToRollup'),
90
96
  );
91
97
 
92
- if (!(this.baseRollupHints instanceof PrivateBaseRollupHints)) {
93
- throw new Error('Mismatched base rollup hints, expected private base rollup hints');
94
- }
95
- return new PrivateBaseRollupInputs(tubeData, this.baseRollupHints);
98
+ return new PrivateTxBaseRollupPrivateInputs(privateTailProofData, this.baseRollupHints);
96
99
  }
97
100
 
98
101
  #getPublicBaseInputs() {
99
102
  if (!this.processedTx.avmProvingRequest) {
100
103
  throw new Error('Should create private base rollup for a tx not requiring avm proof.');
101
104
  }
102
- if (!this.tube) {
103
- throw new Error('Tx not ready for proving base rollup: tube proof undefined');
105
+ if (!this.publicChonkVerifier) {
106
+ throw new Error('Tx not ready for proving base rollup: public chonk verifier proof undefined');
104
107
  }
105
108
  if (!this.avm) {
106
109
  throw new Error('Tx not ready for proving base rollup: avm proof undefined');
107
110
  }
111
+ if (!(this.baseRollupHints instanceof PublicBaseRollupHints)) {
112
+ throw new Error('Mismatched base rollup hints, expected public base rollup hints');
113
+ }
108
114
 
109
- const tubeData = new PublicTubeData(
110
- this.processedTx.data.toPrivateToPublicKernelCircuitPublicInputs(),
111
- this.tube.proof,
112
- this.#getVkData(this.tube!.verificationKey, PUBLIC_TUBE_VK_INDEX),
113
- );
115
+ const publicChonkVerifierProofData = toProofData(this.publicChonkVerifier);
114
116
 
115
- const avmProofData = new AvmProofData(
117
+ const avmProofData = new ProofData(
116
118
  this.processedTx.avmProvingRequest.inputs.publicInputs,
117
119
  this.avm.proof,
118
- this.#getVkData(this.avm!.verificationKey, AVM_VK_INDEX),
120
+ getAvmVkData(),
119
121
  );
120
122
 
121
- if (!(this.baseRollupHints instanceof PublicBaseRollupHints)) {
122
- throw new Error('Mismatched base rollup hints, expected public base rollup hints');
123
- }
124
-
125
- return new PublicBaseRollupInputs(tubeData, avmProofData, this.baseRollupHints);
126
- }
127
-
128
- #getVkData(verificationKey: VerificationKeyData, vkIndex: number) {
129
- const vkPath = getVKSiblingPath(vkIndex);
130
- return new VkData(verificationKey, vkIndex, vkPath);
123
+ return new PublicTxBaseRollupPrivateInputs(publicChonkVerifierProofData, avmProofData, this.baseRollupHints);
131
124
  }
132
125
  }
@@ -1,10 +1,12 @@
1
- import type { BatchedBlob, FinalBlobBatchingChallenges } from '@aztec/blob-lib';
2
- import type { Fr } from '@aztec/foundation/fields';
3
- import type { EthAddress, L2Block } from '@aztec/stdlib/block';
1
+ import type { BatchedBlob, FinalBlobBatchingChallenges } from '@aztec/blob-lib/types';
2
+ import { BlockNumber, EpochNumber } from '@aztec/foundation/branded-types';
3
+ import type { Fr } from '@aztec/foundation/curves/bn254';
4
+ import type { EthAddress } from '@aztec/stdlib/block';
4
5
  import type { EpochProver } from '@aztec/stdlib/interfaces/server';
5
6
  import type { Proof } from '@aztec/stdlib/proofs';
6
- import type { RootRollupPublicInputs } from '@aztec/stdlib/rollup';
7
- import type { BlockHeader, GlobalVariables, ProcessedTx, Tx } from '@aztec/stdlib/tx';
7
+ import type { CheckpointConstantData, RootRollupPublicInputs } from '@aztec/stdlib/rollup';
8
+ import type { BlockHeader, ProcessedTx, Tx } from '@aztec/stdlib/tx';
9
+ import type { UInt64 } from '@aztec/stdlib/types';
8
10
 
9
11
  import type { ProvingOrchestrator } from '../orchestrator/orchestrator.js';
10
12
  import type { BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
@@ -17,18 +19,32 @@ export class ServerEpochProver implements EpochProver {
17
19
  ) {}
18
20
 
19
21
  startNewEpoch(
20
- epochNumber: number,
21
- firstBlockNumber: number,
22
- totalNumBlocks: number,
22
+ epochNumber: EpochNumber,
23
+ totalNumCheckpoints: number,
23
24
  finalBlobBatchingChallenges: FinalBlobBatchingChallenges,
24
25
  ): void {
25
- this.orchestrator.startNewEpoch(epochNumber, firstBlockNumber, totalNumBlocks, finalBlobBatchingChallenges);
26
+ this.orchestrator.startNewEpoch(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges);
26
27
  this.facade.start();
27
28
  }
28
- startTubeCircuits(txs: Tx[]): Promise<void> {
29
- return this.orchestrator.startTubeCircuits(txs);
29
+ startNewCheckpoint(
30
+ checkpointIndex: number,
31
+ constants: CheckpointConstantData,
32
+ l1ToL2Messages: Fr[],
33
+ totalNumBlocks: number,
34
+ headerOfLastBlockInPreviousCheckpoint: BlockHeader,
35
+ ): Promise<void> {
36
+ return this.orchestrator.startNewCheckpoint(
37
+ checkpointIndex,
38
+ constants,
39
+ l1ToL2Messages,
40
+ totalNumBlocks,
41
+ headerOfLastBlockInPreviousCheckpoint,
42
+ );
43
+ }
44
+ startChonkVerifierCircuits(txs: Tx[]): Promise<void> {
45
+ return this.orchestrator.startChonkVerifierCircuits(txs);
30
46
  }
31
- setBlockCompleted(blockNumber: number, expectedBlockHeader?: BlockHeader): Promise<L2Block> {
47
+ setBlockCompleted(blockNumber: BlockNumber, expectedBlockHeader?: BlockHeader): Promise<BlockHeader> {
32
48
  return this.orchestrator.setBlockCompleted(blockNumber, expectedBlockHeader);
33
49
  }
34
50
  finalizeEpoch(): Promise<{ publicInputs: RootRollupPublicInputs; proof: Proof; batchedBlobInputs: BatchedBlob }> {
@@ -40,19 +56,12 @@ export class ServerEpochProver implements EpochProver {
40
56
  getProverId(): EthAddress {
41
57
  return this.orchestrator.getProverId();
42
58
  }
43
- getBlock(index: number): L2Block {
44
- return this.orchestrator.getBlock(index);
45
- }
46
59
  async stop(): Promise<void> {
47
60
  await this.facade.stop();
48
61
  await this.orchestrator.stop();
49
62
  }
50
- startNewBlock(
51
- globalVariables: GlobalVariables,
52
- l1ToL2Messages: Fr[],
53
- previousBlockHeader: BlockHeader,
54
- ): Promise<void> {
55
- return this.orchestrator.startNewBlock(globalVariables, l1ToL2Messages, previousBlockHeader);
63
+ startNewBlock(blockNumber: BlockNumber, timestamp: UInt64, totalNumTxs: number): Promise<void> {
64
+ return this.orchestrator.startNewBlock(blockNumber, timestamp, totalNumTxs);
56
65
  }
57
66
  addTxs(txs: ProcessedTx[]): Promise<void> {
58
67
  return this.orchestrator.addTxs(txs);
@@ -3,10 +3,10 @@ import type {
3
3
  NESTED_RECURSIVE_PROOF_LENGTH,
4
4
  NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH,
5
5
  RECURSIVE_PROOF_LENGTH,
6
- TUBE_PROOF_LENGTH,
7
6
  } from '@aztec/constants';
8
- import { sha256 } from '@aztec/foundation/crypto';
9
- import { Fr } from '@aztec/foundation/fields';
7
+ import { EpochNumber } from '@aztec/foundation/branded-types';
8
+ import { sha256 } from '@aztec/foundation/crypto/sha256';
9
+ import { Fr } from '@aztec/foundation/curves/bn254';
10
10
  import { createLogger } from '@aztec/foundation/log';
11
11
  import { type PromiseWithResolvers, RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
12
12
  import { truncate } from '@aztec/foundation/string';
@@ -23,22 +23,29 @@ import {
23
23
  type ServerCircuitProver,
24
24
  makeProvingJobId,
25
25
  } from '@aztec/stdlib/interfaces/server';
26
- import type { BaseParityInputs, ParityPublicInputs, RootParityInputs } from '@aztec/stdlib/parity';
26
+ import type { ParityBasePrivateInputs, ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
27
27
  import { ProvingRequestType } from '@aztec/stdlib/proofs';
28
28
  import type {
29
- BaseOrMergeRollupPublicInputs,
30
- BlockMergeRollupInputs,
31
- BlockRootOrBlockMergePublicInputs,
32
- BlockRootRollupInputs,
33
- EmptyBlockRootRollupInputs,
34
- MergeRollupInputs,
35
- PaddingBlockRootRollupInputs,
36
- PrivateBaseRollupInputs,
37
- PublicBaseRollupInputs,
38
- RootRollupInputs,
29
+ BlockMergeRollupPrivateInputs,
30
+ BlockRollupPublicInputs,
31
+ BlockRootEmptyTxFirstRollupPrivateInputs,
32
+ BlockRootFirstRollupPrivateInputs,
33
+ BlockRootRollupPrivateInputs,
34
+ BlockRootSingleTxFirstRollupPrivateInputs,
35
+ BlockRootSingleTxRollupPrivateInputs,
36
+ CheckpointMergeRollupPrivateInputs,
37
+ CheckpointPaddingRollupPrivateInputs,
38
+ CheckpointRollupPublicInputs,
39
+ CheckpointRootRollupPrivateInputs,
40
+ CheckpointRootSingleBlockRollupPrivateInputs,
41
+ PrivateTxBaseRollupPrivateInputs,
42
+ PublicChonkVerifierPrivateInputs,
43
+ PublicChonkVerifierPublicInputs,
44
+ PublicTxBaseRollupPrivateInputs,
45
+ RootRollupPrivateInputs,
39
46
  RootRollupPublicInputs,
40
- SingleTxBlockRootRollupInputs,
41
- TubeInputs,
47
+ TxMergeRollupPrivateInputs,
48
+ TxRollupPublicInputs,
42
49
  } from '@aztec/stdlib/rollup';
43
50
 
44
51
  import { InlineProofStore, type ProofStore } from './proof_store/index.js';
@@ -124,7 +131,7 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
124
131
  id: ProvingJobId,
125
132
  type: T,
126
133
  inputs: ProvingJobInputsMap[T],
127
- epochNumber = 0,
134
+ epochNumber = EpochNumber.ZERO,
128
135
  signal?: AbortSignal,
129
136
  ): Promise<ProvingJobResultsMap[T]> {
130
137
  const { job: job, isEnqueued } = this.getOrCreateProvingJob(id, type, signal);
@@ -393,7 +400,7 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
393
400
  inputs: AvmCircuitInputs,
394
401
  skipPublicInputsValidation?: boolean, // TODO(#14234)[Unconditional PIs validation]: remove this argument
395
402
  signal?: AbortSignal,
396
- epochNumber?: number,
403
+ epochNumber?: EpochNumber,
397
404
  ): Promise<ProofAndVerificationKey<typeof AVM_V2_PROOF_LENGTH_IN_FIELDS_PADDED>> {
398
405
  this.log.info(`getAvmProof() called with skipPublicInputsValidation: ${skipPublicInputsValidation}`);
399
406
 
@@ -412,189 +419,254 @@ export class BrokerCircuitProverFacade implements ServerCircuitProver {
412
419
  }
413
420
 
414
421
  getBaseParityProof(
415
- inputs: BaseParityInputs,
422
+ inputs: ParityBasePrivateInputs,
416
423
  signal?: AbortSignal,
417
- epochNumber?: number,
424
+ epochNumber?: EpochNumber,
418
425
  ): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
419
426
  return this.enqueueJob(
420
- this.generateId(ProvingRequestType.BASE_PARITY, inputs, epochNumber),
421
- ProvingRequestType.BASE_PARITY,
427
+ this.generateId(ProvingRequestType.PARITY_BASE, inputs, epochNumber),
428
+ ProvingRequestType.PARITY_BASE,
422
429
  inputs,
423
430
  epochNumber,
424
431
  signal,
425
432
  );
426
433
  }
427
434
 
428
- getBlockMergeRollupProof(
429
- input: BlockMergeRollupInputs,
435
+ getTxMergeRollupProof(
436
+ input: TxMergeRollupPrivateInputs,
430
437
  signal?: AbortSignal,
431
- epochNumber?: number,
432
- ): Promise<
433
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
434
- > {
438
+ epochNumber?: EpochNumber,
439
+ ): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
435
440
  return this.enqueueJob(
436
- this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input, epochNumber),
437
- ProvingRequestType.BLOCK_MERGE_ROLLUP,
441
+ this.generateId(ProvingRequestType.TX_MERGE_ROLLUP, input, epochNumber),
442
+ ProvingRequestType.TX_MERGE_ROLLUP,
438
443
  input,
439
444
  epochNumber,
440
445
  signal,
441
446
  );
442
447
  }
443
448
 
444
- getBlockRootRollupProof(
445
- input: BlockRootRollupInputs,
449
+ getPublicChonkVerifierProof(
450
+ inputs: PublicChonkVerifierPrivateInputs,
446
451
  signal?: AbortSignal,
447
- epochNumber?: number,
452
+ epochNumber?: EpochNumber,
448
453
  ): Promise<
449
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
454
+ PublicInputsAndRecursiveProof<PublicChonkVerifierPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
450
455
  > {
451
456
  return this.enqueueJob(
452
- this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber),
453
- ProvingRequestType.BLOCK_ROOT_ROLLUP,
457
+ this.generateId(ProvingRequestType.PUBLIC_CHONK_VERIFIER, inputs, epochNumber),
458
+ ProvingRequestType.PUBLIC_CHONK_VERIFIER,
459
+ inputs,
460
+ epochNumber,
461
+ signal,
462
+ );
463
+ }
464
+
465
+ getPrivateTxBaseRollupProof(
466
+ baseRollupInput: PrivateTxBaseRollupPrivateInputs,
467
+ signal?: AbortSignal,
468
+ epochNumber?: EpochNumber,
469
+ ): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
470
+ return this.enqueueJob(
471
+ this.generateId(ProvingRequestType.PRIVATE_TX_BASE_ROLLUP, baseRollupInput, epochNumber),
472
+ ProvingRequestType.PRIVATE_TX_BASE_ROLLUP,
473
+ baseRollupInput,
474
+ epochNumber,
475
+ signal,
476
+ );
477
+ }
478
+
479
+ getPublicTxBaseRollupProof(
480
+ inputs: PublicTxBaseRollupPrivateInputs,
481
+ signal?: AbortSignal,
482
+ epochNumber?: EpochNumber,
483
+ ): Promise<PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
484
+ return this.enqueueJob(
485
+ this.generateId(ProvingRequestType.PUBLIC_TX_BASE_ROLLUP, inputs, epochNumber),
486
+ ProvingRequestType.PUBLIC_TX_BASE_ROLLUP,
487
+ inputs,
488
+ epochNumber,
489
+ signal,
490
+ );
491
+ }
492
+
493
+ getRootParityProof(
494
+ inputs: ParityRootPrivateInputs,
495
+ signal?: AbortSignal,
496
+ epochNumber?: EpochNumber,
497
+ ): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>> {
498
+ return this.enqueueJob(
499
+ this.generateId(ProvingRequestType.PARITY_ROOT, inputs, epochNumber),
500
+ ProvingRequestType.PARITY_ROOT,
501
+ inputs,
502
+ epochNumber,
503
+ signal,
504
+ );
505
+ }
506
+
507
+ getBlockRootFirstRollupProof(
508
+ input: BlockRootFirstRollupPrivateInputs,
509
+ signal?: AbortSignal,
510
+ epochNumber?: EpochNumber,
511
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
512
+ return this.enqueueJob(
513
+ this.generateId(ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP, input, epochNumber),
514
+ ProvingRequestType.BLOCK_ROOT_FIRST_ROLLUP,
454
515
  input,
455
516
  epochNumber,
456
517
  signal,
457
518
  );
458
519
  }
459
520
 
460
- getSingleTxBlockRootRollupProof(
461
- input: SingleTxBlockRootRollupInputs,
521
+ getBlockRootSingleTxFirstRollupProof(
522
+ input: BlockRootSingleTxFirstRollupPrivateInputs,
462
523
  signal?: AbortSignal,
463
- epochNumber?: number,
464
- ): Promise<
465
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
466
- > {
524
+ epochNumber?: EpochNumber,
525
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
467
526
  return this.enqueueJob(
468
- this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber),
469
- ProvingRequestType.SINGLE_TX_BLOCK_ROOT_ROLLUP,
527
+ this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP, input, epochNumber),
528
+ ProvingRequestType.BLOCK_ROOT_SINGLE_TX_FIRST_ROLLUP,
470
529
  input,
471
530
  epochNumber,
472
531
  signal,
473
532
  );
474
533
  }
475
534
 
476
- getEmptyBlockRootRollupProof(
477
- input: EmptyBlockRootRollupInputs,
535
+ getBlockRootEmptyTxFirstRollupProof(
536
+ input: BlockRootEmptyTxFirstRollupPrivateInputs,
478
537
  signal?: AbortSignal,
479
- epochNumber?: number,
480
- ): Promise<
481
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
482
- > {
538
+ epochNumber?: EpochNumber,
539
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
483
540
  return this.enqueueJob(
484
- this.generateId(ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP, input, epochNumber),
485
- ProvingRequestType.EMPTY_BLOCK_ROOT_ROLLUP,
541
+ this.generateId(ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP, input, epochNumber),
542
+ ProvingRequestType.BLOCK_ROOT_EMPTY_TX_FIRST_ROLLUP,
486
543
  input,
487
544
  epochNumber,
488
545
  signal,
489
546
  );
490
547
  }
491
548
 
492
- getPaddingBlockRootRollupProof(
493
- input: PaddingBlockRootRollupInputs,
549
+ getBlockRootRollupProof(
550
+ input: BlockRootRollupPrivateInputs,
494
551
  signal?: AbortSignal,
495
- epochNumber?: number,
496
- ): Promise<
497
- PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
498
- > {
552
+ epochNumber?: EpochNumber,
553
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
499
554
  return this.enqueueJob(
500
- this.generateId(ProvingRequestType.PADDING_BLOCK_ROOT_ROLLUP, input, epochNumber),
501
- ProvingRequestType.PADDING_BLOCK_ROOT_ROLLUP,
555
+ this.generateId(ProvingRequestType.BLOCK_ROOT_ROLLUP, input, epochNumber),
556
+ ProvingRequestType.BLOCK_ROOT_ROLLUP,
502
557
  input,
503
558
  epochNumber,
504
559
  signal,
505
560
  );
506
561
  }
507
562
 
508
- getMergeRollupProof(
509
- input: MergeRollupInputs,
563
+ getBlockRootSingleTxRollupProof(
564
+ input: BlockRootSingleTxRollupPrivateInputs,
510
565
  signal?: AbortSignal,
511
- epochNumber?: number,
512
- ): Promise<
513
- PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
514
- > {
566
+ epochNumber?: EpochNumber,
567
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
568
+ return this.enqueueJob(
569
+ this.generateId(ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP, input, epochNumber),
570
+ ProvingRequestType.BLOCK_ROOT_SINGLE_TX_ROLLUP,
571
+ input,
572
+ epochNumber,
573
+ signal,
574
+ );
575
+ }
576
+
577
+ getBlockMergeRollupProof(
578
+ input: BlockMergeRollupPrivateInputs,
579
+ signal?: AbortSignal,
580
+ epochNumber?: EpochNumber,
581
+ ): Promise<PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>> {
515
582
  return this.enqueueJob(
516
- this.generateId(ProvingRequestType.MERGE_ROLLUP, input, epochNumber),
517
- ProvingRequestType.MERGE_ROLLUP,
583
+ this.generateId(ProvingRequestType.BLOCK_MERGE_ROLLUP, input, epochNumber),
584
+ ProvingRequestType.BLOCK_MERGE_ROLLUP,
518
585
  input,
519
586
  epochNumber,
520
587
  signal,
521
588
  );
522
589
  }
523
- getPrivateBaseRollupProof(
524
- baseRollupInput: PrivateBaseRollupInputs,
590
+
591
+ getCheckpointRootRollupProof(
592
+ input: CheckpointRootRollupPrivateInputs,
525
593
  signal?: AbortSignal,
526
- epochNumber?: number,
594
+ epochNumber?: EpochNumber,
527
595
  ): Promise<
528
- PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
596
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
529
597
  > {
530
598
  return this.enqueueJob(
531
- this.generateId(ProvingRequestType.PRIVATE_BASE_ROLLUP, baseRollupInput, epochNumber),
532
- ProvingRequestType.PRIVATE_BASE_ROLLUP,
533
- baseRollupInput,
599
+ this.generateId(ProvingRequestType.CHECKPOINT_ROOT_ROLLUP, input, epochNumber),
600
+ ProvingRequestType.CHECKPOINT_ROOT_ROLLUP,
601
+ input,
534
602
  epochNumber,
535
603
  signal,
536
604
  );
537
605
  }
538
606
 
539
- getPublicBaseRollupProof(
540
- inputs: PublicBaseRollupInputs,
607
+ getCheckpointRootSingleBlockRollupProof(
608
+ input: CheckpointRootSingleBlockRollupPrivateInputs,
541
609
  signal?: AbortSignal,
542
- epochNumber?: number,
610
+ epochNumber?: EpochNumber,
543
611
  ): Promise<
544
- PublicInputsAndRecursiveProof<BaseOrMergeRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
612
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
545
613
  > {
546
614
  return this.enqueueJob(
547
- this.generateId(ProvingRequestType.PUBLIC_BASE_ROLLUP, inputs, epochNumber),
548
- ProvingRequestType.PUBLIC_BASE_ROLLUP,
549
- inputs,
615
+ this.generateId(ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP, input, epochNumber),
616
+ ProvingRequestType.CHECKPOINT_ROOT_SINGLE_BLOCK_ROLLUP,
617
+ input,
550
618
  epochNumber,
551
619
  signal,
552
620
  );
553
621
  }
554
622
 
555
- getRootParityProof(
556
- inputs: RootParityInputs,
623
+ getCheckpointPaddingRollupProof(
624
+ input: CheckpointPaddingRollupPrivateInputs,
557
625
  signal?: AbortSignal,
558
- epochNumber?: number,
559
- ): Promise<PublicInputsAndRecursiveProof<ParityPublicInputs, typeof NESTED_RECURSIVE_PROOF_LENGTH>> {
626
+ epochNumber?: EpochNumber,
627
+ ): Promise<
628
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
629
+ > {
560
630
  return this.enqueueJob(
561
- this.generateId(ProvingRequestType.ROOT_PARITY, inputs, epochNumber),
562
- ProvingRequestType.ROOT_PARITY,
563
- inputs,
631
+ this.generateId(ProvingRequestType.CHECKPOINT_PADDING_ROLLUP, input, epochNumber),
632
+ ProvingRequestType.CHECKPOINT_PADDING_ROLLUP,
633
+ input,
564
634
  epochNumber,
565
635
  signal,
566
636
  );
567
637
  }
568
638
 
569
- getRootRollupProof(
570
- input: RootRollupInputs,
639
+ getCheckpointMergeRollupProof(
640
+ input: CheckpointMergeRollupPrivateInputs,
571
641
  signal?: AbortSignal,
572
- epochNumber?: number,
573
- ): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
642
+ epochNumber?: EpochNumber,
643
+ ): Promise<
644
+ PublicInputsAndRecursiveProof<CheckpointRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>
645
+ > {
574
646
  return this.enqueueJob(
575
- this.generateId(ProvingRequestType.ROOT_ROLLUP, input, epochNumber),
576
- ProvingRequestType.ROOT_ROLLUP,
647
+ this.generateId(ProvingRequestType.CHECKPOINT_MERGE_ROLLUP, input, epochNumber),
648
+ ProvingRequestType.CHECKPOINT_MERGE_ROLLUP,
577
649
  input,
578
650
  epochNumber,
579
651
  signal,
580
652
  );
581
653
  }
582
654
 
583
- getTubeProof(
584
- tubeInput: TubeInputs,
655
+ getRootRollupProof(
656
+ input: RootRollupPrivateInputs,
585
657
  signal?: AbortSignal,
586
- epochNumber?: number,
587
- ): Promise<ProofAndVerificationKey<typeof TUBE_PROOF_LENGTH>> {
658
+ epochNumber?: EpochNumber,
659
+ ): Promise<PublicInputsAndRecursiveProof<RootRollupPublicInputs, typeof RECURSIVE_PROOF_LENGTH>> {
588
660
  return this.enqueueJob(
589
- this.generateId(ProvingRequestType.TUBE_PROOF, tubeInput, epochNumber),
590
- ProvingRequestType.TUBE_PROOF,
591
- tubeInput,
661
+ this.generateId(ProvingRequestType.ROOT_ROLLUP, input, epochNumber),
662
+ ProvingRequestType.ROOT_ROLLUP,
663
+ input,
592
664
  epochNumber,
593
665
  signal,
594
666
  );
595
667
  }
596
668
 
597
- private generateId(type: ProvingRequestType, inputs: { toBuffer(): Buffer }, epochNumber = 0) {
669
+ private generateId(type: ProvingRequestType, inputs: { toBuffer(): Buffer }, epochNumber = EpochNumber.ZERO) {
598
670
  const inputsHash = sha256(inputs.toBuffer());
599
671
  return makeProvingJobId(epochNumber, type, inputsHash.toString('hex'));
600
672
  }