@aztec/prover-client 0.0.1-commit.b655e406 → 0.0.1-commit.fce3e4f

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 (104) hide show
  1. package/dest/block-factory/index.d.ts +1 -1
  2. package/dest/block-factory/light.d.ts +7 -7
  3. package/dest/block-factory/light.d.ts.map +1 -1
  4. package/dest/block-factory/light.js +36 -22
  5. package/dest/config.d.ts +1 -1
  6. package/dest/index.d.ts +1 -1
  7. package/dest/light/lightweight_checkpoint_builder.d.ts +28 -0
  8. package/dest/light/lightweight_checkpoint_builder.d.ts.map +1 -0
  9. package/dest/light/lightweight_checkpoint_builder.js +107 -0
  10. package/dest/mocks/fixtures.d.ts +1 -4
  11. package/dest/mocks/fixtures.d.ts.map +1 -1
  12. package/dest/mocks/fixtures.js +4 -14
  13. package/dest/mocks/test_context.d.ts +26 -45
  14. package/dest/mocks/test_context.d.ts.map +1 -1
  15. package/dest/mocks/test_context.js +98 -112
  16. package/dest/orchestrator/block-building-helpers.d.ts +15 -17
  17. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  18. package/dest/orchestrator/block-building-helpers.js +83 -109
  19. package/dest/orchestrator/block-proving-state.d.ts +13 -8
  20. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  21. package/dest/orchestrator/block-proving-state.js +81 -20
  22. package/dest/orchestrator/checkpoint-proving-state.d.ts +4 -5
  23. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -1
  24. package/dest/orchestrator/checkpoint-proving-state.js +9 -12
  25. package/dest/orchestrator/epoch-proving-state.d.ts +6 -5
  26. package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
  27. package/dest/orchestrator/epoch-proving-state.js +2 -2
  28. package/dest/orchestrator/index.d.ts +1 -1
  29. package/dest/orchestrator/orchestrator.d.ts +5 -5
  30. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  31. package/dest/orchestrator/orchestrator.js +19 -27
  32. package/dest/orchestrator/orchestrator_metrics.d.ts +1 -1
  33. package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
  34. package/dest/orchestrator/tx-proving-state.d.ts +1 -1
  35. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  36. package/dest/orchestrator/tx-proving-state.js +2 -11
  37. package/dest/prover-client/factory.d.ts +1 -1
  38. package/dest/prover-client/index.d.ts +1 -1
  39. package/dest/prover-client/prover-client.d.ts +1 -1
  40. package/dest/prover-client/prover-client.d.ts.map +1 -1
  41. package/dest/prover-client/server-epoch-prover.d.ts +5 -4
  42. package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
  43. package/dest/prover-client/server-epoch-prover.js +2 -2
  44. package/dest/proving_broker/broker_prover_facade.d.ts +20 -20
  45. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  46. package/dest/proving_broker/broker_prover_facade.js +3 -2
  47. package/dest/proving_broker/config.d.ts +11 -7
  48. package/dest/proving_broker/config.d.ts.map +1 -1
  49. package/dest/proving_broker/config.js +7 -1
  50. package/dest/proving_broker/factory.d.ts +1 -1
  51. package/dest/proving_broker/fixtures.d.ts +3 -2
  52. package/dest/proving_broker/fixtures.d.ts.map +1 -1
  53. package/dest/proving_broker/fixtures.js +2 -1
  54. package/dest/proving_broker/index.d.ts +1 -1
  55. package/dest/proving_broker/proof_store/factory.d.ts +2 -2
  56. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts +1 -1
  57. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -1
  58. package/dest/proving_broker/proof_store/index.d.ts +1 -1
  59. package/dest/proving_broker/proof_store/inline_proof_store.d.ts +1 -1
  60. package/dest/proving_broker/proof_store/inline_proof_store.d.ts.map +1 -1
  61. package/dest/proving_broker/proof_store/proof_store.d.ts +1 -1
  62. package/dest/proving_broker/proving_agent.d.ts +1 -1
  63. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  64. package/dest/proving_broker/proving_agent_instrumentation.d.ts +1 -1
  65. package/dest/proving_broker/proving_agent_instrumentation.d.ts.map +1 -1
  66. package/dest/proving_broker/proving_broker.d.ts +2 -2
  67. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  68. package/dest/proving_broker/proving_broker.js +2 -1
  69. package/dest/proving_broker/proving_broker_database/memory.d.ts +3 -2
  70. package/dest/proving_broker/proving_broker_database/memory.d.ts.map +1 -1
  71. package/dest/proving_broker/proving_broker_database/persisted.d.ts +3 -2
  72. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
  73. package/dest/proving_broker/proving_broker_database/persisted.js +3 -2
  74. package/dest/proving_broker/proving_broker_database.d.ts +3 -2
  75. package/dest/proving_broker/proving_broker_database.d.ts.map +1 -1
  76. package/dest/proving_broker/proving_broker_instrumentation.d.ts +1 -1
  77. package/dest/proving_broker/proving_broker_instrumentation.d.ts.map +1 -1
  78. package/dest/proving_broker/proving_job_controller.d.ts +3 -2
  79. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  80. package/dest/proving_broker/rpc.d.ts +4 -4
  81. package/dest/test/mock_proof_store.d.ts +3 -3
  82. package/dest/test/mock_proof_store.d.ts.map +1 -1
  83. package/dest/test/mock_prover.d.ts +3 -4
  84. package/dest/test/mock_prover.d.ts.map +1 -1
  85. package/package.json +18 -17
  86. package/src/block-factory/light.ts +39 -42
  87. package/src/light/lightweight_checkpoint_builder.ts +142 -0
  88. package/src/mocks/fixtures.ts +4 -27
  89. package/src/mocks/test_context.ts +140 -174
  90. package/src/orchestrator/block-building-helpers.ts +122 -203
  91. package/src/orchestrator/block-proving-state.ts +100 -23
  92. package/src/orchestrator/checkpoint-proving-state.ts +15 -13
  93. package/src/orchestrator/epoch-proving-state.ts +2 -3
  94. package/src/orchestrator/orchestrator.ts +23 -31
  95. package/src/orchestrator/tx-proving-state.ts +3 -16
  96. package/src/prover-client/server-epoch-prover.ts +3 -4
  97. package/src/proving_broker/broker_prover_facade.ts +21 -20
  98. package/src/proving_broker/config.ts +7 -0
  99. package/src/proving_broker/fixtures.ts +7 -2
  100. package/src/proving_broker/proving_broker.ts +2 -1
  101. package/src/proving_broker/proving_broker_database/memory.ts +2 -1
  102. package/src/proving_broker/proving_broker_database/persisted.ts +5 -4
  103. package/src/proving_broker/proving_broker_database.ts +2 -1
  104. package/src/proving_broker/proving_job_controller.ts +2 -1
@@ -1,21 +1,19 @@
1
- import { BatchedBlob, SpongeBlob, computeBlobsHashFromBlobs, getBlobCommitmentsFromBlobs, getBlobsPerL1Block } from '@aztec/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, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, PUBLIC_DATA_TREE_HEIGHT } from '@aztec/constants';
1
+ import { BatchedBlobAccumulator, computeBlobsHashFromBlobs, encodeBlockBlobData, getBlobCommitmentsFromBlobs, getBlobsPerL1Block } from '@aztec/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/constants';
3
3
  import { makeTuple } from '@aztec/foundation/array';
4
4
  import { padArrayEnd } from '@aztec/foundation/collection';
5
- import { sha256Trunc } from '@aztec/foundation/crypto';
6
5
  import { Fr } from '@aztec/foundation/fields';
7
6
  import { assertLength, toFriendlyJSON } from '@aztec/foundation/serialize';
8
- import { MembershipWitness, MerkleTreeCalculator, computeCompressedUnbalancedMerkleTreeRoot } from '@aztec/foundation/trees';
7
+ import { MembershipWitness } from '@aztec/foundation/trees';
9
8
  import { getVkData } from '@aztec/noir-protocol-circuits-types/server/vks';
10
9
  import { getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types/vk-tree';
11
10
  import { computeFeePayerBalanceLeafSlot } from '@aztec/protocol-contracts/fee-juice';
12
- import { Body, L2BlockHeader, getBlockBlobFields } from '@aztec/stdlib/block';
13
- import { getCheckpointBlobFields } from '@aztec/stdlib/checkpoint';
11
+ import { Body } from '@aztec/stdlib/block';
14
12
  import { ContractClassLogFields } from '@aztec/stdlib/logs';
15
13
  import { Proof, ProofData, RecursiveProof } from '@aztec/stdlib/proofs';
16
14
  import { BlockConstantData, PrivateBaseRollupHints, PublicBaseRollupHints, PublicChonkVerifierPrivateInputs, TreeSnapshotDiffHints } from '@aztec/stdlib/rollup';
17
- import { AppendOnlyTreeSnapshot, MerkleTreeId, NullifierLeafPreimage, PublicDataTreeLeaf, getTreeHeight } from '@aztec/stdlib/trees';
18
- import { BlockHeader, ContentCommitment, GlobalVariables, PartialStateReference, StateReference } from '@aztec/stdlib/tx';
15
+ import { AppendOnlyTreeSnapshot, MerkleTreeId, NullifierLeafPreimage, getTreeHeight } from '@aztec/stdlib/trees';
16
+ import { BlockHeader, GlobalVariables, PartialStateReference } from '@aztec/stdlib/tx';
19
17
  import { VkData } from '@aztec/stdlib/vks';
20
18
  import { Attributes, runInSpan } from '@aztec/telemetry-client';
21
19
  // Builds the hints for base rollup. Updating the contract, nullifier, and data trees in the process.
@@ -25,18 +23,7 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan('BlockBuilderH
25
23
  const start = new PartialStateReference(await getTreeSnapshot(MerkleTreeId.NOTE_HASH_TREE, db), await getTreeSnapshot(MerkleTreeId.NULLIFIER_TREE, db), await getTreeSnapshot(MerkleTreeId.PUBLIC_DATA_TREE, db));
26
24
  // Get the note hash subtree root sibling path for insertion.
27
25
  const noteHashSubtreeRootSiblingPath = assertLength(await getSubtreeSiblingPath(MerkleTreeId.NOTE_HASH_TREE, NOTE_HASH_SUBTREE_HEIGHT, db), NOTE_HASH_SUBTREE_ROOT_SIBLING_PATH_LENGTH);
28
- // Update the note hash trees with the new items being inserted to get the new roots
29
- // that will be used by the next iteration of the base rollup circuit, skipping the empty ones
30
- const noteHashes = padArrayEnd(tx.txEffect.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX);
31
- await db.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, noteHashes);
32
- // The read witnesses for a given TX should be generated before the writes of the same TX are applied.
33
- // All reads that refer to writes in the same tx are transient and can be simplified out.
34
- const txPublicDataUpdateRequestInfo = await processPublicDataUpdateRequests(tx, db);
35
- // Update the nullifier tree, capturing the low nullifier info for each individual operation
36
- const { lowLeavesWitnessData: nullifierWitnessLeaves, newSubtreeSiblingPath: nullifiersSubtreeRootSiblingPath, sortedNewLeaves: sortedNullifiers, sortedNewLeavesIndexes } = await db.batchInsert(MerkleTreeId.NULLIFIER_TREE, padArrayEnd(tx.txEffect.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX).map((n)=>n.toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
37
- if (nullifierWitnessLeaves === undefined) {
38
- throw new Error(`Could not craft nullifier batch insertion proofs`);
39
- }
26
+ const { nullifierInsertionResult, publicDataInsertionResult } = await insertSideEffects(tx, db);
40
27
  const blockHash = await tx.data.constants.anchorBlockHeader.hash();
41
28
  const anchorBlockArchiveSiblingPath = (await getMembershipWitnessFor(blockHash, MerkleTreeId.ARCHIVE, ARCHIVE_HEIGHT, db)).siblingPath;
42
29
  const contractClassLogsFields = makeTuple(MAX_CONTRACT_CLASS_LOGS_PER_TX, (i)=>tx.txEffect.contractClassLogs[i]?.fields || ContractClassLogFields.empty());
@@ -48,25 +35,31 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan('BlockBuilderH
48
35
  contractClassLogsFields
49
36
  });
50
37
  } else {
51
- if (txPublicDataUpdateRequestInfo.lowPublicDataWritesMembershipWitnesses.length > 1 || txPublicDataUpdateRequestInfo.lowPublicDataWritesPreimages.length > 1 || txPublicDataUpdateRequestInfo.publicDataWritesSiblingPaths.length > 1) {
38
+ if (tx.txEffect.publicDataWrites.length > 1) {
52
39
  throw new Error(`More than one public data write in a private only tx`);
53
40
  }
54
41
  // Get hints for reading fee payer's balance in the public data tree.
55
- const feePayerBalanceMembershipWitness = txPublicDataUpdateRequestInfo.lowPublicDataWritesMembershipWitnesses[0];
56
- const feePayerBalanceLeafPreimage = txPublicDataUpdateRequestInfo.lowPublicDataWritesPreimages[0];
42
+ const feePayerBalanceLeafWitnessData = publicDataInsertionResult.lowLeavesWitnessData[0];
43
+ const feePayerBalanceMembershipWitness = MembershipWitness.fromBufferArray(feePayerBalanceLeafWitnessData.index, assertLength(feePayerBalanceLeafWitnessData.siblingPath.toBufferArray(), PUBLIC_DATA_TREE_HEIGHT));
44
+ const feePayerBalanceLeafPreimage = feePayerBalanceLeafWitnessData.leafPreimage;
57
45
  const leafSlot = await computeFeePayerBalanceLeafSlot(tx.data.feePayer);
58
- if (!feePayerBalanceMembershipWitness || !leafSlot.equals(feePayerBalanceLeafPreimage?.leaf.slot)) {
46
+ if (!leafSlot.equals(feePayerBalanceLeafPreimage.leaf.slot)) {
59
47
  throw new Error(`Cannot find the public data tree leaf for the fee payer's balance`);
60
48
  }
61
- // Extract witness objects from returned data
62
- const nullifierPredecessorMembershipWitnessesWithoutPadding = nullifierWitnessLeaves.map((l)=>MembershipWitness.fromBufferArray(l.index, assertLength(l.siblingPath.toBufferArray(), NULLIFIER_TREE_HEIGHT)));
49
+ // Get hints for inserting the nullifiers.
50
+ const nullifierLowLeavesWitnessData = nullifierInsertionResult.lowLeavesWitnessData;
51
+ const nullifierPredecessorPreimages = padArrayEnd(nullifierLowLeavesWitnessData.map((l)=>l.leafPreimage), NullifierLeafPreimage.empty(), MAX_NULLIFIERS_PER_TX);
52
+ 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);
53
+ const sortedNullifiers = assertLength(nullifierInsertionResult.sortedNewLeaves.map((n)=>Fr.fromBuffer(n)), MAX_NULLIFIERS_PER_TX);
54
+ const sortedNullifierIndexes = assertLength(nullifierInsertionResult.sortedNewLeavesIndexes, MAX_NULLIFIERS_PER_TX);
55
+ const nullifierSubtreeRootSiblingPath = assertLength(nullifierInsertionResult.newSubtreeSiblingPath.toFields(), NULLIFIER_SUBTREE_ROOT_SIBLING_PATH_LENGTH);
63
56
  const treeSnapshotDiffHints = TreeSnapshotDiffHints.from({
64
57
  noteHashSubtreeRootSiblingPath,
65
- nullifierPredecessorPreimages: padArrayEnd(nullifierWitnessLeaves.map((l)=>l.leafPreimage), NullifierLeafPreimage.empty(), MAX_NULLIFIERS_PER_TX),
66
- nullifierPredecessorMembershipWitnesses: makeTuple(MAX_NULLIFIERS_PER_TX, (i)=>i < nullifierPredecessorMembershipWitnessesWithoutPadding.length ? nullifierPredecessorMembershipWitnessesWithoutPadding[i] : makeEmptyMembershipWitness(NULLIFIER_TREE_HEIGHT)),
67
- sortedNullifiers: assertLength(sortedNullifiers.map((n)=>Fr.fromBuffer(n)), MAX_NULLIFIERS_PER_TX),
68
- sortedNullifierIndexes: assertLength(sortedNewLeavesIndexes, MAX_NULLIFIERS_PER_TX),
69
- nullifierSubtreeRootSiblingPath: assertLength(nullifiersSubtreeRootSiblingPath.toFields(), NULLIFIER_SUBTREE_ROOT_SIBLING_PATH_LENGTH),
58
+ nullifierPredecessorPreimages,
59
+ nullifierPredecessorMembershipWitnesses,
60
+ sortedNullifiers,
61
+ sortedNullifierIndexes,
62
+ nullifierSubtreeRootSiblingPath,
70
63
  feePayerBalanceMembershipWitness
71
64
  });
72
65
  const constants = BlockConstantData.from({
@@ -88,6 +81,28 @@ export const insertSideEffectsAndBuildBaseRollupHints = runInSpan('BlockBuilderH
88
81
  });
89
82
  }
90
83
  });
84
+ export const insertSideEffects = runInSpan('BlockBuilderHelpers', 'buildBaseRollupHints', async (span, tx, db)=>{
85
+ span.setAttribute(Attributes.TX_HASH, tx.hash.toString());
86
+ // Insert the note hashes. Padded with zeros to the max number of note hashes per tx.
87
+ const noteHashes = padArrayEnd(tx.txEffect.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX);
88
+ await db.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, noteHashes);
89
+ // Insert the nullifiers. Padded with zeros to the max number of nullifiers per tx.
90
+ // Capturing the low nullifier info for each individual operation.
91
+ 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);
92
+ if (nullifierInsertionResult.lowLeavesWitnessData === undefined) {
93
+ throw new Error(`Failed to batch insert nullifiers.`);
94
+ }
95
+ if (tx.txEffect.publicDataWrites.some((write)=>write.isEmpty())) {
96
+ throw new Error(`Empty public data write in tx: ${toFriendlyJSON(tx)}.`);
97
+ }
98
+ // Insert the public data writes sequentially. No need to pad them to the max array size.
99
+ // Capturing the low leaf info for each individual operation.
100
+ const publicDataInsertionResult = await db.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, tx.txEffect.publicDataWrites.map((write)=>write.toBuffer()));
101
+ return {
102
+ nullifierInsertionResult,
103
+ publicDataInsertionResult
104
+ };
105
+ });
91
106
  export function getChonkProofFromTx(tx) {
92
107
  const publicInputs = tx.data.publicInputs().toFields();
93
108
  const binaryProof = new Proof(Buffer.concat(tx.chonkProof.attachPublicInputs(publicInputs).fieldsWithPublicInputs.map((field)=>field.toBuffer())), publicInputs.length);
@@ -110,24 +125,11 @@ export const buildBlobHints = (blobFields)=>{
110
125
  blobsHash
111
126
  };
112
127
  };
113
- // Build the data required to prove the txs in an epoch. Currently only used in tests. It assumes 1 block per checkpoint.
114
- export const buildBlobDataFromTxs = async (txsPerCheckpoint)=>{
115
- const blobFields = txsPerCheckpoint.map((txs)=>getCheckpointBlobFields([
116
- txs.map((tx)=>tx.txEffect)
117
- ]));
118
- const finalBlobChallenges = await buildFinalBlobChallenges(blobFields);
119
- return {
120
- blobFieldsLengths: blobFields.map((fields)=>fields.length),
121
- finalBlobChallenges
122
- };
123
- };
124
128
  export const buildFinalBlobChallenges = async (blobFieldsPerCheckpoint)=>{
125
- const blobs = blobFieldsPerCheckpoint.map((blobFields)=>getBlobsPerL1Block(blobFields));
126
- return await BatchedBlob.precomputeBatchedBlobChallenges(blobs);
129
+ return await BatchedBlobAccumulator.precomputeBatchedBlobChallenges(blobFieldsPerCheckpoint);
127
130
  };
128
131
  export const accumulateBlobs = runInSpan('BlockBuilderHelpers', 'accumulateBlobs', async (_span, blobFields, startBlobAccumulator)=>{
129
- const blobs = getBlobsPerL1Block(blobFields);
130
- const endBlobAccumulator = await startBlobAccumulator.accumulateBlobs(blobs);
132
+ const endBlobAccumulator = await startBlobAccumulator.accumulateFields(blobFields);
131
133
  return endBlobAccumulator;
132
134
  });
133
135
  export const buildHeaderFromCircuitOutputs = runInSpan('BlockBuilderHelpers', 'buildHeaderFromCircuitOutputs', async (_span, blockRootRollupOutput)=>{
@@ -145,56 +147,50 @@ export const buildHeaderFromCircuitOutputs = runInSpan('BlockBuilderHelpers', 'b
145
147
  const spongeBlobHash = await blockRootRollupOutput.endSpongeBlob.clone().squeeze();
146
148
  return new BlockHeader(blockRootRollupOutput.previousArchive, blockRootRollupOutput.endState, spongeBlobHash, globalVariables, blockRootRollupOutput.accumulatedFees, blockRootRollupOutput.accumulatedManaUsed);
147
149
  });
148
- export const buildHeaderAndBodyFromTxs = runInSpan('BlockBuilderHelpers', 'buildHeaderAndBodyFromTxs', async (span, txs, globalVariables, l1ToL2Messages, db, startSpongeBlob)=>{
150
+ export const buildHeaderAndBodyFromTxs = runInSpan('BlockBuilderHelpers', 'buildHeaderAndBodyFromTxs', async (span, txs, lastArchive, endState, globalVariables, startSpongeBlob, isFirstBlock)=>{
149
151
  span.setAttribute(Attributes.BLOCK_NUMBER, globalVariables.blockNumber);
150
- const stateReference = new StateReference(await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, db), new PartialStateReference(await getTreeSnapshot(MerkleTreeId.NOTE_HASH_TREE, db), await getTreeSnapshot(MerkleTreeId.NULLIFIER_TREE, db), await getTreeSnapshot(MerkleTreeId.PUBLIC_DATA_TREE, db)));
151
- const previousArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
152
152
  const txEffects = txs.map((tx)=>tx.txEffect);
153
153
  const body = new Body(txEffects);
154
- const txOutHashes = txEffects.map((tx)=>tx.txOutHash());
155
- const outHash = txOutHashes.length === 0 ? Fr.ZERO : new Fr(computeCompressedUnbalancedMerkleTreeRoot(txOutHashes));
156
- const parityShaRoot = await computeInHashFromL1ToL2Messages(l1ToL2Messages);
157
- const blockBlobFields = body.toBlobFields();
158
- // TODO(#17027): This only works when there's one block per checkpoint.
159
- const blobFields = [
160
- new Fr(blockBlobFields.length + 1)
161
- ].concat(blockBlobFields);
162
- const blobsHash = computeBlobsHashFromBlobs(getBlobsPerL1Block(blobFields));
163
- const contentCommitment = new ContentCommitment(blobsHash, parityShaRoot, outHash);
164
- const fees = txEffects.reduce((acc, tx)=>acc.add(tx.transactionFee), Fr.ZERO);
165
- const manaUsed = txs.reduce((acc, tx)=>acc.add(new Fr(tx.gasUsed.billedGas.l2Gas)), Fr.ZERO);
166
- const endSpongeBlob = startSpongeBlob?.clone() ?? await SpongeBlob.init(blobFields.length);
154
+ const totalFees = txEffects.reduce((acc, tx)=>acc.add(tx.transactionFee), Fr.ZERO);
155
+ const totalManaUsed = txs.reduce((acc, tx)=>acc.add(new Fr(tx.gasUsed.billedGas.l2Gas)), Fr.ZERO);
156
+ const { l1ToL2MessageTree, partial } = endState;
157
+ const blockBlobFields = encodeBlockBlobData({
158
+ blockEndMarker: {
159
+ timestamp: globalVariables.timestamp,
160
+ blockNumber: globalVariables.blockNumber,
161
+ numTxs: txs.length
162
+ },
163
+ blockEndStateField: {
164
+ l1ToL2MessageNextAvailableLeafIndex: l1ToL2MessageTree.nextAvailableLeafIndex,
165
+ noteHashNextAvailableLeafIndex: partial.noteHashTree.nextAvailableLeafIndex,
166
+ nullifierNextAvailableLeafIndex: partial.nullifierTree.nextAvailableLeafIndex,
167
+ publicDataNextAvailableLeafIndex: partial.publicDataTree.nextAvailableLeafIndex,
168
+ totalManaUsed: totalManaUsed.toBigInt()
169
+ },
170
+ lastArchiveRoot: lastArchive.root,
171
+ noteHashRoot: partial.noteHashTree.root,
172
+ nullifierRoot: partial.nullifierTree.root,
173
+ publicDataRoot: partial.publicDataTree.root,
174
+ l1ToL2MessageRoot: isFirstBlock ? l1ToL2MessageTree.root : undefined,
175
+ txs: body.toTxBlobData()
176
+ });
177
+ const endSpongeBlob = startSpongeBlob.clone();
167
178
  await endSpongeBlob.absorb(blockBlobFields);
168
179
  const spongeBlobHash = await endSpongeBlob.squeeze();
169
- const header = new L2BlockHeader(previousArchive, contentCommitment, stateReference, globalVariables, fees, manaUsed, spongeBlobHash);
180
+ const header = BlockHeader.from({
181
+ lastArchive,
182
+ state: endState,
183
+ spongeBlobHash,
184
+ globalVariables,
185
+ totalFees,
186
+ totalManaUsed
187
+ });
170
188
  return {
171
189
  header,
172
- body
190
+ body,
191
+ blockBlobFields
173
192
  };
174
193
  });
175
- export const buildBlockHeaderFromTxs = runInSpan('BlockBuilderHelpers', 'buildBlockHeaderFromTxs', async (span, txs, globalVariables, startSpongeBlob, db)=>{
176
- span.setAttribute(Attributes.BLOCK_NUMBER, globalVariables.blockNumber);
177
- const stateReference = new StateReference(await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, db), new PartialStateReference(await getTreeSnapshot(MerkleTreeId.NOTE_HASH_TREE, db), await getTreeSnapshot(MerkleTreeId.NULLIFIER_TREE, db), await getTreeSnapshot(MerkleTreeId.PUBLIC_DATA_TREE, db)));
178
- const previousArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
179
- const blobFields = getBlockBlobFields(txs.map((tx)=>tx.txEffect));
180
- const endSpongeBlob = startSpongeBlob.clone();
181
- await endSpongeBlob.absorb(blobFields);
182
- const spongeBlobHash = await endSpongeBlob.squeeze();
183
- const txEffects = txs.map((tx)=>tx.txEffect);
184
- const fees = txEffects.reduce((acc, tx)=>acc.add(tx.transactionFee), Fr.ZERO);
185
- const manaUsed = txs.reduce((acc, tx)=>acc.add(new Fr(tx.gasUsed.billedGas.l2Gas)), Fr.ZERO);
186
- return new BlockHeader(previousArchive, stateReference, spongeBlobHash, globalVariables, fees, manaUsed);
187
- });
188
- /** Computes the inHash for a block's ContentCommitment given its l1 to l2 messages. */ export async function computeInHashFromL1ToL2Messages(unpaddedL1ToL2Messages) {
189
- const l1ToL2Messages = padArrayEnd(unpaddedL1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
190
- const hasher = (left, right)=>Promise.resolve(sha256Trunc(Buffer.concat([
191
- left,
192
- right
193
- ])));
194
- const parityHeight = Math.ceil(Math.log2(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP));
195
- const parityCalculator = await MerkleTreeCalculator.create(parityHeight, Fr.ZERO.toBuffer(), hasher);
196
- return new Fr(await parityCalculator.computeTreeRoot(l1ToL2Messages.map((msg)=>msg.toBuffer())));
197
- }
198
194
  export async function getLastSiblingPath(treeId, db) {
199
195
  const { size } = await db.getTreeInfo(treeId);
200
196
  const path = await db.getSiblingPath(treeId, size - 1n);
@@ -212,28 +208,6 @@ export async function getTreeSnapshot(id, db) {
212
208
  export function makeEmptyMembershipWitness(height) {
213
209
  return new MembershipWitness(height, 0n, makeTuple(height, ()=>Fr.ZERO));
214
210
  }
215
- const processPublicDataUpdateRequests = runInSpan('BlockBuilderHelpers', 'processPublicDataUpdateRequests', async (span, tx, db)=>{
216
- span.setAttribute(Attributes.TX_HASH, tx.hash.toString());
217
- const allPublicDataWrites = tx.txEffect.publicDataWrites.map(({ leafSlot, value })=>new PublicDataTreeLeaf(leafSlot, value));
218
- const { lowLeavesWitnessData, insertionWitnessData } = await db.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, allPublicDataWrites.map((write)=>{
219
- if (write.isEmpty()) {
220
- throw new Error(`Empty public data write in tx: ${toFriendlyJSON(tx)}`);
221
- }
222
- return write.toBuffer();
223
- }));
224
- const lowPublicDataWritesPreimages = lowLeavesWitnessData.map((lowLeafWitness)=>lowLeafWitness.leafPreimage);
225
- const lowPublicDataWritesMembershipWitnesses = lowLeavesWitnessData.map((lowLeafWitness)=>MembershipWitness.fromBufferArray(lowLeafWitness.index, assertLength(lowLeafWitness.siblingPath.toBufferArray(), PUBLIC_DATA_TREE_HEIGHT)));
226
- const publicDataWritesSiblingPaths = insertionWitnessData.map((w)=>{
227
- const insertionSiblingPath = w.siblingPath.toFields();
228
- assertLength(insertionSiblingPath, PUBLIC_DATA_TREE_HEIGHT);
229
- return insertionSiblingPath;
230
- });
231
- return {
232
- lowPublicDataWritesPreimages,
233
- lowPublicDataWritesMembershipWitnesses,
234
- publicDataWritesSiblingPaths
235
- };
236
- });
237
211
  export async function getSubtreeSiblingPath(treeId, subtreeHeight, db) {
238
212
  const nextAvailableLeafIndex = await db.getTreeInfo(treeId).then((t)=>t.size);
239
213
  const fullSiblingPath = await db.getSiblingPath(treeId, nextAvailableLeafIndex);
@@ -1,4 +1,4 @@
1
- import type { SpongeBlob } from '@aztec/blob-lib';
1
+ import { type BlockBlobData, type BlockEndBlobData, type SpongeBlob } from '@aztec/blob-lib';
2
2
  import { type ARCHIVE_HEIGHT, type L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH, type NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
3
3
  import { Fr } from '@aztec/foundation/fields';
4
4
  import { type Tuple } from '@aztec/foundation/serialize';
@@ -7,7 +7,7 @@ import type { PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/ser
7
7
  import { type ParityPublicInputs, ParityRootPrivateInputs } from '@aztec/stdlib/parity';
8
8
  import { BlockRollupPublicInputs, BlockRootEmptyTxFirstRollupPrivateInputs, BlockRootRollupPrivateInputs, BlockRootSingleTxRollupPrivateInputs, CheckpointConstantData, TxMergeRollupPrivateInputs, type TxRollupPublicInputs } from '@aztec/stdlib/rollup';
9
9
  import { AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
10
- import { type BlockHeader, GlobalVariables } from '@aztec/stdlib/tx';
10
+ import { BlockHeader, StateReference } from '@aztec/stdlib/tx';
11
11
  import type { UInt64 } from '@aztec/stdlib/types';
12
12
  import type { CheckpointProvingState } from './checkpoint-proving-state.js';
13
13
  import type { TxProvingState } from './tx-proving-state.js';
@@ -39,6 +39,7 @@ export declare class BlockProvingState {
39
39
  private rootParityProof;
40
40
  private blockRootProof;
41
41
  private builtBlockHeader;
42
+ private endState;
42
43
  private endSpongeBlob;
43
44
  private txs;
44
45
  private isFirstBlock;
@@ -59,24 +60,28 @@ export declare class BlockProvingState {
59
60
  tryStartProvingBlockRoot(): boolean;
60
61
  setBlockRootRollupProof(provingOutput: PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): TreeNodeLocation;
61
62
  getBlockRootRollupOutput(): BlockRollupPublicInputs | undefined;
62
- setBuiltBlockHeader(blockHeader: BlockHeader): void;
63
+ buildBlockHeader(): Promise<BlockHeader>;
63
64
  getBuiltBlockHeader(): BlockHeader | undefined;
64
- getGlobalVariables(): GlobalVariables;
65
65
  getStartSpongeBlob(): SpongeBlob;
66
66
  setEndSpongeBlob(endSpongeBlob: SpongeBlob): void;
67
67
  getEndSpongeBlob(): SpongeBlob | undefined;
68
+ setEndState(endState: StateReference): void;
69
+ hasEndState(): boolean;
70
+ getBlockEndBlobFields(): Fr[];
71
+ getBlockEndBlobData(): BlockEndBlobData;
72
+ getBlockBlobData(): BlockBlobData;
68
73
  getTxEffects(): import("@aztec/stdlib/tx").TxEffect[];
69
74
  getParentLocation(location: TreeNodeLocation): TreeNodeLocation;
70
75
  getMergeRollupInputs(mergeLocation: TreeNodeLocation): TxMergeRollupPrivateInputs;
71
76
  getBlockRootRollupTypeAndInputs(): {
72
- rollupType: string;
73
- inputs: BlockRootEmptyTxFirstRollupPrivateInputs;
74
- } | {
75
77
  rollupType: string;
76
78
  inputs: BlockRootSingleTxRollupPrivateInputs;
77
79
  } | {
78
80
  rollupType: string;
79
81
  inputs: BlockRootRollupPrivateInputs;
82
+ } | {
83
+ rollupType: string;
84
+ inputs: BlockRootEmptyTxFirstRollupPrivateInputs;
80
85
  };
81
86
  getParityRootInputs(): ParityRootPrivateInputs;
82
87
  getTxProvingState(txIndex: number): TxProvingState;
@@ -89,4 +94,4 @@ export declare class BlockProvingState {
89
94
  getError(): string | undefined;
90
95
  reject(reason: string): void;
91
96
  }
92
- //# sourceMappingURL=block-proving-state.d.ts.map
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stcHJvdmluZy1zdGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yY2hlc3RyYXRvci9ibG9jay1wcm92aW5nLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGFBQWEsRUFBRSxLQUFLLGdCQUFnQixFQUFFLEtBQUssVUFBVSxFQUEwQixNQUFNLGlCQUFpQixDQUFDO0FBQ3JILE9BQU8sRUFDTCxLQUFLLGNBQWMsRUFDbkIsS0FBSyw2Q0FBNkMsRUFFbEQsS0FBSyx5Q0FBeUMsRUFFL0MsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssS0FBSyxFQUFnQixNQUFNLDZCQUE2QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUF1QixNQUFNLHlCQUF5QixDQUFDO0FBQ3JGLE9BQU8sS0FBSyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDckYsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHdDQUF3QyxFQUV4Qyw0QkFBNEIsRUFFNUIsb0NBQW9DLEVBQ3BDLHNCQUFzQixFQUN0QiwwQkFBMEIsRUFDMUIsS0FBSyxvQkFBb0IsRUFDMUIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFtQixjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdsRCxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE1BQU0sTUFBTSxVQUFVLENBQUMsQ0FBQyxFQUFFLFlBQVksU0FBUyxNQUFNLElBQUk7SUFDdkQsYUFBYSxDQUFDLEVBQUUsNkJBQTZCLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQy9ELFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUNyQixDQUFDO0FBRUY7OztHQUdHO0FBQ0gscUJBQWEsaUJBQWlCOzthQW9CVixLQUFLLEVBQUUsTUFBTTthQUNiLFdBQVcsRUFBRSxNQUFNO2FBQ25CLFdBQVcsRUFBRSxNQUFNO0lBQ25DLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUztJQUMxQixPQUFPLENBQUMsUUFBUSxDQUFDLFNBQVM7YUFDVix1QkFBdUIsRUFBRSxzQkFBc0I7SUFDL0QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0I7SUFDdkMsT0FBTyxDQUFDLFFBQVEsQ0FBQyw2QkFBNkI7SUFDOUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyx1Q0FBdUM7YUFJeEMsNEJBQTRCLEVBQUUsc0JBQXNCO0lBQ3BFLE9BQU8sQ0FBQyxRQUFRLENBQUMscUNBQXFDO0lBQ3RELE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZTtJQUN6QixnQkFBZ0IsRUFBRSxzQkFBc0I7SUFsQ2pELE9BQU8sQ0FBQyxpQkFBaUIsQ0FFTTtJQUMvQixPQUFPLENBQUMsZ0JBQWdCLENBR0M7SUFDekIsT0FBTyxDQUFDLGVBQWUsQ0FBbUY7SUFDMUcsT0FBTyxDQUFDLGNBQWMsQ0FFUjtJQUNkLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBMEI7SUFDbEQsT0FBTyxDQUFDLFFBQVEsQ0FBNkI7SUFDN0MsT0FBTyxDQUFDLGFBQWEsQ0FBeUI7SUFDOUMsT0FBTyxDQUFDLEdBQUcsQ0FBd0I7SUFDbkMsT0FBTyxDQUFDLFlBQVksQ0FBVTtJQUM5QixPQUFPLENBQUMsS0FBSyxDQUFxQjtJQUVsQyxZQUNrQixLQUFLLEVBQUUsTUFBTSxFQUNiLFdBQVcsRUFBRSxNQUFNLEVBQ25CLFdBQVcsRUFBRSxNQUFNLEVBQ2xCLFNBQVMsRUFBRSxzQkFBc0IsRUFDakMsU0FBUyxFQUFFLE1BQU0sRUFDbEIsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQzlDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxjQUFjLENBQUMsRUFDeEQsNkJBQTZCLEVBQUUsc0JBQXNCLEVBQ3JELHVDQUF1QyxFQUFFLEtBQUssQ0FDN0QsRUFBRSxFQUNGLE9BQU8sNkNBQTZDLENBQ3JELEVBQ2UsNEJBQTRCLEVBQUUsc0JBQXNCLEVBQ25ELHFDQUFxQyxFQUFFLFdBQVcsRUFDbEQsZUFBZSxFQUFFLFVBQVUsRUFDckMsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBUWhEO0lBRUQsSUFBVyxXQUFXLElBQUksTUFBTSxDQUUvQjtJQUdNLFFBQVEsQ0FBQyxFQUFFLEVBQUUsY0FBYyxVQU9qQztJQUVNLGNBQWMsWUFFcEI7SUFFTSxlQUFlLDZDQUVyQjtJQUVNLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxNQUFNLFdBT3pDO0lBRU0sa0JBQWtCLENBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQ2YsYUFBYSxFQUFFLDZCQUE2QixDQUMxQyxvQkFBb0IsRUFDcEIsT0FBTyx5Q0FBeUMsQ0FDakQsR0FDQSxnQkFBZ0IsQ0FFbEI7SUFFTSxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLFdBT3JEO0lBRU0sbUJBQW1CLENBQ3hCLFFBQVEsRUFBRSxnQkFBZ0IsRUFDMUIsYUFBYSxFQUFFLDZCQUE2QixDQUMxQyxvQkFBb0IsRUFDcEIsT0FBTyx5Q0FBeUMsQ0FDakQsUUFHRjtJQUVNLHlCQUF5QixDQUFDLEtBQUssRUFBRSxNQUFNLFdBTzdDO0lBR00sa0JBQWtCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsNkJBQTZCLENBQUMsa0JBQWtCLENBQUMsUUFPeEc7SUFFTSx5QkFBeUIsWUFPL0I7SUFFTSxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsNkJBQTZCLENBQUMsa0JBQWtCLENBQUMsUUFFekY7SUFFTSx3QkFBd0IsWUFPOUI7SUFFTSx1QkFBdUIsQ0FDNUIsYUFBYSxFQUFFLDZCQUE2QixDQUMxQyx1QkFBdUIsRUFDdkIsT0FBTyx5Q0FBeUMsQ0FDakQsR0FDQSxnQkFBZ0IsQ0FHbEI7SUFFTSx3QkFBd0Isd0NBRTlCO0lBRVksZ0JBQWdCLHlCQXdCNUI7SUFFTSxtQkFBbUIsNEJBRXpCO0lBRU0sa0JBQWtCLGVBRXhCO0lBRU0sZ0JBQWdCLENBQUMsYUFBYSxFQUFFLFVBQVUsUUFFaEQ7SUFFTSxnQkFBZ0IsMkJBRXRCO0lBRU0sV0FBVyxDQUFDLFFBQVEsRUFBRSxjQUFjLFFBRTFDO0lBRU0sV0FBVyxZQUVqQjtJQUVNLHFCQUFxQixJQUFJLEVBQUUsRUFBRSxDQUVuQztJQUVELG1CQUFtQixJQUFJLGdCQUFnQixDQXlCdEM7SUFFTSxnQkFBZ0IsSUFBSSxhQUFhLENBS3ZDO0lBRU0sWUFBWSwwQ0FFbEI7SUFFTSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLG9CQUVsRDtJQUVNLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsOEJBTzFEO0lBRU0sK0JBQStCOzs7Ozs7Ozs7TUF3QnJDO0lBOENNLG1CQUFtQiw0QkFRekI7SUFHTSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxrQkFFdkM7SUFFWSw2QkFBNkIseUJBTXpDO0lBRU0scUJBQXFCLENBQUMsUUFBUSxFQUFFLGdCQUFnQixXQUV0RDtJQUdNLHlCQUF5QixZQUcvQjtJQUdNLG9CQUFvQixZQUUxQjtJQUVNLFVBQVUsWUFFaEI7SUFFTSxXQUFXLFlBRWpCO0lBRU0sUUFBUSx1QkFFZDtJQUVNLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxRQUczQjtDQXdDRiJ9
@@ -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,9 +1,11 @@
1
+ import { encodeBlockEndBlobData } from '@aztec/blob-lib';
1
2
  import { NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants';
3
+ import { Fr } from '@aztec/foundation/fields';
2
4
  import { assertLength } from '@aztec/foundation/serialize';
3
5
  import { UnbalancedTreeStore } from '@aztec/foundation/trees';
4
6
  import { ParityRootPrivateInputs } from '@aztec/stdlib/parity';
5
7
  import { BlockRootEmptyTxFirstRollupPrivateInputs, BlockRootFirstRollupPrivateInputs, BlockRootRollupPrivateInputs, BlockRootSingleTxFirstRollupPrivateInputs, BlockRootSingleTxRollupPrivateInputs, TxMergeRollupPrivateInputs } from '@aztec/stdlib/rollup';
6
- import { GlobalVariables } from '@aztec/stdlib/tx';
8
+ import { BlockHeader, GlobalVariables } from '@aztec/stdlib/tx';
7
9
  import { buildHeaderFromCircuitOutputs, toProofData } from './block-building-helpers.js';
8
10
  /**
9
11
  * The current state of the proving schedule for a given block. Managed by ProvingState.
@@ -27,6 +29,7 @@ import { buildHeaderFromCircuitOutputs, toProofData } from './block-building-hel
27
29
  rootParityProof;
28
30
  blockRootProof;
29
31
  builtBlockHeader;
32
+ endState;
30
33
  endSpongeBlob;
31
34
  txs;
32
35
  isFirstBlock;
@@ -157,28 +160,24 @@ import { buildHeaderFromCircuitOutputs, toProofData } from './block-building-hel
157
160
  getBlockRootRollupOutput() {
158
161
  return this.blockRootProof?.provingOutput?.inputs;
159
162
  }
160
- setBuiltBlockHeader(blockHeader) {
161
- this.builtBlockHeader = blockHeader;
163
+ async buildBlockHeader() {
164
+ if (this.isAcceptingTxs()) {
165
+ throw new Error('All txs must be added to the block before building the header.');
166
+ }
167
+ if (!this.endState) {
168
+ throw new Error('Call `setEndState` first.');
169
+ }
170
+ if (!this.endSpongeBlob) {
171
+ throw new Error('Call `setEndSpongeBlob` first.');
172
+ }
173
+ const endSpongeBlob = this.endSpongeBlob.clone();
174
+ const endSpongeBlobHash = await endSpongeBlob.squeeze();
175
+ this.builtBlockHeader = new BlockHeader(this.lastArchiveTreeSnapshot, this.endState, endSpongeBlobHash, this.#getGlobalVariables(), this.#getTotalFees(), new Fr(this.#getTotalManaUsed()));
176
+ return this.builtBlockHeader;
162
177
  }
163
178
  getBuiltBlockHeader() {
164
179
  return this.builtBlockHeader;
165
180
  }
166
- getGlobalVariables() {
167
- if (this.txs.length) {
168
- return this.txs[0].processedTx.globalVariables;
169
- }
170
- const constants = this.constants;
171
- return GlobalVariables.from({
172
- chainId: constants.chainId,
173
- version: constants.version,
174
- blockNumber: this.blockNumber,
175
- slotNumber: constants.slotNumber,
176
- timestamp: this.timestamp,
177
- coinbase: constants.coinbase,
178
- feeRecipient: constants.feeRecipient,
179
- gasFees: constants.gasFees
180
- });
181
- }
182
181
  getStartSpongeBlob() {
183
182
  return this.startSpongeBlob;
184
183
  }
@@ -188,6 +187,46 @@ import { buildHeaderFromCircuitOutputs, toProofData } from './block-building-hel
188
187
  getEndSpongeBlob() {
189
188
  return this.endSpongeBlob;
190
189
  }
190
+ setEndState(endState) {
191
+ this.endState = endState;
192
+ }
193
+ hasEndState() {
194
+ return !!this.endState;
195
+ }
196
+ getBlockEndBlobFields() {
197
+ return encodeBlockEndBlobData(this.getBlockEndBlobData());
198
+ }
199
+ getBlockEndBlobData() {
200
+ if (!this.endState) {
201
+ throw new Error('Call `setEndState` first.');
202
+ }
203
+ const partial = this.endState.partial;
204
+ return {
205
+ blockEndMarker: {
206
+ numTxs: this.totalNumTxs,
207
+ timestamp: this.timestamp,
208
+ blockNumber: this.blockNumber
209
+ },
210
+ blockEndStateField: {
211
+ l1ToL2MessageNextAvailableLeafIndex: this.newL1ToL2MessageTreeSnapshot.nextAvailableLeafIndex,
212
+ noteHashNextAvailableLeafIndex: partial.noteHashTree.nextAvailableLeafIndex,
213
+ nullifierNextAvailableLeafIndex: partial.nullifierTree.nextAvailableLeafIndex,
214
+ publicDataNextAvailableLeafIndex: partial.publicDataTree.nextAvailableLeafIndex,
215
+ totalManaUsed: this.#getTotalManaUsed()
216
+ },
217
+ lastArchiveRoot: this.lastArchiveTreeSnapshot.root,
218
+ noteHashRoot: partial.noteHashTree.root,
219
+ nullifierRoot: partial.nullifierTree.root,
220
+ publicDataRoot: partial.publicDataTree.root,
221
+ l1ToL2MessageRoot: this.isFirstBlock ? this.newL1ToL2MessageTreeSnapshot.root : undefined
222
+ };
223
+ }
224
+ getBlockBlobData() {
225
+ return {
226
+ ...this.getBlockEndBlobData(),
227
+ txs: this.getTxEffects().map((t)=>t.toTxBlobData())
228
+ };
229
+ }
191
230
  getTxEffects() {
192
231
  return this.txs.map((t)=>t.processedTx.txEffect);
193
232
  }
@@ -237,7 +276,7 @@ import { buildHeaderFromCircuitOutputs, toProofData } from './block-building-hel
237
276
  if (!leftRollup) {
238
277
  return {
239
278
  rollupType: 'rollup-block-root-first-empty-tx',
240
- inputs: new BlockRootEmptyTxFirstRollupPrivateInputs(l1ToL2Roots, this.lastArchiveTreeSnapshot, this.headerOfLastBlockInPreviousCheckpoint.state, this.constants, this.startSpongeBlob, this.timestamp, this.lastL1ToL2MessageSubtreeRootSiblingPath, this.lastArchiveSiblingPath)
279
+ inputs: new BlockRootEmptyTxFirstRollupPrivateInputs(l1ToL2Roots, this.lastArchiveTreeSnapshot, this.headerOfLastBlockInPreviousCheckpoint.state, this.constants, this.timestamp, this.lastL1ToL2MessageSubtreeRootSiblingPath, this.lastArchiveSiblingPath)
241
280
  };
242
281
  } else if (!rightRollup) {
243
282
  return {
@@ -310,4 +349,26 @@ import { buildHeaderFromCircuitOutputs, toProofData } from './block-building-hel
310
349
  this.baseOrMergeProofs.getNode(rootLocation)?.provingOutput
311
350
  ] : this.baseOrMergeProofs.getChildren(rootLocation).map((c)=>c?.provingOutput);
312
351
  }
352
+ #getGlobalVariables() {
353
+ if (this.txs.length) {
354
+ return this.txs[0].processedTx.globalVariables;
355
+ }
356
+ const constants = this.constants;
357
+ return GlobalVariables.from({
358
+ chainId: constants.chainId,
359
+ version: constants.version,
360
+ blockNumber: this.blockNumber,
361
+ slotNumber: constants.slotNumber,
362
+ timestamp: this.timestamp,
363
+ coinbase: constants.coinbase,
364
+ feeRecipient: constants.feeRecipient,
365
+ gasFees: constants.gasFees
366
+ });
367
+ }
368
+ #getTotalFees() {
369
+ return this.txs.reduce((acc, tx)=>acc.add(tx.processedTx.txEffect.transactionFee), Fr.ZERO);
370
+ }
371
+ #getTotalManaUsed() {
372
+ return this.txs.reduce((acc, tx)=>acc + BigInt(tx.processedTx.gasUsed.billedGas.l2Gas), 0n);
373
+ }
313
374
  }
@@ -17,7 +17,6 @@ export declare class CheckpointProvingState {
17
17
  readonly index: number;
18
18
  readonly constants: CheckpointConstantData;
19
19
  readonly totalNumBlocks: number;
20
- private readonly totalNumBlobFields;
21
20
  private readonly finalBlobBatchingChallenges;
22
21
  private readonly headerOfLastBlockInPreviousCheckpoint;
23
22
  private readonly lastArchiveSiblingPath;
@@ -36,9 +35,9 @@ export declare class CheckpointProvingState {
36
35
  private blobFields;
37
36
  private error;
38
37
  readonly firstBlockNumber: number;
39
- constructor(index: number, constants: CheckpointConstantData, totalNumBlocks: number, totalNumBlobFields: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges, headerOfLastBlockInPreviousCheckpoint: BlockHeader, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, l1ToL2Messages: Fr[], lastL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>, newL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>, parentEpoch: EpochProvingState, onBlobAccumulatorSet: (checkpoint: CheckpointProvingState) => void);
38
+ constructor(index: number, constants: CheckpointConstantData, totalNumBlocks: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges, headerOfLastBlockInPreviousCheckpoint: BlockHeader, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, l1ToL2Messages: Fr[], lastL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, lastL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>, newL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, newL1ToL2MessageSubtreeRootSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_ROOT_SIBLING_PATH_LENGTH>, parentEpoch: EpochProvingState, onBlobAccumulatorSet: (checkpoint: CheckpointProvingState) => void);
40
39
  get epochNumber(): number;
41
- startNewBlock(blockNumber: number, timestamp: UInt64, totalNumTxs: number, lastArchiveTreeSnapshot: AppendOnlyTreeSnapshot, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>): Promise<BlockProvingState>;
40
+ startNewBlock(blockNumber: number, timestamp: UInt64, totalNumTxs: number, lastArchiveTreeSnapshot: AppendOnlyTreeSnapshot, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>): BlockProvingState;
42
41
  isAcceptingBlocks(): boolean;
43
42
  setBlockRootRollupProof(blockIndex: number, provingOutput: PublicInputsAndRecursiveProof<BlockRollupPublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): TreeNodeLocation;
44
43
  tryStartProvingBlockMerge(location: TreeNodeLocation): boolean;
@@ -51,7 +50,7 @@ export declare class CheckpointProvingState {
51
50
  getParentLocation(location: TreeNodeLocation): TreeNodeLocation;
52
51
  getBlockMergeRollupInputs(mergeLocation: TreeNodeLocation): BlockMergeRollupPrivateInputs;
53
52
  getCheckpointRootRollupType(): CircuitName;
54
- getCheckpointRootRollupInputs(): CheckpointRootSingleBlockRollupPrivateInputs | CheckpointRootRollupPrivateInputs;
53
+ getCheckpointRootRollupInputs(): CheckpointRootRollupPrivateInputs | CheckpointRootSingleBlockRollupPrivateInputs;
55
54
  getBlockProvingStateByBlockNumber(blockNumber: number): BlockProvingState | undefined;
56
55
  isReadyForBlockMerge(location: TreeNodeLocation): boolean;
57
56
  isReadyForCheckpointRoot(): boolean;
@@ -60,4 +59,4 @@ export declare class CheckpointProvingState {
60
59
  cancel(): void;
61
60
  reject(reason: string): void;
62
61
  }
63
- //# sourceMappingURL=checkpoint-proving-state.d.ts.map
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC1wcm92aW5nLXN0YXRlLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JjaGVzdHJhdG9yL2NoZWNrcG9pbnQtcHJvdmluZy1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLEtBQUssMkJBQTJCLEVBR2pDLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLEtBQUssY0FBYyxFQUduQixLQUFLLDZDQUE2QyxFQUNsRCxLQUFLLHlDQUF5QyxFQUUvQyxNQUFNLGtCQUFrQixDQUFDO0FBRTFCLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBdUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRixPQUFPLEtBQUssRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0Qiw0QkFBNEIsRUFFNUIsaUNBQWlDLEVBQ2pDLDRDQUE0QyxFQUM3QyxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbEUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFtQixNQUFNLDBCQUEwQixDQUFDO0FBQzlFLE9BQU8sS0FBSyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbEUscUJBQWEsc0JBQXNCOzthQWVmLEtBQUssRUFBRSxNQUFNO2FBQ2IsU0FBUyxFQUFFLHNCQUFzQjthQUNqQyxjQUFjLEVBQUUsTUFBTTtJQUN0QyxPQUFPLENBQUMsUUFBUSxDQUFDLDJCQUEyQjtJQUM1QyxPQUFPLENBQUMsUUFBUSxDQUFDLHFDQUFxQztJQUN0RCxPQUFPLENBQUMsUUFBUSxDQUFDLHNCQUFzQjtJQUN2QyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWM7SUFFL0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyw2QkFBNkI7SUFDOUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyx1Q0FBdUM7SUFLeEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyw0QkFBNEI7SUFDN0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxzQ0FBc0M7SUFJaEQsV0FBVyxFQUFFLGlCQUFpQjtJQUNyQyxPQUFPLENBQUMsb0JBQW9CO0lBbEM5QixPQUFPLENBQUMsV0FBVyxDQUVqQjtJQUNGLE9BQU8sQ0FBQyxtQkFBbUIsQ0FFYjtJQUNkLE9BQU8sQ0FBQyxNQUFNLENBQXlDO0lBQ3ZELE9BQU8sQ0FBQyxvQkFBb0IsQ0FBcUM7SUFDakUsT0FBTyxDQUFDLGtCQUFrQixDQUFxQztJQUMvRCxPQUFPLENBQUMsVUFBVSxDQUFtQjtJQUNyQyxPQUFPLENBQUMsS0FBSyxDQUFxQjtJQUNsQyxTQUFnQixnQkFBZ0IsRUFBRSxNQUFNLENBQUM7SUFFekMsWUFDa0IsS0FBSyxFQUFFLE1BQU0sRUFDYixTQUFTLEVBQUUsc0JBQXNCLEVBQ2pDLGNBQWMsRUFBRSxNQUFNLEVBQ3JCLDJCQUEyQixFQUFFLDJCQUEyQixFQUN4RCxxQ0FBcUMsRUFBRSxXQUFXLEVBQ2xELHNCQUFzQixFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxjQUFjLENBQUMsRUFDeEQsY0FBYyxFQUFFLEVBQUUsRUFBRSxFQUVwQiw2QkFBNkIsRUFBRSxzQkFBc0IsRUFDckQsdUNBQXVDLEVBQUUsS0FBSyxDQUM3RCxFQUFFLEVBQ0YsT0FBTyw2Q0FBNkMsQ0FDckQsRUFFZ0IsNEJBQTRCLEVBQUUsc0JBQXNCLEVBQ3BELHNDQUFzQyxFQUFFLEtBQUssQ0FDNUQsRUFBRSxFQUNGLE9BQU8sNkNBQTZDLENBQ3JELEVBQ00sV0FBVyxFQUFFLGlCQUFpQixFQUM3QixvQkFBb0IsRUFBRSxDQUFDLFVBQVUsRUFBRSxzQkFBc0IsS0FBSyxJQUFJLEVBSTNFO0lBRUQsSUFBVyxXQUFXLElBQUksTUFBTSxDQUUvQjtJQUVNLGFBQWEsQ0FDbEIsV0FBVyxFQUFFLE1BQU0sRUFDbkIsU0FBUyxFQUFFLE1BQU0sRUFDakIsV0FBVyxFQUFFLE1BQU0sRUFDbkIsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQy9DLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxjQUFjLENBQUMsR0FDdkQsaUJBQWlCLENBdUNuQjtJQUdNLGlCQUFpQixZQUV2QjtJQUVNLHVCQUF1QixDQUM1QixVQUFVLEVBQUUsTUFBTSxFQUNsQixhQUFhLEVBQUUsNkJBQTZCLENBQzFDLHVCQUF1QixFQUN2QixPQUFPLHlDQUF5QyxDQUNqRCxHQUNBLGdCQUFnQixDQUVsQjtJQUVNLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsV0FPMUQ7SUFFTSx3QkFBd0IsQ0FDN0IsUUFBUSxFQUFFLGdCQUFnQixFQUMxQixhQUFhLEVBQUUsNkJBQTZCLENBQzFDLHVCQUF1QixFQUN2QixPQUFPLHlDQUF5QyxDQUNqRCxRQUdGO0lBRU0sNkJBQTZCLFlBT25DO0lBRU0sNEJBQTRCLENBQ2pDLGFBQWEsRUFBRSw2QkFBNkIsQ0FDMUMsNEJBQTRCLEVBQzVCLE9BQU8seUNBQXlDLENBQ2pELEdBQ0EsZ0JBQWdCLENBR2xCO0lBRU0sbUJBQW1CLENBQUMsZUFBZSxFQUFFLE1BQU0sMkJBVWpEO0lBRVksZUFBZSxDQUFDLG9CQUFvQixFQUFFLHNCQUFzQiwrQ0FZeEU7SUFFTSxxQkFBcUIsdUNBRTNCO0lBRU0saUJBQWlCLENBQUMsUUFBUSxFQUFFLGdCQUFnQixvQkFFbEQ7SUFFTSx5QkFBeUIsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLGlDQU8vRDtJQUVNLDJCQUEyQixJQUFJLFdBQVcsQ0FFaEQ7SUFFTSw2QkFBNkIscUZBOEJuQztJQUVNLGlDQUFpQyxDQUFDLFdBQVcsRUFBRSxNQUFNLGlDQUczRDtJQUVNLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsV0FFckQ7SUFFTSx3QkFBd0IsWUFHOUI7SUFFTSxXQUFXLFlBRWpCO0lBRU0sUUFBUSx1QkFFZDtJQUdNLE1BQU0sU0FFWjtJQUVNLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxRQUczQjtDQVFGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/checkpoint-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,KAAK,2BAA2B,EAAc,MAAM,iBAAiB,CAAC;AACvG,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,6CAA6C,EAClD,KAAK,yCAAyC,EAE/C,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAc,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,KAAK,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AAErF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,EACtB,4BAA4B,EAE5B,iCAAiC,EACjC,4CAA4C,EAC7C,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,iBAAiB,EAAmB,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,qBAAa,sBAAsB;;aAef,KAAK,EAAE,MAAM;aACb,SAAS,EAAE,sBAAsB;aACjC,cAAc,EAAE,MAAM;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,2BAA2B;IAC5C,OAAO,CAAC,QAAQ,CAAC,qCAAqC;IACtD,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,6BAA6B;IAC9C,OAAO,CAAC,QAAQ,CAAC,uCAAuC;IAKxD,OAAO,CAAC,QAAQ,CAAC,4BAA4B;IAC7C,OAAO,CAAC,QAAQ,CAAC,sCAAsC;IAIhD,WAAW,EAAE,iBAAiB;IACrC,OAAO,CAAC,oBAAoB;IAnC9B,OAAO,CAAC,WAAW,CAEjB;IACF,OAAO,CAAC,mBAAmB,CAEb;IACd,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,oBAAoB,CAAqC;IACjE,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,KAAK,CAAqB;IAClC,SAAgB,gBAAgB,EAAE,MAAM,CAAC;gBAGvB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,sBAAsB,EACjC,cAAc,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,EAC1B,2BAA2B,EAAE,2BAA2B,EACxD,qCAAqC,EAAE,WAAW,EAClD,sBAAsB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,cAAc,CAAC,EACxD,cAAc,EAAE,EAAE,EAAE,EAEpB,6BAA6B,EAAE,sBAAsB,EACrD,uCAAuC,EAAE,KAAK,CAC7D,EAAE,EACF,OAAO,6CAA6C,CACrD,EAEgB,4BAA4B,EAAE,sBAAsB,EACpD,sCAAsC,EAAE,KAAK,CAC5D,EAAE,EACF,OAAO,6CAA6C,CACrD,EACM,WAAW,EAAE,iBAAiB,EAC7B,oBAAoB,EAAE,CAAC,UAAU,EAAE,sBAAsB,KAAK,IAAI;IAM5E,IAAW,WAAW,IAAI,MAAM,CAE/B;IAEY,aAAa,CACxB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,uBAAuB,EAAE,sBAAsB,EAC/C,sBAAsB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,cAAc,CAAC,GACvD,OAAO,CAAC,iBAAiB,CAAC;IA2CtB,iBAAiB;IAIjB,uBAAuB,CAC5B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,6BAA6B,CAC1C,uBAAuB,EACvB,OAAO,yCAAyC,CACjD,GACA,gBAAgB;IAIZ,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB;IASpD,wBAAwB,CAC7B,QAAQ,EAAE,gBAAgB,EAC1B,aAAa,EAAE,6BAA6B,CAC1C,uBAAuB,EACvB,OAAO,yCAAyC,CACjD;IAKI,6BAA6B;IAS7B,4BAA4B,CACjC,aAAa,EAAE,6BAA6B,CAC1C,4BAA4B,EAC5B,OAAO,yCAAyC,CACjD,GACA,gBAAgB;IAKZ,mBAAmB,CAAC,eAAe,EAAE,MAAM;IAYrC,eAAe,CAAC,oBAAoB,EAAE,sBAAsB;IAclE,qBAAqB;IAIrB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB;IAI5C,yBAAyB,CAAC,aAAa,EAAE,gBAAgB;IASzD,2BAA2B,IAAI,WAAW;IAI1C,6BAA6B;IAgC7B,iCAAiC,CAAC,WAAW,EAAE,MAAM;IAKrD,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB;IAI/C,wBAAwB;IAKxB,WAAW;IAIX,QAAQ;IAKR,MAAM;IAIN,MAAM,CAAC,MAAM,EAAE,MAAM;CAW7B"}
1
+ {"version":3,"file":"checkpoint-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/checkpoint-proving-state.ts"],"names":[],"mappings":"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"}