@aztec/prover-client 0.0.0-test.1 → 0.0.1-commit.001888fc

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 (155) hide show
  1. package/dest/config.d.ts +8 -8
  2. package/dest/config.d.ts.map +1 -1
  3. package/dest/config.js +12 -2
  4. package/dest/index.d.ts +1 -1
  5. package/dest/light/index.d.ts +2 -0
  6. package/dest/light/index.d.ts.map +1 -0
  7. package/dest/light/index.js +1 -0
  8. package/dest/light/lightweight_checkpoint_builder.d.ts +52 -0
  9. package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
  10. package/dest/light/lightweight_checkpoint_builder.js +223 -0
  11. package/dest/mocks/fixtures.d.ts +8 -8
  12. package/dest/mocks/fixtures.d.ts.map +1 -1
  13. package/dest/mocks/fixtures.js +36 -17
  14. package/dest/mocks/test_context.d.ts +43 -32
  15. package/dest/mocks/test_context.d.ts.map +1 -1
  16. package/dest/mocks/test_context.js +152 -87
  17. package/dest/orchestrator/block-building-helpers.d.ts +36 -29
  18. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  19. package/dest/orchestrator/block-building-helpers.js +170 -189
  20. package/dest/orchestrator/block-proving-state.d.ts +73 -48
  21. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  22. package/dest/orchestrator/block-proving-state.js +289 -177
  23. package/dest/orchestrator/checkpoint-proving-state.d.ts +76 -0
  24. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
  25. package/dest/orchestrator/checkpoint-proving-state.js +243 -0
  26. package/dest/orchestrator/epoch-proving-state.d.ts +43 -28
  27. package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
  28. package/dest/orchestrator/epoch-proving-state.js +179 -73
  29. package/dest/orchestrator/index.d.ts +1 -1
  30. package/dest/orchestrator/orchestrator.d.ts +55 -35
  31. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  32. package/dest/orchestrator/orchestrator.js +874 -314
  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/orchestrator_metrics.js +2 -6
  36. package/dest/orchestrator/tx-proving-state.d.ts +15 -12
  37. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  38. package/dest/orchestrator/tx-proving-state.js +27 -44
  39. package/dest/prover-client/factory.d.ts +3 -3
  40. package/dest/prover-client/factory.d.ts.map +1 -1
  41. package/dest/prover-client/index.d.ts +1 -1
  42. package/dest/prover-client/prover-client.d.ts +8 -8
  43. package/dest/prover-client/prover-client.d.ts.map +1 -1
  44. package/dest/prover-client/prover-client.js +19 -13
  45. package/dest/prover-client/server-epoch-prover.d.ts +16 -12
  46. package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
  47. package/dest/prover-client/server-epoch-prover.js +11 -11
  48. package/dest/proving_broker/broker_prover_facade.d.ts +28 -19
  49. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  50. package/dest/proving_broker/broker_prover_facade.js +64 -45
  51. package/dest/proving_broker/config.d.ts +32 -11
  52. package/dest/proving_broker/config.d.ts.map +1 -1
  53. package/dest/proving_broker/config.js +42 -8
  54. package/dest/proving_broker/factory.d.ts +2 -2
  55. package/dest/proving_broker/factory.d.ts.map +1 -1
  56. package/dest/proving_broker/factory.js +5 -1
  57. package/dest/proving_broker/fixtures.d.ts +3 -2
  58. package/dest/proving_broker/fixtures.d.ts.map +1 -1
  59. package/dest/proving_broker/fixtures.js +3 -2
  60. package/dest/proving_broker/index.d.ts +1 -1
  61. package/dest/proving_broker/proof_store/factory.d.ts +2 -5
  62. package/dest/proving_broker/proof_store/factory.d.ts.map +1 -1
  63. package/dest/proving_broker/proof_store/factory.js +7 -30
  64. package/dest/proving_broker/proof_store/file_store_proof_store.d.ts +18 -0
  65. package/dest/proving_broker/proof_store/file_store_proof_store.d.ts.map +1 -0
  66. package/dest/proving_broker/proof_store/file_store_proof_store.js +60 -0
  67. package/dest/proving_broker/proof_store/index.d.ts +2 -1
  68. package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
  69. package/dest/proving_broker/proof_store/index.js +1 -0
  70. package/dest/proving_broker/proof_store/inline_proof_store.d.ts +1 -1
  71. package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -1
  72. package/dest/proving_broker/proof_store/proof_store.d.ts +1 -1
  73. package/dest/proving_broker/proving_agent.d.ts +8 -12
  74. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  75. package/dest/proving_broker/proving_agent.js +86 -65
  76. package/dest/proving_broker/proving_broker.d.ts +17 -5
  77. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  78. package/dest/proving_broker/proving_broker.js +76 -37
  79. package/dest/proving_broker/proving_broker_database/memory.d.ts +3 -2
  80. package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
  81. package/dest/proving_broker/proving_broker_database/memory.js +1 -1
  82. package/dest/proving_broker/proving_broker_database/persisted.d.ts +5 -3
  83. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
  84. package/dest/proving_broker/proving_broker_database/persisted.js +401 -11
  85. package/dest/proving_broker/proving_broker_database.d.ts +3 -2
  86. package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
  87. package/dest/proving_broker/proving_broker_instrumentation.d.ts +3 -1
  88. package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
  89. package/dest/proving_broker/proving_broker_instrumentation.js +22 -35
  90. package/dest/proving_broker/proving_job_controller.d.ts +11 -10
  91. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  92. package/dest/proving_broker/proving_job_controller.js +92 -62
  93. package/dest/proving_broker/rpc.d.ts +7 -7
  94. package/dest/proving_broker/rpc.d.ts.map +1 -1
  95. package/dest/proving_broker/rpc.js +9 -4
  96. package/dest/test/mock_proof_store.d.ts +9 -0
  97. package/dest/test/mock_proof_store.d.ts.map +1 -0
  98. package/dest/test/mock_proof_store.js +10 -0
  99. package/dest/test/mock_prover.d.ts +23 -17
  100. package/dest/test/mock_prover.d.ts.map +1 -1
  101. package/dest/test/mock_prover.js +38 -20
  102. package/package.json +34 -33
  103. package/src/config.ts +25 -9
  104. package/src/light/index.ts +1 -0
  105. package/src/light/lightweight_checkpoint_builder.ts +312 -0
  106. package/src/mocks/fixtures.ts +46 -40
  107. package/src/mocks/test_context.ts +223 -116
  108. package/src/orchestrator/block-building-helpers.ts +258 -334
  109. package/src/orchestrator/block-proving-state.ts +334 -231
  110. package/src/orchestrator/checkpoint-proving-state.ts +349 -0
  111. package/src/orchestrator/epoch-proving-state.ts +239 -111
  112. package/src/orchestrator/orchestrator.ts +674 -355
  113. package/src/orchestrator/orchestrator_metrics.ts +2 -6
  114. package/src/orchestrator/tx-proving-state.ts +48 -66
  115. package/src/prover-client/factory.ts +6 -2
  116. package/src/prover-client/prover-client.ts +49 -38
  117. package/src/prover-client/server-epoch-prover.ts +40 -22
  118. package/src/proving_broker/broker_prover_facade.ts +219 -133
  119. package/src/proving_broker/config.ts +48 -8
  120. package/src/proving_broker/factory.ts +2 -1
  121. package/src/proving_broker/fixtures.ts +8 -3
  122. package/src/proving_broker/proof_store/factory.ts +10 -32
  123. package/src/proving_broker/proof_store/file_store_proof_store.ts +78 -0
  124. package/src/proving_broker/proof_store/index.ts +1 -0
  125. package/src/proving_broker/proof_store/inline_proof_store.ts +1 -1
  126. package/src/proving_broker/proving_agent.ts +95 -66
  127. package/src/proving_broker/proving_broker.ts +94 -44
  128. package/src/proving_broker/proving_broker_database/memory.ts +3 -2
  129. package/src/proving_broker/proving_broker_database/persisted.ts +29 -13
  130. package/src/proving_broker/proving_broker_database.ts +2 -1
  131. package/src/proving_broker/proving_broker_instrumentation.ts +23 -35
  132. package/src/proving_broker/proving_job_controller.ts +100 -83
  133. package/src/proving_broker/rpc.ts +14 -5
  134. package/src/test/mock_proof_store.ts +14 -0
  135. package/src/test/mock_prover.ts +156 -64
  136. package/dest/bin/get-proof-inputs.d.ts +0 -2
  137. package/dest/bin/get-proof-inputs.d.ts.map +0 -1
  138. package/dest/bin/get-proof-inputs.js +0 -51
  139. package/dest/block_builder/index.d.ts +0 -6
  140. package/dest/block_builder/index.d.ts.map +0 -1
  141. package/dest/block_builder/index.js +0 -1
  142. package/dest/block_builder/light.d.ts +0 -33
  143. package/dest/block_builder/light.d.ts.map +0 -1
  144. package/dest/block_builder/light.js +0 -82
  145. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +0 -14
  146. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +0 -1
  147. package/dest/proving_broker/proof_store/gcs_proof_store.js +0 -51
  148. package/dest/proving_broker/proving_agent_instrumentation.d.ts +0 -8
  149. package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +0 -1
  150. package/dest/proving_broker/proving_agent_instrumentation.js +0 -16
  151. package/src/bin/get-proof-inputs.ts +0 -59
  152. package/src/block_builder/index.ts +0 -6
  153. package/src/block_builder/light.ts +0 -101
  154. package/src/proving_broker/proof_store/gcs_proof_store.ts +0 -72
  155. package/src/proving_broker/proving_agent_instrumentation.ts +0 -21
@@ -1 +1 @@
1
- {"version":3,"file":"block-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-proving-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-proving-state.ts"],"names":[],"mappings":"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"}
@@ -1,252 +1,349 @@
1
- import { SpongeBlob } from '@aztec/blob-lib';
2
- import { BLOBS_PER_BLOCK, FIELDS_PER_BLOB, NUM_BASE_PARITY_PER_ROOT_PARITY, VK_TREE_HEIGHT } from '@aztec/constants';
3
- import { padArrayEnd } from '@aztec/foundation/collection';
4
- import { Fr } from '@aztec/foundation/fields';
5
- import { MembershipWitness, UnbalancedTreeStore } from '@aztec/foundation/trees';
6
- import { getVKIndex, getVKSiblingPath, getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
7
- import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
8
- import { RootParityInput, RootParityInputs } from '@aztec/stdlib/parity';
9
- import { BlockRootRollupBlobData, BlockRootRollupData, BlockRootRollupInputs, ConstantRollupData, EmptyBlockRootRollupInputs, MergeRollupInputs, PreviousRollupData, SingleTxBlockRootRollupInputs } from '@aztec/stdlib/rollup';
10
- import { StateReference } from '@aztec/stdlib/tx';
11
- import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-helpers.js';
1
+ import { encodeBlockEndBlobData } from '@aztec/blob-lib';
2
+ import { NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants';
3
+ import { Fr } from '@aztec/foundation/curves/bn254';
4
+ import { assertLength } from '@aztec/foundation/serialize';
5
+ import { UnbalancedTreeStore } from '@aztec/foundation/trees';
6
+ import { ParityRootPrivateInputs } from '@aztec/stdlib/parity';
7
+ import { BlockRootEmptyTxFirstRollupPrivateInputs, BlockRootFirstRollupPrivateInputs, BlockRootRollupPrivateInputs, BlockRootSingleTxFirstRollupPrivateInputs, BlockRootSingleTxRollupPrivateInputs, TxMergeRollupPrivateInputs } from '@aztec/stdlib/rollup';
8
+ import { BlockHeader, GlobalVariables } from '@aztec/stdlib/tx';
9
+ import { buildHeaderFromCircuitOutputs, toProofData } from './block-building-helpers.js';
12
10
  /**
13
11
  * The current state of the proving schedule for a given block. Managed by ProvingState.
14
12
  * Contains the raw inputs and intermediate state to generate every constituent proof in the tree.
15
13
  */ export class BlockProvingState {
16
14
  index;
17
- globalVariables;
18
- newL1ToL2Messages;
19
- l1ToL2MessageSubtreeSiblingPath;
20
- l1ToL2MessageTreeSnapshotAfterInsertion;
21
- lastArchiveSnapshot;
22
- newArchiveSiblingPath;
23
- previousBlockHeader;
24
- parentEpoch;
25
- baseOrMergeProvingOutputs;
26
- baseParityProvingOutputs;
27
- rootParityProvingOutput;
28
- blockRootProvingOutput;
29
- blockRootRollupStarted;
30
- block;
31
- spongeBlobState;
15
+ blockNumber;
32
16
  totalNumTxs;
17
+ constants;
18
+ timestamp;
19
+ lastArchiveTreeSnapshot;
20
+ lastArchiveSiblingPath;
21
+ lastL1ToL2MessageTreeSnapshot;
22
+ lastL1ToL2MessageSubtreeRootSiblingPath;
23
+ newL1ToL2MessageTreeSnapshot;
24
+ headerOfLastBlockInPreviousCheckpoint;
25
+ startSpongeBlob;
26
+ parentCheckpoint;
27
+ baseOrMergeProofs;
28
+ baseParityProofs;
29
+ rootParityProof;
30
+ blockRootProof;
31
+ builtBlockHeader;
32
+ builtArchive;
33
+ endState;
34
+ endSpongeBlob;
33
35
  txs;
36
+ isFirstBlock;
34
37
  error;
35
- constructor(index, globalVariables, newL1ToL2Messages, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchiveSnapshot, newArchiveSiblingPath, previousBlockHeader, parentEpoch){
38
+ constructor(index, blockNumber, totalNumTxs, constants, timestamp, lastArchiveTreeSnapshot, lastArchiveSiblingPath, lastL1ToL2MessageTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath, newL1ToL2MessageTreeSnapshot, headerOfLastBlockInPreviousCheckpoint, startSpongeBlob, parentCheckpoint){
36
39
  this.index = index;
37
- this.globalVariables = globalVariables;
38
- this.newL1ToL2Messages = newL1ToL2Messages;
39
- this.l1ToL2MessageSubtreeSiblingPath = l1ToL2MessageSubtreeSiblingPath;
40
- this.l1ToL2MessageTreeSnapshotAfterInsertion = l1ToL2MessageTreeSnapshotAfterInsertion;
41
- this.lastArchiveSnapshot = lastArchiveSnapshot;
42
- this.newArchiveSiblingPath = newArchiveSiblingPath;
43
- this.previousBlockHeader = previousBlockHeader;
44
- this.parentEpoch = parentEpoch;
45
- this.baseOrMergeProvingOutputs = new UnbalancedTreeStore(0);
46
- this.blockRootRollupStarted = false;
47
- this.txs = [];
48
- this.baseParityProvingOutputs = Array.from({
40
+ this.blockNumber = blockNumber;
41
+ this.totalNumTxs = totalNumTxs;
42
+ this.constants = constants;
43
+ this.timestamp = timestamp;
44
+ this.lastArchiveTreeSnapshot = lastArchiveTreeSnapshot;
45
+ this.lastArchiveSiblingPath = lastArchiveSiblingPath;
46
+ this.lastL1ToL2MessageTreeSnapshot = lastL1ToL2MessageTreeSnapshot;
47
+ this.lastL1ToL2MessageSubtreeRootSiblingPath = lastL1ToL2MessageSubtreeRootSiblingPath;
48
+ this.newL1ToL2MessageTreeSnapshot = newL1ToL2MessageTreeSnapshot;
49
+ this.headerOfLastBlockInPreviousCheckpoint = headerOfLastBlockInPreviousCheckpoint;
50
+ this.startSpongeBlob = startSpongeBlob;
51
+ this.parentCheckpoint = parentCheckpoint;
52
+ this.baseOrMergeProofs = new UnbalancedTreeStore(0);
53
+ this.baseParityProofs = Array.from({
49
54
  length: NUM_BASE_PARITY_PER_ROOT_PARITY
50
55
  }).map((_)=>undefined);
51
- this.totalNumTxs = 0;
52
- }
53
- get blockNumber() {
54
- return this.globalVariables.blockNumber.toNumber();
55
- }
56
- startNewBlock(numTxs, numBlobFields) {
57
- if (this.spongeBlobState) {
58
- throw new Error(`Block ${this.blockNumber} already initalised.`);
56
+ this.txs = [];
57
+ this.isFirstBlock = index === 0;
58
+ if (!totalNumTxs && !this.isFirstBlock) {
59
+ throw new Error(`Cannot create a block with 0 txs, unless it's the first block.`);
59
60
  }
60
- this.baseOrMergeProvingOutputs = new UnbalancedTreeStore(numTxs);
61
- // Initialise the sponge which will eventually absorb all tx effects to be added to the blob.
62
- // Like l1 to l2 messages, we need to know beforehand how many effects will be absorbed.
63
- this.spongeBlobState = SpongeBlob.init(numBlobFields);
64
- this.totalNumTxs = numTxs;
61
+ this.baseOrMergeProofs = new UnbalancedTreeStore(totalNumTxs);
62
+ }
63
+ get epochNumber() {
64
+ return this.parentCheckpoint.epochNumber;
65
65
  }
66
66
  // Adds a transaction to the proving state, returns it's index
67
67
  addNewTx(tx) {
68
- if (!this.spongeBlobState) {
69
- throw new Error(`Invalid block proving state, call startNewBlock before adding transactions.`);
68
+ if (!this.isAcceptingTxs()) {
69
+ throw new Error(`Cannot add more txs to block ${this.blockNumber}.`);
70
70
  }
71
71
  const txIndex = this.txs.length;
72
72
  this.txs[txIndex] = tx;
73
73
  return txIndex;
74
74
  }
75
+ isAcceptingTxs() {
76
+ return this.txs.length < this.totalNumTxs;
77
+ }
78
+ getProcessedTxs() {
79
+ return this.txs.map((t)=>t.processedTx);
80
+ }
81
+ tryStartProvingBase(txIndex) {
82
+ if (this.baseOrMergeProofs.getLeaf(txIndex)?.isProving) {
83
+ return false;
84
+ } else {
85
+ this.baseOrMergeProofs.setLeaf(txIndex, {
86
+ isProving: true
87
+ });
88
+ return true;
89
+ }
90
+ }
75
91
  setBaseRollupProof(txIndex, provingOutput) {
76
- return this.baseOrMergeProvingOutputs.setLeaf(txIndex, provingOutput);
92
+ return this.baseOrMergeProofs.setLeaf(txIndex, {
93
+ provingOutput
94
+ });
95
+ }
96
+ tryStartProvingMerge(location) {
97
+ if (this.baseOrMergeProofs.getNode(location)?.isProving) {
98
+ return false;
99
+ } else {
100
+ this.baseOrMergeProofs.setNode(location, {
101
+ isProving: true
102
+ });
103
+ return true;
104
+ }
77
105
  }
78
106
  setMergeRollupProof(location, provingOutput) {
79
- this.baseOrMergeProvingOutputs.setNode(location, provingOutput);
107
+ this.baseOrMergeProofs.setNode(location, {
108
+ provingOutput
109
+ });
110
+ }
111
+ tryStartProvingBaseParity(index) {
112
+ if (this.baseParityProofs[index]?.isProving) {
113
+ return false;
114
+ } else {
115
+ this.baseParityProofs[index] = {
116
+ isProving: true
117
+ };
118
+ return true;
119
+ }
80
120
  }
81
121
  // Stores a set of root parity inputs at the given index
82
122
  setBaseParityProof(index, provingOutput) {
83
123
  if (index >= NUM_BASE_PARITY_PER_ROOT_PARITY) {
84
124
  throw new Error(`Unable to set a base parity proofs at index ${index}. Expected at most ${NUM_BASE_PARITY_PER_ROOT_PARITY} proofs.`);
85
125
  }
86
- this.baseParityProvingOutputs[index] = provingOutput;
126
+ this.baseParityProofs[index] = {
127
+ provingOutput
128
+ };
129
+ }
130
+ tryStartProvingRootParity() {
131
+ if (this.rootParityProof?.isProving) {
132
+ return false;
133
+ } else {
134
+ this.rootParityProof = {
135
+ isProving: true
136
+ };
137
+ return true;
138
+ }
87
139
  }
88
140
  setRootParityProof(provingOutput) {
89
- this.rootParityProvingOutput = provingOutput;
141
+ this.rootParityProof = {
142
+ provingOutput
143
+ };
144
+ }
145
+ tryStartProvingBlockRoot() {
146
+ if (this.blockRootProof?.isProving) {
147
+ return false;
148
+ } else {
149
+ this.blockRootProof = {
150
+ isProving: true
151
+ };
152
+ return true;
153
+ }
90
154
  }
91
155
  setBlockRootRollupProof(provingOutput) {
92
- this.blockRootProvingOutput = provingOutput;
156
+ this.blockRootProof = {
157
+ provingOutput
158
+ };
159
+ return this.parentCheckpoint.setBlockRootRollupProof(this.index, provingOutput);
160
+ }
161
+ getBlockRootRollupOutput() {
162
+ return this.blockRootProof?.provingOutput?.inputs;
163
+ }
164
+ async buildBlockHeader() {
165
+ if (this.isAcceptingTxs()) {
166
+ throw new Error('All txs must be added to the block before building the header.');
167
+ }
168
+ if (!this.endState) {
169
+ throw new Error('Call `setEndState` first.');
170
+ }
171
+ if (!this.endSpongeBlob) {
172
+ throw new Error('Call `setEndSpongeBlob` first.');
173
+ }
174
+ const endSpongeBlob = this.endSpongeBlob.clone();
175
+ const endSpongeBlobHash = await endSpongeBlob.squeeze();
176
+ this.builtBlockHeader = new BlockHeader(this.lastArchiveTreeSnapshot, this.endState, endSpongeBlobHash, this.#getGlobalVariables(), this.#getTotalFees(), new Fr(this.#getTotalManaUsed()));
177
+ return this.builtBlockHeader;
93
178
  }
94
- // Returns the complete set of transaction proving state objects
95
- get allTxs() {
96
- return this.txs;
179
+ getBuiltBlockHeader() {
180
+ return this.builtBlockHeader;
97
181
  }
98
- /** Returns the block number as an epoch number. Used for prioritizing proof requests. */ get epochNumber() {
99
- return this.parentEpoch.epochNumber;
182
+ setBuiltArchive(archive) {
183
+ this.builtArchive = archive;
184
+ }
185
+ getBuiltArchive() {
186
+ return this.builtArchive;
187
+ }
188
+ getStartSpongeBlob() {
189
+ return this.startSpongeBlob;
190
+ }
191
+ setEndSpongeBlob(endSpongeBlob) {
192
+ this.endSpongeBlob = endSpongeBlob;
193
+ }
194
+ getEndSpongeBlob() {
195
+ return this.endSpongeBlob;
196
+ }
197
+ setEndState(endState) {
198
+ this.endState = endState;
199
+ }
200
+ hasEndState() {
201
+ return !!this.endState;
202
+ }
203
+ getBlockEndBlobFields() {
204
+ return encodeBlockEndBlobData(this.getBlockEndBlobData());
205
+ }
206
+ getBlockEndBlobData() {
207
+ if (!this.endState) {
208
+ throw new Error('Call `setEndState` first.');
209
+ }
210
+ const partial = this.endState.partial;
211
+ return {
212
+ blockEndMarker: {
213
+ numTxs: this.totalNumTxs,
214
+ timestamp: this.timestamp,
215
+ blockNumber: this.blockNumber
216
+ },
217
+ blockEndStateField: {
218
+ l1ToL2MessageNextAvailableLeafIndex: this.newL1ToL2MessageTreeSnapshot.nextAvailableLeafIndex,
219
+ noteHashNextAvailableLeafIndex: partial.noteHashTree.nextAvailableLeafIndex,
220
+ nullifierNextAvailableLeafIndex: partial.nullifierTree.nextAvailableLeafIndex,
221
+ publicDataNextAvailableLeafIndex: partial.publicDataTree.nextAvailableLeafIndex,
222
+ totalManaUsed: this.#getTotalManaUsed()
223
+ },
224
+ lastArchiveRoot: this.lastArchiveTreeSnapshot.root,
225
+ noteHashRoot: partial.noteHashTree.root,
226
+ nullifierRoot: partial.nullifierTree.root,
227
+ publicDataRoot: partial.publicDataTree.root,
228
+ l1ToL2MessageRoot: this.isFirstBlock ? this.newL1ToL2MessageTreeSnapshot.root : undefined
229
+ };
230
+ }
231
+ getBlockBlobData() {
232
+ return {
233
+ ...this.getBlockEndBlobData(),
234
+ txs: this.getTxEffects().map((t)=>t.toTxBlobData())
235
+ };
236
+ }
237
+ getTxEffects() {
238
+ return this.txs.map((t)=>t.processedTx.txEffect);
100
239
  }
101
240
  getParentLocation(location) {
102
- return this.baseOrMergeProvingOutputs.getParentLocation(location);
241
+ return this.baseOrMergeProofs.getParentLocation(location);
103
242
  }
104
243
  getMergeRollupInputs(mergeLocation) {
105
- const [left, right] = this.baseOrMergeProvingOutputs.getChildren(mergeLocation);
244
+ const [left, right] = this.baseOrMergeProofs.getChildren(mergeLocation).map((c)=>c?.provingOutput);
106
245
  if (!left || !right) {
107
- throw new Error('At lease one child is not ready.');
246
+ throw new Error('At least one child is not ready for the merge rollup.');
108
247
  }
109
- return new MergeRollupInputs([
110
- this.#getPreviousRollupData(left),
111
- this.#getPreviousRollupData(right)
248
+ return new TxMergeRollupPrivateInputs([
249
+ toProofData(left),
250
+ toProofData(right)
112
251
  ]);
113
252
  }
114
- async getBlockRootRollupTypeAndInputs(proverId) {
115
- if (!this.rootParityProvingOutput) {
116
- throw new Error('Root parity is not ready.');
117
- }
118
- const proofs = this.#getChildProofsForBlockRoot();
119
- const nonEmptyProofs = proofs.filter((p)=>!!p);
120
- if (proofs.length !== nonEmptyProofs.length) {
121
- throw new Error('At lease one child is not ready for the block root.');
253
+ getBlockRootRollupTypeAndInputs() {
254
+ const provingOutputs = this.#getChildProvingOutputsForBlockRoot();
255
+ if (!provingOutputs.every((p)=>!!p)) {
256
+ throw new Error('At least one child is not ready for the block root rollup.');
122
257
  }
123
- const data = this.#getBlockRootRollupData(proverId);
124
- if (this.totalNumTxs === 0) {
125
- const constants = ConstantRollupData.from({
126
- lastArchive: this.lastArchiveSnapshot,
127
- globalVariables: this.globalVariables,
128
- vkTreeRoot: getVKTreeRoot(),
129
- protocolContractTreeRoot
130
- });
131
- return {
132
- rollupType: 'empty-block-root-rollup',
133
- inputs: EmptyBlockRootRollupInputs.from({
134
- data,
135
- constants,
136
- isPadding: false
137
- })
138
- };
258
+ const previousRollups = provingOutputs.map((p)=>toProofData(p));
259
+ if (this.isFirstBlock) {
260
+ return this.#getFirstBlockRootRollupTypeAndInputs(previousRollups);
139
261
  }
140
- const previousRollupData = await Promise.all(nonEmptyProofs.map((p)=>this.#getPreviousRollupData(p)));
141
- const blobData = await this.#getBlockRootRollupBlobData();
142
- if (previousRollupData.length === 1) {
262
+ const [leftRollup, rightRollup] = previousRollups;
263
+ if (!rightRollup) {
143
264
  return {
144
- rollupType: 'single-tx-block-root-rollup',
145
- inputs: new SingleTxBlockRootRollupInputs(previousRollupData, data, blobData)
265
+ rollupType: 'rollup-block-root-single-tx',
266
+ inputs: new BlockRootSingleTxRollupPrivateInputs(leftRollup, this.lastArchiveSiblingPath)
146
267
  };
147
268
  } else {
148
269
  return {
149
- rollupType: 'block-root-rollup',
150
- inputs: new BlockRootRollupInputs(previousRollupData, data, blobData)
270
+ rollupType: 'rollup-block-root',
271
+ inputs: new BlockRootRollupPrivateInputs([
272
+ leftRollup,
273
+ rightRollup
274
+ ], this.lastArchiveSiblingPath)
151
275
  };
152
276
  }
153
277
  }
154
- async getPaddingBlockRootInputs(proverId) {
155
- if (!this.rootParityProvingOutput) {
278
+ #getFirstBlockRootRollupTypeAndInputs([leftRollup, rightRollup]) {
279
+ if (!this.rootParityProof?.provingOutput) {
156
280
  throw new Error('Root parity is not ready.');
157
281
  }
158
- // Use the new block header and archive of the current block as the previous header and archiver of the next padding block.
159
- const newBlockHeader = await this.buildHeaderFromProvingOutputs();
160
- const newArchive = this.blockRootProvingOutput.inputs.newArchive;
161
- const data = BlockRootRollupData.from({
162
- l1ToL2Roots: this.#getRootParityData(this.rootParityProvingOutput),
163
- l1ToL2MessageSubtreeSiblingPath: this.l1ToL2MessageSubtreeSiblingPath,
164
- newArchiveSiblingPath: this.newArchiveSiblingPath,
165
- previousBlockHeader: newBlockHeader,
166
- proverId
167
- });
168
- const constants = ConstantRollupData.from({
169
- lastArchive: newArchive,
170
- globalVariables: this.globalVariables,
171
- vkTreeRoot: getVKTreeRoot(),
172
- protocolContractTreeRoot
173
- });
174
- return EmptyBlockRootRollupInputs.from({
175
- data,
176
- constants,
177
- isPadding: true
178
- });
282
+ const l1ToL2Roots = toProofData(this.rootParityProof.provingOutput);
283
+ if (!leftRollup) {
284
+ return {
285
+ rollupType: 'rollup-block-root-first-empty-tx',
286
+ inputs: new BlockRootEmptyTxFirstRollupPrivateInputs(l1ToL2Roots, this.lastArchiveTreeSnapshot, this.headerOfLastBlockInPreviousCheckpoint.state, this.constants, this.timestamp, this.lastL1ToL2MessageSubtreeRootSiblingPath, this.lastArchiveSiblingPath)
287
+ };
288
+ } else if (!rightRollup) {
289
+ return {
290
+ rollupType: 'rollup-block-root-first-single-tx',
291
+ inputs: new BlockRootSingleTxFirstRollupPrivateInputs(l1ToL2Roots, leftRollup, this.lastL1ToL2MessageTreeSnapshot, this.lastL1ToL2MessageSubtreeRootSiblingPath, this.lastArchiveSiblingPath)
292
+ };
293
+ } else {
294
+ return {
295
+ rollupType: 'rollup-block-root-first',
296
+ inputs: new BlockRootFirstRollupPrivateInputs(l1ToL2Roots, [
297
+ leftRollup,
298
+ rightRollup
299
+ ], this.lastL1ToL2MessageTreeSnapshot, this.lastL1ToL2MessageSubtreeRootSiblingPath, this.lastArchiveSiblingPath)
300
+ };
301
+ }
179
302
  }
180
- getRootParityInputs() {
181
- if (!this.baseParityProvingOutputs.every((p)=>!!p)) {
303
+ getParityRootInputs() {
304
+ const baseParityProvingOutputs = this.baseParityProofs.filter((p)=>!!p?.provingOutput).map((p)=>p.provingOutput);
305
+ if (baseParityProvingOutputs.length !== this.baseParityProofs.length) {
182
306
  throw new Error('At lease one base parity is not ready.');
183
307
  }
184
- const children = this.baseParityProvingOutputs.map((p)=>this.#getRootParityData(p));
185
- return new RootParityInputs(children);
308
+ const children = baseParityProvingOutputs.map((p)=>toProofData(p));
309
+ return new ParityRootPrivateInputs(assertLength(children, NUM_BASE_PARITY_PER_ROOT_PARITY));
186
310
  }
187
311
  // Returns a specific transaction proving state
188
312
  getTxProvingState(txIndex) {
189
313
  return this.txs[txIndex];
190
314
  }
191
- async buildHeaderFromProvingOutputs(logger) {
192
- const previousRollupData = this.totalNumTxs === 0 ? [] : await Promise.all(this.#getChildProofsForBlockRoot().map((p)=>this.#getPreviousRollupData(p)));
193
- let endPartialState = this.previousBlockHeader.state.partial;
194
- if (this.totalNumTxs !== 0) {
195
- const previousRollupData = this.#getChildProofsForBlockRoot();
196
- const lastRollup = previousRollupData[previousRollupData.length - 1];
197
- if (!lastRollup) {
198
- throw new Error('End state of the block is not available. Last rollup is not ready yet.');
199
- }
200
- endPartialState = lastRollup.inputs.end;
315
+ async buildHeaderFromProvingOutputs() {
316
+ if (!this.blockRootProof?.provingOutput) {
317
+ throw new Error('Block root rollup is not ready.');
201
318
  }
202
- const endState = new StateReference(this.l1ToL2MessageTreeSnapshotAfterInsertion, endPartialState);
203
- return buildHeaderFromCircuitOutputs(previousRollupData.map((d)=>d.baseOrMergeRollupPublicInputs), this.rootParityProvingOutput.inputs, this.blockRootProvingOutput.inputs, endState, logger);
319
+ return await buildHeaderFromCircuitOutputs(this.blockRootProof.provingOutput.inputs);
204
320
  }
205
321
  isReadyForMergeRollup(location) {
206
- return this.baseOrMergeProvingOutputs.getSibling(location) !== undefined;
322
+ return !!this.baseOrMergeProofs.getSibling(location)?.provingOutput;
207
323
  }
208
324
  // Returns true if we have sufficient inputs to execute the block root rollup
209
325
  isReadyForBlockRootRollup() {
210
- const childProofs = this.#getChildProofsForBlockRoot();
211
- return this.block !== undefined && this.rootParityProvingOutput !== undefined && childProofs.every((p)=>!!p);
326
+ const childProofs = this.#getChildProvingOutputsForBlockRoot();
327
+ return (!this.isFirstBlock || !!this.rootParityProof?.provingOutput) && childProofs.every((p)=>!!p);
212
328
  }
213
329
  // Returns true if we have sufficient root parity inputs to execute the root parity circuit
214
330
  isReadyForRootParity() {
215
- return this.baseParityProvingOutputs.every((p)=>!!p);
331
+ return this.baseParityProofs.every((p)=>!!p?.provingOutput);
216
332
  }
217
333
  isComplete() {
218
- return !!this.blockRootProvingOutput;
334
+ return !!this.blockRootProof;
219
335
  }
220
- // Returns whether the proving state is still valid
221
336
  verifyState() {
222
- return this.parentEpoch.verifyState();
337
+ return this.parentCheckpoint.verifyState();
338
+ }
339
+ getError() {
340
+ return this.error;
223
341
  }
224
342
  reject(reason) {
225
343
  this.error = reason;
226
- this.parentEpoch.reject(reason);
227
- }
228
- #getBlockRootRollupData(proverId) {
229
- return BlockRootRollupData.from({
230
- l1ToL2Roots: this.#getRootParityData(this.rootParityProvingOutput),
231
- l1ToL2MessageSubtreeSiblingPath: this.l1ToL2MessageSubtreeSiblingPath,
232
- newArchiveSiblingPath: this.newArchiveSiblingPath,
233
- previousBlockHeader: this.previousBlockHeader,
234
- proverId
235
- });
344
+ this.parentCheckpoint.reject(reason);
236
345
  }
237
- async #getBlockRootRollupBlobData() {
238
- const txEffects = this.txs.map((txProvingState)=>txProvingState.processedTx.txEffect);
239
- const { blobFields, blobCommitments, blobsHash } = await buildBlobHints(txEffects);
240
- return BlockRootRollupBlobData.from({
241
- blobFields: padArrayEnd(blobFields, Fr.ZERO, FIELDS_PER_BLOB * BLOBS_PER_BLOCK),
242
- blobCommitments: padArrayEnd(blobCommitments, [
243
- Fr.ZERO,
244
- Fr.ZERO
245
- ], BLOBS_PER_BLOCK),
246
- blobsHash
247
- });
248
- }
249
- #getChildProofsForBlockRoot() {
346
+ #getChildProvingOutputsForBlockRoot() {
250
347
  if (this.totalNumTxs === 0) {
251
348
  return [];
252
349
  }
@@ -256,14 +353,29 @@ import { buildBlobHints, buildHeaderFromCircuitOutputs } from './block-building-
256
353
  };
257
354
  // If there's only 1 tx, its base rollup proof will be stored at the root.
258
355
  return this.totalNumTxs === 1 ? [
259
- this.baseOrMergeProvingOutputs.getNode(rootLocation)
260
- ] : this.baseOrMergeProvingOutputs.getChildren(rootLocation);
356
+ this.baseOrMergeProofs.getNode(rootLocation)?.provingOutput
357
+ ] : this.baseOrMergeProofs.getChildren(rootLocation).map((c)=>c?.provingOutput);
358
+ }
359
+ #getGlobalVariables() {
360
+ if (this.txs.length) {
361
+ return this.txs[0].processedTx.globalVariables;
362
+ }
363
+ const constants = this.constants;
364
+ return GlobalVariables.from({
365
+ chainId: constants.chainId,
366
+ version: constants.version,
367
+ blockNumber: this.blockNumber,
368
+ slotNumber: constants.slotNumber,
369
+ timestamp: this.timestamp,
370
+ coinbase: constants.coinbase,
371
+ feeRecipient: constants.feeRecipient,
372
+ gasFees: constants.gasFees
373
+ });
261
374
  }
262
- #getPreviousRollupData({ inputs, proof, verificationKey }) {
263
- const leafIndex = getVKIndex(verificationKey.keyAsFields);
264
- return new PreviousRollupData(inputs, proof, verificationKey.keyAsFields, new MembershipWitness(VK_TREE_HEIGHT, BigInt(leafIndex), getVKSiblingPath(leafIndex)));
375
+ #getTotalFees() {
376
+ return this.txs.reduce((acc, tx)=>acc.add(tx.processedTx.txEffect.transactionFee), Fr.ZERO);
265
377
  }
266
- #getRootParityData({ inputs, proof, verificationKey }) {
267
- return new RootParityInput(proof, verificationKey.keyAsFields, getVKSiblingPath(getVKIndex(verificationKey)), inputs);
378
+ #getTotalManaUsed() {
379
+ return this.txs.reduce((acc, tx)=>acc + BigInt(tx.processedTx.gasUsed.billedGas.l2Gas), 0n);
268
380
  }
269
381
  }