@aztec-labs/prover-client 6.0.0-nightly.20260829

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 (170) hide show
  1. package/README.md +1 -0
  2. package/dest/config.d.ts +17 -0
  3. package/dest/config.d.ts.map +1 -0
  4. package/dest/config.js +63 -0
  5. package/dest/index.d.ts +4 -0
  6. package/dest/index.d.ts.map +1 -0
  7. package/dest/index.js +2 -0
  8. package/dest/light/index.d.ts +2 -0
  9. package/dest/light/index.d.ts.map +1 -0
  10. package/dest/light/index.js +1 -0
  11. package/dest/light/lightweight_checkpoint_builder.d.ts +58 -0
  12. package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
  13. package/dest/light/lightweight_checkpoint_builder.js +243 -0
  14. package/dest/mocks/fixtures.d.ts +20 -0
  15. package/dest/mocks/fixtures.d.ts.map +1 -0
  16. package/dest/mocks/fixtures.js +96 -0
  17. package/dest/mocks/test_context.d.ts +93 -0
  18. package/dest/mocks/test_context.d.ts.map +1 -0
  19. package/dest/mocks/test_context.js +354 -0
  20. package/dest/orchestrator/block-building-helpers.d.ts +67 -0
  21. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -0
  22. package/dest/orchestrator/block-building-helpers.js +274 -0
  23. package/dest/orchestrator/block-proving-state.d.ts +107 -0
  24. package/dest/orchestrator/block-proving-state.d.ts.map +1 -0
  25. package/dest/orchestrator/block-proving-state.js +339 -0
  26. package/dest/orchestrator/checkpoint-proving-state.d.ts +67 -0
  27. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
  28. package/dest/orchestrator/checkpoint-proving-state.js +175 -0
  29. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts +169 -0
  30. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.d.ts.map +1 -0
  31. package/dest/orchestrator/checkpoint-sub-tree-orchestrator.js +1047 -0
  32. package/dest/orchestrator/chonk-cache.d.ts +39 -0
  33. package/dest/orchestrator/chonk-cache.d.ts.map +1 -0
  34. package/dest/orchestrator/chonk-cache.js +80 -0
  35. package/dest/orchestrator/index.d.ts +4 -0
  36. package/dest/orchestrator/index.d.ts.map +1 -0
  37. package/dest/orchestrator/index.js +3 -0
  38. package/dest/orchestrator/orchestrator_metrics.d.ts +8 -0
  39. package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -0
  40. package/dest/orchestrator/orchestrator_metrics.js +13 -0
  41. package/dest/orchestrator/proving-scheduler.d.ts +81 -0
  42. package/dest/orchestrator/proving-scheduler.d.ts.map +1 -0
  43. package/dest/orchestrator/proving-scheduler.js +120 -0
  44. package/dest/orchestrator/top-tree-orchestrator.d.ts +89 -0
  45. package/dest/orchestrator/top-tree-orchestrator.d.ts.map +1 -0
  46. package/dest/orchestrator/top-tree-orchestrator.js +233 -0
  47. package/dest/orchestrator/top-tree-proving-state.d.ts +61 -0
  48. package/dest/orchestrator/top-tree-proving-state.d.ts.map +1 -0
  49. package/dest/orchestrator/top-tree-proving-state.js +185 -0
  50. package/dest/orchestrator/tx-proving-state.d.ts +37 -0
  51. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -0
  52. package/dest/orchestrator/tx-proving-state.js +77 -0
  53. package/dest/prover-client/factory.d.ts +6 -0
  54. package/dest/prover-client/factory.d.ts.map +1 -0
  55. package/dest/prover-client/factory.js +5 -0
  56. package/dest/prover-client/index.d.ts +3 -0
  57. package/dest/prover-client/index.d.ts.map +1 -0
  58. package/dest/prover-client/index.js +2 -0
  59. package/dest/prover-client/prover-client.d.ts +99 -0
  60. package/dest/prover-client/prover-client.d.ts.map +1 -0
  61. package/dest/prover-client/prover-client.js +163 -0
  62. package/dest/proving_broker/broker_prover_facade.d.ts +52 -0
  63. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -0
  64. package/dest/proving_broker/broker_prover_facade.js +360 -0
  65. package/dest/proving_broker/config.d.ts +40 -0
  66. package/dest/proving_broker/config.d.ts.map +1 -0
  67. package/dest/proving_broker/config.js +138 -0
  68. package/dest/proving_broker/factory.d.ts +5 -0
  69. package/dest/proving_broker/factory.d.ts.map +1 -0
  70. package/dest/proving_broker/factory.js +13 -0
  71. package/dest/proving_broker/fixtures.d.ts +6 -0
  72. package/dest/proving_broker/fixtures.d.ts.map +1 -0
  73. package/dest/proving_broker/fixtures.js +13 -0
  74. package/dest/proving_broker/index.d.ts +11 -0
  75. package/dest/proving_broker/index.d.ts.map +1 -0
  76. package/dest/proving_broker/index.js +10 -0
  77. package/dest/proving_broker/proof_store/factory.d.ts +3 -0
  78. package/dest/proving_broker/proof_store/factory.d.ts.map +1 -0
  79. package/dest/proving_broker/proof_store/factory.js +13 -0
  80. package/dest/proving_broker/proof_store/file_store_proof_store.d.ts +18 -0
  81. package/dest/proving_broker/proof_store/file_store_proof_store.d.ts.map +1 -0
  82. package/dest/proving_broker/proof_store/file_store_proof_store.js +60 -0
  83. package/dest/proving_broker/proof_store/index.d.ts +5 -0
  84. package/dest/proving_broker/proof_store/index.d.ts.map +1 -0
  85. package/dest/proving_broker/proof_store/index.js +4 -0
  86. package/dest/proving_broker/proof_store/inline_proof_store.d.ts +15 -0
  87. package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -0
  88. package/dest/proving_broker/proof_store/inline_proof_store.js +41 -0
  89. package/dest/proving_broker/proof_store/proof_store.d.ts +36 -0
  90. package/dest/proving_broker/proof_store/proof_store.d.ts.map +1 -0
  91. package/dest/proving_broker/proof_store/proof_store.js +3 -0
  92. package/dest/proving_broker/proving_agent.d.ts +42 -0
  93. package/dest/proving_broker/proving_agent.d.ts.map +1 -0
  94. package/dest/proving_broker/proving_agent.js +155 -0
  95. package/dest/proving_broker/proving_broker.d.ts +77 -0
  96. package/dest/proving_broker/proving_broker.d.ts.map +1 -0
  97. package/dest/proving_broker/proving_broker.js +780 -0
  98. package/dest/proving_broker/proving_broker_database/memory.d.ts +20 -0
  99. package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -0
  100. package/dest/proving_broker/proving_broker_database/memory.js +67 -0
  101. package/dest/proving_broker/proving_broker_database/persisted.d.ts +40 -0
  102. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -0
  103. package/dest/proving_broker/proving_broker_database/persisted.js +623 -0
  104. package/dest/proving_broker/proving_broker_database.d.ts +66 -0
  105. package/dest/proving_broker/proving_broker_database.d.ts.map +1 -0
  106. package/dest/proving_broker/proving_broker_database.js +3 -0
  107. package/dest/proving_broker/proving_broker_instrumentation.d.ts +31 -0
  108. package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -0
  109. package/dest/proving_broker/proving_broker_instrumentation.js +97 -0
  110. package/dest/proving_broker/proving_job_controller.d.ts +34 -0
  111. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -0
  112. package/dest/proving_broker/proving_job_controller.js +184 -0
  113. package/dest/proving_broker/rpc.d.ts +38 -0
  114. package/dest/proving_broker/rpc.d.ts.map +1 -0
  115. package/dest/proving_broker/rpc.js +138 -0
  116. package/dest/test/epoch_settlement.d.ts +36 -0
  117. package/dest/test/epoch_settlement.d.ts.map +1 -0
  118. package/dest/test/epoch_settlement.js +52 -0
  119. package/dest/test/index.d.ts +2 -0
  120. package/dest/test/index.d.ts.map +1 -0
  121. package/dest/test/index.js +1 -0
  122. package/dest/test/mock_proof_store.d.ts +9 -0
  123. package/dest/test/mock_proof_store.d.ts.map +1 -0
  124. package/dest/test/mock_proof_store.js +10 -0
  125. package/dest/test/mock_prover.d.ts +38 -0
  126. package/dest/test/mock_prover.d.ts.map +1 -0
  127. package/dest/test/mock_prover.js +91 -0
  128. package/package.json +113 -0
  129. package/src/config.ts +87 -0
  130. package/src/index.ts +4 -0
  131. package/src/light/index.ts +1 -0
  132. package/src/light/lightweight_checkpoint_builder.ts +342 -0
  133. package/src/mocks/fixtures.ts +120 -0
  134. package/src/mocks/test_context.ts +477 -0
  135. package/src/orchestrator/block-building-helpers.ts +486 -0
  136. package/src/orchestrator/block-proving-state.ts +457 -0
  137. package/src/orchestrator/checkpoint-proving-state.ts +247 -0
  138. package/src/orchestrator/checkpoint-sub-tree-orchestrator.ts +1010 -0
  139. package/src/orchestrator/chonk-cache.ts +99 -0
  140. package/src/orchestrator/index.ts +12 -0
  141. package/src/orchestrator/orchestrator_metrics.ts +18 -0
  142. package/src/orchestrator/proving-scheduler.ts +160 -0
  143. package/src/orchestrator/top-tree-orchestrator.ts +394 -0
  144. package/src/orchestrator/top-tree-proving-state.ts +219 -0
  145. package/src/orchestrator/tx-proving-state.ts +121 -0
  146. package/src/prover-client/factory.ts +18 -0
  147. package/src/prover-client/index.ts +2 -0
  148. package/src/prover-client/prover-client.ts +286 -0
  149. package/src/proving_broker/broker_prover_facade.ts +626 -0
  150. package/src/proving_broker/config.ts +178 -0
  151. package/src/proving_broker/factory.ts +19 -0
  152. package/src/proving_broker/fixtures.ts +20 -0
  153. package/src/proving_broker/index.ts +10 -0
  154. package/src/proving_broker/proof_store/factory.ts +20 -0
  155. package/src/proving_broker/proof_store/file_store_proof_store.ts +78 -0
  156. package/src/proving_broker/proof_store/index.ts +4 -0
  157. package/src/proving_broker/proof_store/inline_proof_store.ts +63 -0
  158. package/src/proving_broker/proof_store/proof_store.ts +54 -0
  159. package/src/proving_broker/proving_agent.ts +210 -0
  160. package/src/proving_broker/proving_broker.ts +888 -0
  161. package/src/proving_broker/proving_broker_database/memory.ts +78 -0
  162. package/src/proving_broker/proving_broker_database/persisted.ts +296 -0
  163. package/src/proving_broker/proving_broker_database.ts +75 -0
  164. package/src/proving_broker/proving_broker_instrumentation.ts +133 -0
  165. package/src/proving_broker/proving_job_controller.ts +199 -0
  166. package/src/proving_broker/rpc.ts +131 -0
  167. package/src/test/epoch_settlement.ts +82 -0
  168. package/src/test/index.ts +1 -0
  169. package/src/test/mock_proof_store.ts +14 -0
  170. package/src/test/mock_prover.ts +304 -0
@@ -0,0 +1,274 @@
1
+ import { BatchedBlobAccumulator, computeBlobsHashFromBlobs, encodeBlockBlobData, getBlobCommitmentsFromBlobs, getBlobsPerL1Block } from '@aztec-labs/blob-lib';
2
+ import { ARCHIVE_HEIGHT, CHONK_PROOF_LENGTH, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NOTE_HASH_SUBTREE_HEIGHT, NOTE_HASH_SUBTREE_ROOT_SIBLING_PATH_LENGTH, NULLIFIER_SUBTREE_HEIGHT, NULLIFIER_SUBTREE_ROOT_SIBLING_PATH_LENGTH, NULLIFIER_TREE_HEIGHT, PUBLIC_DATA_TREE_HEIGHT } from '@aztec-labs/constants';
3
+ import { makeTuple } from '@aztec-labs/foundation/array';
4
+ import { BlockNumber } from '@aztec-labs/foundation/branded-types';
5
+ import { padArrayEnd } from '@aztec-labs/foundation/collection';
6
+ import { Fr } from '@aztec-labs/foundation/curves/bn254';
7
+ import { assertLength, toFriendlyJSON } from '@aztec-labs/foundation/serialize';
8
+ import { MembershipWitness } from '@aztec-labs/foundation/trees';
9
+ import { getVkData } from '@aztec-labs/noir-protocol-circuits-types/server/vks';
10
+ import { getVKIndex, getVKSiblingPath } from '@aztec-labs/noir-protocol-circuits-types/vk-tree';
11
+ import { computeFeePayerBalanceLeafSlot } from '@aztec-labs/protocol-contracts/fee-juice';
12
+ import { Body } from '@aztec-labs/stdlib/block';
13
+ import { ContractClassLogFields } from '@aztec-labs/stdlib/logs';
14
+ import { Proof, ProofData, RecursiveProof } from '@aztec-labs/stdlib/proofs';
15
+ import { BlockConstantData, PrivateBaseRollupHints, PublicBaseRollupHints, PublicChonkVerifierPrivateInputs, TreeSnapshotDiffHints } from '@aztec-labs/stdlib/rollup';
16
+ import { AppendOnlyTreeSnapshot, MerkleTreeId, NullifierLeafPreimage, getTreeHeight } from '@aztec-labs/stdlib/trees';
17
+ import { BlockHeader, GlobalVariables, PartialStateReference } from '@aztec-labs/stdlib/tx';
18
+ import { VkData } from '@aztec-labs/stdlib/vks';
19
+ import { Attributes, runInSpan } from '@aztec-labs/telemetry-client';
20
+ // Builds the hints for base rollup. Updating the contract, nullifier, and data trees in the process.
21
+ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan('BlockBuilderHelpers', 'buildBaseRollupHints', async (span, tx, lastArchive, newL1ToL2MessageTreeSnapshot, startSpongeBlob, proverId, db)=>{
22
+ span.setAttribute(Attributes.TX_HASH, tx.hash.toString());
23
+ // Get trees info before any changes hit
24
+ const start = new PartialStateReference(await getTreeSnapshot(MerkleTreeId.NOTE_HASH_TREE, db), await getTreeSnapshot(MerkleTreeId.NULLIFIER_TREE, db), await getTreeSnapshot(MerkleTreeId.PUBLIC_DATA_TREE, db));
25
+ // Get the note hash subtree root sibling path for insertion.
26
+ const noteHashSubtreeRootSiblingPath = assertLength(await getSubtreeSiblingPath(MerkleTreeId.NOTE_HASH_TREE, NOTE_HASH_SUBTREE_HEIGHT, db), NOTE_HASH_SUBTREE_ROOT_SIBLING_PATH_LENGTH);
27
+ const { nullifierInsertionResult, publicDataInsertionResult } = await insertSideEffects(tx, db);
28
+ const blockHash = await tx.data.constants.anchorBlockHeader.hash();
29
+ const anchorBlockArchiveSiblingPath = (await getMembershipWitnessFor(blockHash.toFr(), MerkleTreeId.ARCHIVE, ARCHIVE_HEIGHT, db)).siblingPath;
30
+ const contractClassLogsFields = makeTuple(MAX_CONTRACT_CLASS_LOGS_PER_TX, (i)=>tx.txEffect.contractClassLogs[i]?.fields || ContractClassLogFields.empty());
31
+ if (tx.avmProvingRequest) {
32
+ return PublicBaseRollupHints.from({
33
+ startSpongeBlob,
34
+ lastArchive,
35
+ anchorBlockArchiveSiblingPath,
36
+ contractClassLogsFields
37
+ });
38
+ } else {
39
+ if (tx.txEffect.publicDataWrites.length > 1) {
40
+ throw new Error(`More than one public data write in a private only tx`);
41
+ }
42
+ // Get hints for reading fee payer's balance in the public data tree.
43
+ const feePayerBalanceLeafWitnessData = publicDataInsertionResult.lowLeavesWitnessData[0];
44
+ const feePayerBalanceMembershipWitness = MembershipWitness.fromBufferArray(feePayerBalanceLeafWitnessData.index, assertLength(feePayerBalanceLeafWitnessData.siblingPath.toBufferArray(), PUBLIC_DATA_TREE_HEIGHT));
45
+ const feePayerBalanceLeafPreimage = feePayerBalanceLeafWitnessData.leafPreimage;
46
+ const leafSlot = await computeFeePayerBalanceLeafSlot(tx.data.feePayer);
47
+ if (!leafSlot.equals(feePayerBalanceLeafPreimage.leaf.slot)) {
48
+ throw new Error(`Cannot find the public data tree leaf for the fee payer's balance`);
49
+ }
50
+ // Get hints for inserting the nullifiers.
51
+ const nullifierLowLeavesWitnessData = nullifierInsertionResult.lowLeavesWitnessData;
52
+ const nullifierPredecessorPreimages = padArrayEnd(nullifierLowLeavesWitnessData.map((l)=>l.leafPreimage), NullifierLeafPreimage.empty(), MAX_NULLIFIERS_PER_TX);
53
+ const nullifierPredecessorMembershipWitnesses = padArrayEnd(nullifierLowLeavesWitnessData.map((l)=>MembershipWitness.fromBufferArray(l.index, assertLength(l.siblingPath.toBufferArray(), NULLIFIER_TREE_HEIGHT))), makeEmptyMembershipWitness(NULLIFIER_TREE_HEIGHT), MAX_NULLIFIERS_PER_TX);
54
+ const sortedNullifiers = assertLength(nullifierInsertionResult.sortedNewLeaves.map((n)=>Fr.fromBuffer(n)), MAX_NULLIFIERS_PER_TX);
55
+ const sortedNullifierIndexes = assertLength(nullifierInsertionResult.sortedNewLeavesIndexes, MAX_NULLIFIERS_PER_TX);
56
+ const nullifierSubtreeRootSiblingPath = assertLength(nullifierInsertionResult.newSubtreeSiblingPath.toFields(), NULLIFIER_SUBTREE_ROOT_SIBLING_PATH_LENGTH);
57
+ const treeSnapshotDiffHints = TreeSnapshotDiffHints.from({
58
+ noteHashSubtreeRootSiblingPath,
59
+ nullifierPredecessorPreimages,
60
+ nullifierPredecessorMembershipWitnesses,
61
+ sortedNullifiers,
62
+ sortedNullifierIndexes,
63
+ nullifierSubtreeRootSiblingPath,
64
+ feePayerBalanceMembershipWitness
65
+ });
66
+ const constants = BlockConstantData.from({
67
+ lastArchive,
68
+ l1ToL2TreeSnapshot: newL1ToL2MessageTreeSnapshot,
69
+ vkTreeRoot: tx.data.constants.vkTreeRoot,
70
+ protocolContractsHash: tx.data.constants.protocolContractsHash,
71
+ globalVariables: tx.globalVariables,
72
+ proverId
73
+ });
74
+ return PrivateBaseRollupHints.from({
75
+ start,
76
+ startSpongeBlob,
77
+ treeSnapshotDiffHints,
78
+ feePayerBalanceLeafPreimage,
79
+ anchorBlockArchiveSiblingPath,
80
+ contractClassLogsFields,
81
+ constants
82
+ });
83
+ }
84
+ });
85
+ export const insertSideEffects = runInSpan('BlockBuilderHelpers', 'buildBaseRollupHints', async (span, tx, db)=>{
86
+ span.setAttribute(Attributes.TX_HASH, tx.hash.toString());
87
+ // Insert the note hashes. Padded with zeros to the max number of note hashes per tx.
88
+ const noteHashes = padArrayEnd(tx.txEffect.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX);
89
+ await db.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, noteHashes);
90
+ // Insert the nullifiers. Padded with zeros to the max number of nullifiers per tx.
91
+ // Capturing the low nullifier info for each individual operation.
92
+ const nullifierInsertionResult = await db.batchInsert(MerkleTreeId.NULLIFIER_TREE, padArrayEnd(tx.txEffect.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX).map((n)=>n.toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
93
+ if (nullifierInsertionResult.lowLeavesWitnessData === undefined) {
94
+ throw new Error(`Failed to batch insert nullifiers.`);
95
+ }
96
+ if (tx.txEffect.publicDataWrites.some((write)=>write.isEmpty())) {
97
+ throw new Error(`Empty public data write in tx: ${toFriendlyJSON(tx)}.`);
98
+ }
99
+ // Insert the public data writes sequentially. No need to pad them to the max array size.
100
+ // Capturing the low leaf info for each individual operation.
101
+ const publicDataInsertionResult = await db.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, tx.txEffect.publicDataWrites.map((write)=>write.toBuffer()));
102
+ return {
103
+ nullifierInsertionResult,
104
+ publicDataInsertionResult
105
+ };
106
+ });
107
+ export function getChonkProofFromTx(tx) {
108
+ const publicInputs = tx.data.publicInputs().toFields();
109
+ const binaryProof = new Proof(Buffer.concat(tx.chonkProof.attachPublicInputs(publicInputs).fieldsWithPublicInputs.map((field)=>field.toBuffer())), publicInputs.length);
110
+ return new RecursiveProof(tx.chonkProof.fields, binaryProof, true, CHONK_PROOF_LENGTH);
111
+ }
112
+ export function getPublicChonkVerifierPrivateInputsFromTx(tx, proverId) {
113
+ const proofData = new ProofData(tx.data.toPrivateToPublicKernelCircuitPublicInputs(), getChonkProofFromTx(tx), getVkData('HidingKernelToPublic'));
114
+ return new PublicChonkVerifierPrivateInputs(proofData, proverId);
115
+ }
116
+ // Build "hints" as the private inputs for the checkpoint root rollup circuit.
117
+ // The `blobCommitments` will be accumulated and checked in the root rollup against the `finalBlobChallenges`.
118
+ // The `blobsHash` will be validated on L1 against the submitted blob data.
119
+ export const buildBlobHints = async (blobFields)=>{
120
+ const blobs = await getBlobsPerL1Block(blobFields);
121
+ const blobCommitments = getBlobCommitmentsFromBlobs(blobs);
122
+ const blobsHash = computeBlobsHashFromBlobs(blobs);
123
+ return {
124
+ blobCommitments,
125
+ blobs,
126
+ blobsHash
127
+ };
128
+ };
129
+ export const buildFinalBlobChallenges = async (blobFieldsPerCheckpoint)=>{
130
+ return await BatchedBlobAccumulator.precomputeBatchedBlobChallenges(blobFieldsPerCheckpoint);
131
+ };
132
+ export const accumulateBlobs = runInSpan('BlockBuilderHelpers', 'accumulateBlobs', async (_span, blobFields, startBlobAccumulator)=>{
133
+ const endBlobAccumulator = await startBlobAccumulator.accumulateFields(blobFields);
134
+ return endBlobAccumulator;
135
+ });
136
+ export const buildHeaderFromCircuitOutputs = runInSpan('BlockBuilderHelpers', 'buildHeaderFromCircuitOutputs', async (_span, blockRootRollupOutput)=>{
137
+ const constants = blockRootRollupOutput.constants;
138
+ const globalVariables = GlobalVariables.from({
139
+ chainId: constants.chainId,
140
+ version: constants.version,
141
+ blockNumber: BlockNumber(blockRootRollupOutput.previousArchive.nextAvailableLeafIndex),
142
+ timestamp: blockRootRollupOutput.timestamp,
143
+ slotNumber: constants.slotNumber,
144
+ coinbase: constants.coinbase,
145
+ feeRecipient: constants.feeRecipient,
146
+ gasFees: constants.gasFees
147
+ });
148
+ const spongeBlobHash = await blockRootRollupOutput.endSpongeBlob.clone().squeeze();
149
+ return new BlockHeader(blockRootRollupOutput.previousArchive, blockRootRollupOutput.endState, spongeBlobHash, globalVariables, blockRootRollupOutput.accumulatedFees, blockRootRollupOutput.accumulatedManaUsed);
150
+ });
151
+ export const buildHeaderAndBodyFromTxs = runInSpan('BlockBuilderHelpers', 'buildHeaderAndBodyFromTxs', async (span, txs, lastArchive, endState, globalVariables, startSpongeBlob)=>{
152
+ span.setAttribute(Attributes.BLOCK_NUMBER, globalVariables.blockNumber);
153
+ const txEffects = txs.map((tx)=>tx.txEffect);
154
+ const body = new Body(txEffects);
155
+ const totalFees = txEffects.reduce((acc, tx)=>acc.add(tx.transactionFee), Fr.ZERO);
156
+ const totalManaUsed = txs.reduce((acc, tx)=>acc.add(new Fr(tx.gasUsed.billedGas.l2Gas)), Fr.ZERO);
157
+ const { l1ToL2MessageTree, partial } = endState;
158
+ const blockBlobFields = encodeBlockBlobData({
159
+ blockEndMarker: {
160
+ timestamp: globalVariables.timestamp,
161
+ blockNumber: globalVariables.blockNumber,
162
+ numTxs: txs.length
163
+ },
164
+ blockEndStateField: {
165
+ l1ToL2MessageNextAvailableLeafIndex: l1ToL2MessageTree.nextAvailableLeafIndex,
166
+ noteHashNextAvailableLeafIndex: partial.noteHashTree.nextAvailableLeafIndex,
167
+ nullifierNextAvailableLeafIndex: partial.nullifierTree.nextAvailableLeafIndex,
168
+ publicDataNextAvailableLeafIndex: partial.publicDataTree.nextAvailableLeafIndex,
169
+ totalManaUsed: totalManaUsed.toBigInt()
170
+ },
171
+ lastArchiveRoot: lastArchive.root,
172
+ noteHashRoot: partial.noteHashTree.root,
173
+ nullifierRoot: partial.nullifierTree.root,
174
+ publicDataRoot: partial.publicDataTree.root,
175
+ // Every block carries its own post-bundle l1-to-l2 message tree root.
176
+ l1ToL2MessageRoot: l1ToL2MessageTree.root,
177
+ txs: body.toTxBlobData()
178
+ });
179
+ const endSpongeBlob = startSpongeBlob.clone();
180
+ await endSpongeBlob.absorb(blockBlobFields);
181
+ const spongeBlobHash = await endSpongeBlob.squeeze();
182
+ const header = BlockHeader.from({
183
+ lastArchive,
184
+ state: endState,
185
+ spongeBlobHash,
186
+ globalVariables,
187
+ totalFees,
188
+ totalManaUsed
189
+ });
190
+ return {
191
+ header,
192
+ body,
193
+ blockBlobFields
194
+ };
195
+ });
196
+ export async function getLastSiblingPath(treeId, db) {
197
+ const { size } = await db.getTreeInfo(treeId);
198
+ const path = await db.getSiblingPath(treeId, size - 1n);
199
+ return padArrayEnd(path.toFields(), Fr.ZERO, getTreeHeight(treeId));
200
+ }
201
+ export async function getRootTreeSiblingPath(treeId, db) {
202
+ const { size } = await db.getTreeInfo(treeId);
203
+ const path = await db.getSiblingPath(treeId, size);
204
+ return padArrayEnd(path.toFields(), Fr.ZERO, getTreeHeight(treeId));
205
+ }
206
+ export async function getTreeSnapshot(id, db) {
207
+ const treeInfo = await db.getTreeInfo(id);
208
+ return new AppendOnlyTreeSnapshot(Fr.fromBuffer(treeInfo.root), Number(treeInfo.size));
209
+ }
210
+ export function makeEmptyMembershipWitness(height) {
211
+ return new MembershipWitness(height, 0n, makeTuple(height, ()=>Fr.ZERO));
212
+ }
213
+ export async function getSubtreeSiblingPath(treeId, subtreeHeight, db) {
214
+ const nextAvailableLeafIndex = await db.getTreeInfo(treeId).then((t)=>t.size);
215
+ const fullSiblingPath = await db.getSiblingPath(treeId, nextAvailableLeafIndex);
216
+ // Drop the first subtreeHeight items since we only care about the path to the subtree root
217
+ return fullSiblingPath.getSubtreeSiblingPath(subtreeHeight).toFields();
218
+ }
219
+ /**
220
+ * Returns the full-height frontier (left-sibling path) at a tree's next-available leaf index — the hint the append
221
+ * circuits re-hash against the snapshot root when appending leaves at a compact (unaligned) index.
222
+ */ export async function getFrontierSiblingPath(treeId, db) {
223
+ const nextAvailableLeafIndex = await db.getTreeInfo(treeId).then((t)=>t.size);
224
+ return (await db.getSiblingPath(treeId, nextAvailableLeafIndex)).toFields();
225
+ }
226
+ // Scan a tree searching for a specific value and return a membership witness proof for it
227
+ export async function getMembershipWitnessFor(value, treeId, height, db) {
228
+ // If this is an empty tx, then just return zeroes
229
+ if (value.isZero()) {
230
+ return makeEmptyMembershipWitness(height);
231
+ }
232
+ const index = (await db.findLeafIndices(treeId, [
233
+ value.toBuffer()
234
+ ]))[0];
235
+ if (index === undefined) {
236
+ throw new Error(`Leaf with value ${value} not found in tree ${MerkleTreeId[treeId]}`);
237
+ }
238
+ const path = await db.getSiblingPath(treeId, index);
239
+ return new MembershipWitness(height, index, assertLength(path.toFields(), height));
240
+ }
241
+ export function validatePartialState(partialState, treeSnapshots) {
242
+ validateSimulatedTree(treeSnapshots.get(MerkleTreeId.NOTE_HASH_TREE), partialState.noteHashTree, 'NoteHashTree');
243
+ validateSimulatedTree(treeSnapshots.get(MerkleTreeId.NULLIFIER_TREE), partialState.nullifierTree, 'NullifierTree');
244
+ validateSimulatedTree(treeSnapshots.get(MerkleTreeId.PUBLIC_DATA_TREE), partialState.publicDataTree, 'PublicDataTree');
245
+ }
246
+ // Helper for comparing two trees snapshots
247
+ function validateSimulatedTree(localTree, simulatedTree, name, label) {
248
+ if (!simulatedTree.root.toBuffer().equals(localTree.root.toBuffer())) {
249
+ throw new Error(`${label ?? name} tree root mismatch (local ${localTree.root}, simulated ${simulatedTree.root})`);
250
+ }
251
+ if (simulatedTree.nextAvailableLeafIndex !== localTree.nextAvailableLeafIndex) {
252
+ throw new Error(`${label ?? name} tree next available leaf index mismatch (local ${localTree.nextAvailableLeafIndex}, simulated ${simulatedTree.nextAvailableLeafIndex})`);
253
+ }
254
+ }
255
+ export function validateTx(tx) {
256
+ const txHeader = tx.data.constants.anchorBlockHeader;
257
+ if (txHeader.state.l1ToL2MessageTree.isEmpty()) {
258
+ throw new Error(`Empty L1 to L2 messages tree in tx: ${toFriendlyJSON(tx)}`);
259
+ }
260
+ if (txHeader.state.partial.noteHashTree.isEmpty()) {
261
+ throw new Error(`Empty note hash tree in tx: ${toFriendlyJSON(tx)}`);
262
+ }
263
+ if (txHeader.state.partial.nullifierTree.isEmpty()) {
264
+ throw new Error(`Empty nullifier tree in tx: ${toFriendlyJSON(tx)}`);
265
+ }
266
+ if (txHeader.state.partial.publicDataTree.isEmpty()) {
267
+ throw new Error(`Empty public data tree in tx: ${toFriendlyJSON(tx)}`);
268
+ }
269
+ }
270
+ export function toProofData({ inputs, proof, verificationKey }, vkIndex) {
271
+ const leafIndex = vkIndex || getVKIndex(verificationKey.keyAsFields);
272
+ const vkData = new VkData(verificationKey, leafIndex, getVKSiblingPath(leafIndex));
273
+ return new ProofData(inputs, proof, vkData);
274
+ }
@@ -0,0 +1,107 @@
1
+ import { type BlockBlobData, type BlockEndBlobData, type SpongeBlob } from '@aztec-labs/blob-lib';
2
+ import type { ARCHIVE_HEIGHT, L1_TO_L2_MSG_TREE_HEIGHT, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec-labs/constants';
3
+ import { BlockNumber } from '@aztec-labs/foundation/branded-types';
4
+ import { Fr } from '@aztec-labs/foundation/curves/bn254';
5
+ import type { Tuple } from '@aztec-labs/foundation/serialize';
6
+ import { type TreeNodeLocation } from '@aztec-labs/foundation/trees';
7
+ import type { PublicInputsAndRecursiveProof } from '@aztec-labs/stdlib/interfaces/server';
8
+ import { type L1ToL2MessageSponge } from '@aztec-labs/stdlib/messaging';
9
+ import { BlockRollupPublicInputs, BlockRootNoTxsRollupPrivateInputs, BlockRootRollupPrivateInputs, BlockRootSingleTxRollupPrivateInputs, CheckpointConstantData, TxMergeRollupPrivateInputs, type TxRollupPublicInputs } from '@aztec-labs/stdlib/rollup';
10
+ import { AppendOnlyTreeSnapshot } from '@aztec-labs/stdlib/trees';
11
+ import { BlockHeader, StateReference } from '@aztec-labs/stdlib/tx';
12
+ import type { UInt64 } from '@aztec-labs/stdlib/types';
13
+ import type { CheckpointProvingState } from './checkpoint-proving-state.js';
14
+ import type { TxProvingState } from './tx-proving-state.js';
15
+ export type ProofState<T, PROOF_LENGTH extends number> = {
16
+ provingOutput?: PublicInputsAndRecursiveProof<T, PROOF_LENGTH>;
17
+ isProving?: boolean;
18
+ };
19
+ /**
20
+ * The block-root rollup flavor a block proves with and its private inputs, discriminated by circuit name so callers
21
+ * can dispatch to the matching prover entrypoint with the correctly-typed inputs.
22
+ */
23
+ export type BlockRootRollupTypeAndInputs = {
24
+ rollupType: 'rollup-block-root-no-txs';
25
+ inputs: BlockRootNoTxsRollupPrivateInputs;
26
+ } | {
27
+ rollupType: 'rollup-block-root-single-tx';
28
+ inputs: BlockRootSingleTxRollupPrivateInputs;
29
+ } | {
30
+ rollupType: 'rollup-block-root';
31
+ inputs: BlockRootRollupPrivateInputs;
32
+ };
33
+ /**
34
+ * The current state of the proving schedule for a given block. Managed by ProvingState.
35
+ * Contains the raw inputs and intermediate state to generate every constituent proof in the tree.
36
+ */
37
+ export declare class BlockProvingState {
38
+ #private;
39
+ readonly index: number;
40
+ readonly blockNumber: BlockNumber;
41
+ readonly totalNumTxs: number;
42
+ private readonly constants;
43
+ private readonly timestamp;
44
+ readonly lastArchiveTreeSnapshot: AppendOnlyTreeSnapshot;
45
+ private readonly lastArchiveSiblingPath;
46
+ private readonly previousState;
47
+ private readonly startL1ToL2MessageTreeSnapshot;
48
+ readonly newL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot;
49
+ private readonly l1ToL2MessageFrontierHint;
50
+ private readonly l1ToL2Messages;
51
+ private readonly startMsgSponge;
52
+ private readonly endMsgSponge;
53
+ private readonly startSpongeBlob;
54
+ parentCheckpoint: CheckpointProvingState;
55
+ private baseOrMergeProofs;
56
+ private blockRootProof;
57
+ private builtBlockHeader;
58
+ private builtArchive;
59
+ private endState;
60
+ private endSpongeBlob;
61
+ private txs;
62
+ private error;
63
+ constructor(index: number, blockNumber: BlockNumber, totalNumTxs: number, constants: CheckpointConstantData, timestamp: UInt64, lastArchiveTreeSnapshot: AppendOnlyTreeSnapshot, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, previousState: StateReference, startL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, newL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, l1ToL2MessageFrontierHint: Tuple<Fr, typeof L1_TO_L2_MSG_TREE_HEIGHT>, l1ToL2Messages: Fr[], startMsgSponge: L1ToL2MessageSponge, endMsgSponge: L1ToL2MessageSponge, startSpongeBlob: SpongeBlob, parentCheckpoint: CheckpointProvingState);
64
+ /** The message sponge after absorbing this block's slice; inherited by the next block as its start sponge. */
65
+ getEndMsgSponge(): L1ToL2MessageSponge;
66
+ get epochNumber(): number;
67
+ addNewTx(tx: TxProvingState): number;
68
+ isAcceptingTxs(): boolean;
69
+ getProcessedTxs(): import("@aztec-labs/stdlib/tx").ProcessedTx[];
70
+ tryStartProvingBase(txIndex: number): boolean;
71
+ setBaseRollupProof(txIndex: number, provingOutput: PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): TreeNodeLocation;
72
+ tryStartProvingMerge(location: TreeNodeLocation): boolean;
73
+ setMergeRollupProof(location: TreeNodeLocation, provingOutput: PublicInputsAndRecursiveProof<TxRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): void;
74
+ tryStartProvingBlockRoot(): boolean;
75
+ setBlockRootRollupProof(provingOutput: PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): TreeNodeLocation;
76
+ getBlockRootRollupOutput(): BlockRollupPublicInputs | undefined;
77
+ buildBlockHeader(): Promise<BlockHeader>;
78
+ getBuiltBlockHeader(): BlockHeader | undefined;
79
+ setBuiltArchive(archive: AppendOnlyTreeSnapshot): void;
80
+ getBuiltArchive(): AppendOnlyTreeSnapshot | undefined;
81
+ getStartSpongeBlob(): SpongeBlob;
82
+ setEndSpongeBlob(endSpongeBlob: SpongeBlob): void;
83
+ getEndSpongeBlob(): SpongeBlob | undefined;
84
+ setEndState(endState: StateReference): void;
85
+ hasEndState(): boolean;
86
+ getBlockEndBlobFields(): Fr[];
87
+ getBlockEndBlobData(): BlockEndBlobData;
88
+ getBlockBlobData(): BlockBlobData;
89
+ getTxEffects(): import("@aztec-labs/stdlib/tx").TxEffect[];
90
+ getParentLocation(location: TreeNodeLocation): TreeNodeLocation;
91
+ getMergeRollupInputs(mergeLocation: TreeNodeLocation): TxMergeRollupPrivateInputs;
92
+ /**
93
+ * The block root variant is selected by transaction count alone. Whether this is the checkpoint's first block is
94
+ * expressed through the start sponge values it feeds the circuit, which the checkpoint root pins to their initial
95
+ * values for the leftmost block and the block merge pins to the previous block's end values otherwise.
96
+ */
97
+ getBlockRootRollupTypeAndInputs(): BlockRootRollupTypeAndInputs;
98
+ getTxProvingState(txIndex: number): TxProvingState;
99
+ buildHeaderFromProvingOutputs(): Promise<BlockHeader>;
100
+ isReadyForMergeRollup(location: TreeNodeLocation): boolean;
101
+ isReadyForBlockRootRollup(): boolean;
102
+ isComplete(): boolean;
103
+ verifyState(): boolean;
104
+ getError(): string | undefined;
105
+ reject(reason: string): void;
106
+ }
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stcHJvdmluZy1zdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yY2hlc3RyYXRvci9ibG9jay1wcm92aW5nLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxLQUFLLGFBQWEsRUFDbEIsS0FBSyxnQkFBZ0IsRUFDckIsS0FBSyxVQUFVLEVBRWhCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxLQUFLLEVBQ1YsY0FBYyxFQUNkLHdCQUF3QixFQUN4Qix5Q0FBeUMsRUFDMUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbkUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUF1QixNQUFNLDhCQUE4QixDQUFDO0FBQzFGLE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDMUYsT0FBTyxFQUF1QixLQUFLLG1CQUFtQixFQUEyQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUNBQWlDLEVBQ2pDLDRCQUE0QixFQUM1QixvQ0FBb0MsRUFDcEMsc0JBQXNCLEVBQ3RCLDBCQUEwQixFQUMxQixLQUFLLG9CQUFvQixFQUMxQixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQW1CLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JGLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3ZELE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1B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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-proving-state.ts"],"names":[],"mappings":"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"}