@aztec/prover-client 0.0.0-test.1 → 0.0.1-fake-ceab37513c

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 (107) hide show
  1. package/dest/bin/get-proof-inputs.js +1 -1
  2. package/dest/block-factory/index.d.ts +2 -0
  3. package/dest/block-factory/index.d.ts.map +1 -0
  4. package/dest/block-factory/light.d.ts +36 -0
  5. package/dest/block-factory/light.d.ts.map +1 -0
  6. package/dest/{block_builder → block-factory}/light.js +35 -30
  7. package/dest/config.d.ts +6 -6
  8. package/dest/config.d.ts.map +1 -1
  9. package/dest/config.js +11 -1
  10. package/dest/mocks/fixtures.d.ts +3 -3
  11. package/dest/mocks/fixtures.d.ts.map +1 -1
  12. package/dest/mocks/fixtures.js +2 -2
  13. package/dest/mocks/test_context.d.ts +18 -13
  14. package/dest/mocks/test_context.d.ts.map +1 -1
  15. package/dest/mocks/test_context.js +44 -38
  16. package/dest/orchestrator/block-building-helpers.d.ts +18 -11
  17. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  18. package/dest/orchestrator/block-building-helpers.js +80 -63
  19. package/dest/orchestrator/block-proving-state.d.ts +19 -10
  20. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  21. package/dest/orchestrator/block-proving-state.js +63 -46
  22. package/dest/orchestrator/epoch-proving-state.d.ts +13 -6
  23. package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
  24. package/dest/orchestrator/epoch-proving-state.js +40 -14
  25. package/dest/orchestrator/orchestrator.d.ts +7 -5
  26. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  27. package/dest/orchestrator/orchestrator.js +78 -52
  28. package/dest/orchestrator/orchestrator_metrics.d.ts +2 -0
  29. package/dest/orchestrator/orchestrator_metrics.d.ts.map +1 -1
  30. package/dest/orchestrator/orchestrator_metrics.js +9 -0
  31. package/dest/orchestrator/tx-proving-state.d.ts +2 -2
  32. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  33. package/dest/orchestrator/tx-proving-state.js +9 -20
  34. package/dest/prover-client/prover-client.d.ts +3 -3
  35. package/dest/prover-client/prover-client.d.ts.map +1 -1
  36. package/dest/prover-client/prover-client.js +5 -4
  37. package/dest/prover-client/server-epoch-prover.d.ts +6 -4
  38. package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
  39. package/dest/prover-client/server-epoch-prover.js +4 -4
  40. package/dest/proving_broker/broker_prover_facade.d.ts +5 -3
  41. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  42. package/dest/proving_broker/broker_prover_facade.js +31 -21
  43. package/dest/proving_broker/config.d.ts +9 -4
  44. package/dest/proving_broker/config.d.ts.map +1 -1
  45. package/dest/proving_broker/config.js +15 -4
  46. package/dest/proving_broker/factory.d.ts +1 -1
  47. package/dest/proving_broker/factory.d.ts.map +1 -1
  48. package/dest/proving_broker/factory.js +5 -1
  49. package/dest/proving_broker/proof_store/factory.js +1 -1
  50. package/dest/proving_broker/proof_store/gcs_proof_store.d.ts.map +1 -1
  51. package/dest/proving_broker/proof_store/gcs_proof_store.js +1 -0
  52. package/dest/proving_broker/proving_agent.d.ts +3 -3
  53. package/dest/proving_broker/proving_agent.d.ts.map +1 -1
  54. package/dest/proving_broker/proving_agent.js +83 -47
  55. package/dest/proving_broker/proving_broker.d.ts +11 -2
  56. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  57. package/dest/proving_broker/proving_broker.js +6 -5
  58. package/dest/proving_broker/proving_broker_database/memory.js +1 -1
  59. package/dest/proving_broker/proving_broker_database/persisted.d.ts.map +1 -1
  60. package/dest/proving_broker/proving_broker_database/persisted.js +9 -8
  61. package/dest/proving_broker/proving_job_controller.d.ts +7 -8
  62. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  63. package/dest/proving_broker/proving_job_controller.js +53 -45
  64. package/dest/proving_broker/rpc.d.ts +3 -5
  65. package/dest/proving_broker/rpc.d.ts.map +1 -1
  66. package/dest/proving_broker/rpc.js +1 -4
  67. package/dest/test/mock_proof_store.d.ts +9 -0
  68. package/dest/test/mock_proof_store.d.ts.map +1 -0
  69. package/dest/test/mock_proof_store.js +10 -0
  70. package/dest/test/mock_prover.d.ts +7 -5
  71. package/dest/test/mock_prover.d.ts.map +1 -1
  72. package/dest/test/mock_prover.js +6 -3
  73. package/package.json +28 -27
  74. package/src/bin/get-proof-inputs.ts +1 -1
  75. package/src/block-factory/index.ts +1 -0
  76. package/src/{block_builder → block-factory}/light.ts +42 -29
  77. package/src/config.ts +24 -8
  78. package/src/mocks/fixtures.ts +5 -5
  79. package/src/mocks/test_context.ts +79 -59
  80. package/src/orchestrator/block-building-helpers.ts +96 -92
  81. package/src/orchestrator/block-proving-state.ts +78 -52
  82. package/src/orchestrator/epoch-proving-state.ts +51 -20
  83. package/src/orchestrator/orchestrator.ts +119 -60
  84. package/src/orchestrator/orchestrator_metrics.ts +20 -1
  85. package/src/orchestrator/tx-proving-state.ts +17 -24
  86. package/src/prover-client/prover-client.ts +16 -14
  87. package/src/prover-client/server-epoch-prover.ts +16 -7
  88. package/src/proving_broker/broker_prover_facade.ts +52 -36
  89. package/src/proving_broker/config.ts +17 -6
  90. package/src/proving_broker/factory.ts +2 -1
  91. package/src/proving_broker/proof_store/factory.ts +1 -1
  92. package/src/proving_broker/proof_store/gcs_proof_store.ts +5 -1
  93. package/src/proving_broker/proof_store/inline_proof_store.ts +1 -1
  94. package/src/proving_broker/proving_agent.ts +89 -47
  95. package/src/proving_broker/proving_broker.ts +16 -15
  96. package/src/proving_broker/proving_broker_database/memory.ts +1 -1
  97. package/src/proving_broker/proving_broker_database/persisted.ts +9 -8
  98. package/src/proving_broker/proving_job_controller.ts +56 -65
  99. package/src/proving_broker/rpc.ts +1 -6
  100. package/src/test/mock_proof_store.ts +14 -0
  101. package/src/test/mock_prover.ts +27 -5
  102. package/dest/block_builder/index.d.ts +0 -6
  103. package/dest/block_builder/index.d.ts.map +0 -1
  104. package/dest/block_builder/light.d.ts +0 -33
  105. package/dest/block_builder/light.d.ts.map +0 -1
  106. package/src/block_builder/index.ts +0 -6
  107. /package/dest/{block_builder → block-factory}/index.js +0 -0
@@ -1,4 +1,6 @@
1
- import { type ARCHIVE_HEIGHT, type L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, type NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
1
+ import { BatchedBlob, type FinalBlobBatchingChallenges } from '@aztec/blob-lib';
2
+ import type { ARCHIVE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH } from '@aztec/constants';
3
+ import type { EthAddress } from '@aztec/foundation/eth-address';
2
4
  import type { Fr } from '@aztec/foundation/fields';
3
5
  import type { Tuple } from '@aztec/foundation/serialize';
4
6
  import { type TreeNodeLocation } from '@aztec/foundation/trees';
@@ -26,30 +28,35 @@ export declare class EpochProvingState {
26
28
  readonly epochNumber: number;
27
29
  readonly firstBlockNumber: number;
28
30
  readonly totalNumBlocks: number;
31
+ readonly finalBlobBatchingChallenges: FinalBlobBatchingChallenges;
29
32
  private completionCallback;
30
33
  private rejectionCallback;
31
34
  private blockRootOrMergeProvingOutputs;
32
35
  private paddingBlockRootProvingOutput;
33
36
  private rootRollupProvingOutput;
37
+ private finalBatchedBlob;
34
38
  private provingStateLifecycle;
35
- readonly cachedTubeProofs: Map<string, Promise<ProofAndVerificationKey<538>>>;
39
+ readonly cachedTubeProofs: Map<string, Promise<ProofAndVerificationKey<535>>>;
36
40
  blocks: (BlockProvingState | undefined)[];
37
- constructor(epochNumber: number, firstBlockNumber: number, totalNumBlocks: number, completionCallback: (result: ProvingResult) => void, rejectionCallback: (reason: string) => void);
38
- startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[], l1ToL2MessageSubtreeSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>, l1ToL2MessageTreeSnapshotAfterInsertion: AppendOnlyTreeSnapshot, lastArchiveSnapshot: AppendOnlyTreeSnapshot, newArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, previousBlockHeader: BlockHeader): BlockProvingState;
41
+ constructor(epochNumber: number, firstBlockNumber: number, totalNumBlocks: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges, completionCallback: (result: ProvingResult) => void, rejectionCallback: (reason: string) => void);
42
+ startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[], l1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, l1ToL2MessageSubtreeSiblingPath: Tuple<Fr, typeof L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH>, l1ToL2MessageTreeSnapshotAfterInsertion: AppendOnlyTreeSnapshot, lastArchiveSnapshot: AppendOnlyTreeSnapshot, lastArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, newArchiveSiblingPath: Tuple<Fr, typeof ARCHIVE_HEIGHT>, previousBlockHeader: BlockHeader, proverId: EthAddress): BlockProvingState;
39
43
  verifyState(): boolean;
40
44
  isAcceptingBlocks(): boolean;
41
45
  setBlockRootRollupProof(blockIndex: number, proof: PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): TreeNodeLocation;
42
46
  setBlockMergeRollupProof(location: TreeNodeLocation, proof: PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): void;
43
47
  setRootRollupProof(proof: PublicInputsAndRecursiveProof<RootRollupPublicInputs>): void;
44
48
  setPaddingBlockRootProof(proof: PublicInputsAndRecursiveProof<BlockRootOrBlockMergePublicInputs, typeof NESTED_RECURSIVE_ROLLUP_HONK_PROOF_LENGTH>): void;
49
+ setFinalBatchedBlob(batchedBlob: BatchedBlob): void;
50
+ setBlobAccumulators(toBlock?: number): Promise<void>;
45
51
  getParentLocation(location: TreeNodeLocation): TreeNodeLocation;
46
52
  getBlockMergeRollupInputs(mergeLocation: TreeNodeLocation): BlockMergeRollupInputs;
47
- getRootRollupInputs(proverId: Fr): RootRollupInputs;
48
- getPaddingBlockRootInputs(proverId: Fr): Promise<import("@aztec/stdlib/rollup").EmptyBlockRootRollupInputs>;
53
+ getRootRollupInputs(): RootRollupInputs;
54
+ getPaddingBlockRootInputs(): import("@aztec/stdlib/rollup").PaddingBlockRootRollupInputs;
49
55
  getBlockProvingStateByBlockNumber(blockNumber: number): BlockProvingState | undefined;
50
56
  getEpochProofResult(): {
51
57
  proof: Proof;
52
58
  publicInputs: RootRollupPublicInputs;
59
+ batchedBlobInputs: BatchedBlob;
53
60
  };
54
61
  isReadyForBlockMerge(location: TreeNodeLocation): boolean;
55
62
  isReadyForRootRollup(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"epoch-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-state.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,wCAAwC,EAC7C,KAAK,yCAAyC,EAG/C,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAqB,KAAK,gBAAgB,EAAuB,MAAM,yBAAyB,CAAC;AAExG,OAAO,KAAK,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAC9G,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,sBAAsB,EACtB,KAAK,iCAAiC,EAEtC,gBAAgB,EAChB,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;AAStE,MAAM,MAAM,aAAa,GAAG;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1F;;;;;GAKG;AACH,qBAAa,iBAAiB;;aAgBV,WAAW,EAAE,MAAM;aACnB,gBAAgB,EAAE,MAAM;aACxB,cAAc,EAAE,MAAM;IACtC,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,iBAAiB;IAnB3B,OAAO,CAAC,8BAA8B,CAEpC;IACF,OAAO,CAAC,6BAA6B,CAEvB;IACd,OAAO,CAAC,uBAAuB,CAAoE;IACnG,OAAO,CAAC,qBAAqB,CAAiD;IAG9E,SAAgB,gBAAgB,qDAAiF;IAE1G,MAAM,EAAE,CAAC,iBAAiB,GAAG,SAAS,CAAC,EAAE,CAAM;gBAGpC,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EAC9B,kBAAkB,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,EACnD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAO9C,aAAa,CAClB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,EAAE,EAAE,EACpB,+BAA+B,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,wCAAwC,CAAC,EAC3F,uCAAuC,EAAE,sBAAsB,EAC/D,mBAAmB,EAAE,sBAAsB,EAC3C,qBAAqB,EAAE,KAAK,CAAC,EAAE,EAAE,OAAO,cAAc,CAAC,EACvD,mBAAmB,EAAE,WAAW,GAC/B,iBAAiB;IAqBb,WAAW;IAQX,iBAAiB;IAIjB,uBAAuB,CAC5B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,6BAA6B,CAClC,iCAAiC,EACjC,OAAO,yCAAyC,CACjD,GACA,gBAAgB;IAIZ,wBAAwB,CAC7B,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,6BAA6B,CAClC,iCAAiC,EACjC,OAAO,yCAAyC,CACjD;IAKI,kBAAkB,CAAC,KAAK,EAAE,6BAA6B,CAAC,sBAAsB,CAAC;IAI/E,wBAAwB,CAC7B,KAAK,EAAE,6BAA6B,CAClC,iCAAiC,EACjC,OAAO,yCAAyC,CACjD;IAKI,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB;IAI5C,yBAAyB,CAAC,aAAa,EAAE,gBAAgB;IASzD,mBAAmB,CAAC,QAAQ,EAAE,EAAE;IAYhC,yBAAyB,CAAC,QAAQ,EAAE,EAAE;IAStC,iCAAiC,CAAC,WAAW,EAAE,MAAM;IAIrD,mBAAmB,IAAI;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,YAAY,EAAE,sBAAsB,CAAA;KAAE;IAW7E,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB;IAK/C,oBAAoB;IAMpB,MAAM;IAMN,MAAM,CAAC,MAAM,EAAE,MAAM;IAUrB,OAAO,CAAC,MAAM,EAAE,aAAa;CAgCrC"}
1
+ {"version":3,"file":"epoch-proving-state.d.ts","sourceRoot":"","sources":["../../src/orchestrator/epoch-proving-state.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { VK_TREE_HEIGHT } from '@aztec/constants';
2
- import { MembershipWitness, UnbalancedTreeStore } from '@aztec/foundation/trees';
1
+ import { UnbalancedTreeStore } from '@aztec/foundation/trees';
3
2
  import { getVKIndex, getVKSiblingPath } from '@aztec/noir-protocol-circuits-types/vk-tree';
4
3
  import { BlockMergeRollupInputs, PreviousRollupBlockData, RootRollupInputs } from '@aztec/stdlib/rollup';
4
+ import { VkData } from '@aztec/stdlib/vks';
5
5
  import { BlockProvingState } from './block-proving-state.js';
6
6
  var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
7
7
  PROVING_STATE_LIFECYCLE[PROVING_STATE_LIFECYCLE["PROVING_STATE_CREATED"] = 0] = "PROVING_STATE_CREATED";
@@ -19,19 +19,22 @@ var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
19
19
  epochNumber;
20
20
  firstBlockNumber;
21
21
  totalNumBlocks;
22
+ finalBlobBatchingChallenges;
22
23
  completionCallback;
23
24
  rejectionCallback;
24
25
  blockRootOrMergeProvingOutputs;
25
26
  paddingBlockRootProvingOutput;
26
27
  rootRollupProvingOutput;
28
+ finalBatchedBlob;
27
29
  provingStateLifecycle;
28
30
  // Map from tx hash to tube proof promise. Used when kickstarting tube proofs before tx processing.
29
31
  cachedTubeProofs;
30
32
  blocks;
31
- constructor(epochNumber, firstBlockNumber, totalNumBlocks, completionCallback, rejectionCallback){
33
+ constructor(epochNumber, firstBlockNumber, totalNumBlocks, finalBlobBatchingChallenges, completionCallback, rejectionCallback){
32
34
  this.epochNumber = epochNumber;
33
35
  this.firstBlockNumber = firstBlockNumber;
34
36
  this.totalNumBlocks = totalNumBlocks;
37
+ this.finalBlobBatchingChallenges = finalBlobBatchingChallenges;
35
38
  this.completionCallback = completionCallback;
36
39
  this.rejectionCallback = rejectionCallback;
37
40
  this.provingStateLifecycle = 0;
@@ -41,9 +44,9 @@ var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
41
44
  }
42
45
  // Adds a block to the proving state, returns its index
43
46
  // Will update the proving life cycle if this is the last block
44
- startNewBlock(globalVariables, l1ToL2Messages, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchiveSnapshot, newArchiveSiblingPath, previousBlockHeader) {
45
- const index = globalVariables.blockNumber.toNumber() - this.firstBlockNumber;
46
- const block = new BlockProvingState(index, globalVariables, l1ToL2Messages, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchiveSnapshot, newArchiveSiblingPath, previousBlockHeader, this);
47
+ startNewBlock(globalVariables, l1ToL2Messages, l1ToL2MessageTreeSnapshot, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchiveSnapshot, lastArchiveSiblingPath, newArchiveSiblingPath, previousBlockHeader, proverId) {
48
+ const index = globalVariables.blockNumber - this.firstBlockNumber;
49
+ const block = new BlockProvingState(index, globalVariables, l1ToL2Messages, l1ToL2MessageTreeSnapshot, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchiveSnapshot, lastArchiveSiblingPath, newArchiveSiblingPath, previousBlockHeader, proverId, this);
47
50
  this.blocks[index] = block;
48
51
  if (this.blocks.filter((b)=>!!b).length === this.totalNumBlocks) {
49
52
  this.provingStateLifecycle = 1;
@@ -70,6 +73,28 @@ var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
70
73
  setPaddingBlockRootProof(proof) {
71
74
  this.paddingBlockRootProvingOutput = proof;
72
75
  }
76
+ setFinalBatchedBlob(batchedBlob) {
77
+ this.finalBatchedBlob = batchedBlob;
78
+ }
79
+ async setBlobAccumulators(toBlock) {
80
+ let previousAccumulator;
81
+ const end = toBlock ? toBlock - this.firstBlockNumber : this.blocks.length;
82
+ // Accumulate blobs as far as we can for this epoch.
83
+ for(let i = 0; i <= end; i++){
84
+ const block = this.blocks[i];
85
+ if (!block || !block.block) {
86
+ break;
87
+ }
88
+ if (!block.startBlobAccumulator) {
89
+ // startBlobAccumulator always exists for firstBlockNumber, so the below should never assign an undefined:
90
+ block.setStartBlobAccumulator(previousAccumulator);
91
+ }
92
+ if (block.startBlobAccumulator && !block.endBlobAccumulator) {
93
+ await block.accumulateBlobs();
94
+ }
95
+ previousAccumulator = block.endBlobAccumulator;
96
+ }
97
+ }
73
98
  getParentLocation(location) {
74
99
  return this.blockRootOrMergeProvingOutputs.getParentLocation(location);
75
100
  }
@@ -83,7 +108,7 @@ var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
83
108
  this.#getPreviousRollupData(right)
84
109
  ]);
85
110
  }
86
- getRootRollupInputs(proverId) {
111
+ getRootRollupInputs() {
87
112
  const [left, right] = this.#getChildProofsForRoot();
88
113
  if (!left || !right) {
89
114
  throw new Error('At lease one child is not ready.');
@@ -92,27 +117,27 @@ var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
92
117
  previousRollupData: [
93
118
  this.#getPreviousRollupData(left),
94
119
  this.#getPreviousRollupData(right)
95
- ],
96
- proverId
120
+ ]
97
121
  });
98
122
  }
99
- getPaddingBlockRootInputs(proverId) {
123
+ getPaddingBlockRootInputs() {
100
124
  if (!this.blocks[0]?.isComplete()) {
101
125
  throw new Error('Epoch needs one completed block in order to be padded.');
102
126
  }
103
- return this.blocks[0].getPaddingBlockRootInputs(proverId);
127
+ return this.blocks[0].getPaddingBlockRootInputs();
104
128
  }
105
129
  // Returns a specific transaction proving state
106
130
  getBlockProvingStateByBlockNumber(blockNumber) {
107
131
  return this.blocks.find((block)=>block?.blockNumber === blockNumber);
108
132
  }
109
133
  getEpochProofResult() {
110
- if (!this.rootRollupProvingOutput) {
134
+ if (!this.rootRollupProvingOutput || !this.finalBatchedBlob) {
111
135
  throw new Error('Unable to get epoch proof result. Root rollup is not ready.');
112
136
  }
113
137
  return {
114
138
  proof: this.rootRollupProvingOutput.proof.binaryProof,
115
- publicInputs: this.rootRollupProvingOutput.inputs
139
+ publicInputs: this.rootRollupProvingOutput.inputs,
140
+ batchedBlobInputs: this.finalBatchedBlob
116
141
  };
117
142
  }
118
143
  isReadyForBlockMerge(location) {
@@ -158,6 +183,7 @@ var PROVING_STATE_LIFECYCLE = /*#__PURE__*/ function(PROVING_STATE_LIFECYCLE) {
158
183
  }
159
184
  #getPreviousRollupData({ inputs, proof, verificationKey }) {
160
185
  const leafIndex = getVKIndex(verificationKey.keyAsFields);
161
- return new PreviousRollupBlockData(inputs, proof, verificationKey.keyAsFields, new MembershipWitness(VK_TREE_HEIGHT, BigInt(leafIndex), getVKSiblingPath(leafIndex)));
186
+ const vkData = new VkData(verificationKey, leafIndex, getVKSiblingPath(leafIndex));
187
+ return new PreviousRollupBlockData(inputs, proof, vkData);
162
188
  }
163
189
  }
@@ -1,5 +1,6 @@
1
+ import { FinalBlobBatchingChallenges } from '@aztec/blob-lib';
1
2
  import { Fr } from '@aztec/foundation/fields';
2
- import { L2Block } from '@aztec/stdlib/block';
3
+ import { EthAddress, L2Block } from '@aztec/stdlib/block';
3
4
  import type { EpochProver, ForkMerkleTreeOperations, ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
4
5
  import { type AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
5
6
  import { type BlockHeader, type GlobalVariables, type ProcessedTx, type Tx } from '@aztec/stdlib/tx';
@@ -26,11 +27,11 @@ export declare class ProvingOrchestrator implements EpochProver {
26
27
  private provingPromise;
27
28
  private metrics;
28
29
  private dbs;
29
- constructor(dbProvider: ForkMerkleTreeOperations, prover: ServerCircuitProver, proverId?: Fr, telemetryClient?: TelemetryClient);
30
+ constructor(dbProvider: ForkMerkleTreeOperations, prover: ServerCircuitProver, proverId: EthAddress, telemetryClient?: TelemetryClient);
30
31
  get tracer(): Tracer;
31
- getProverId(): Fr;
32
+ getProverId(): EthAddress;
32
33
  stop(): Promise<void>;
33
- startNewEpoch(epochNumber: number, firstBlockNumber: number, totalNumBlocks: number): void;
34
+ startNewEpoch(epochNumber: number, firstBlockNumber: number, totalNumBlocks: number, finalBlobBatchingChallenges: FinalBlobBatchingChallenges): void;
34
35
  /**
35
36
  * Starts off a new block
36
37
  * @param globalVariables - The global variables for the block
@@ -64,9 +65,10 @@ export declare class ProvingOrchestrator implements EpochProver {
64
65
  /**
65
66
  * Returns the proof for the current epoch.
66
67
  */
67
- finaliseEpoch(): Promise<{
68
+ finalizeEpoch(): Promise<{
68
69
  proof: import("@aztec/stdlib/proofs").Proof;
69
70
  publicInputs: import("@aztec/stdlib/rollup").RootRollupPublicInputs;
71
+ batchedBlobInputs: import("@aztec/blob-lib").BatchedBlob;
70
72
  }>;
71
73
  /**
72
74
  * Starts the proving process for the given transaction and adds it to our state
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAQ9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EACV,WAAW,EACX,wBAAwB,EAGxB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAWzC,OAAO,EAAE,KAAK,sBAAsB,EAAgB,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,KAAK,EAAE,EAAmB,MAAM,kBAAkB,CAAC;AAEtH,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,MAAM,EAIZ,MAAM,yBAAyB,CAAC;AAoBjC;;;;;;;;;GASG;AAEH;;GAEG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IASnD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV3B,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,kBAAkB,CAAyB;IAEnD,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,GAAG,CAAqD;gBAGtD,UAAU,EAAE,wBAAwB,EACpC,MAAM,EAAE,mBAAmB,EAClB,QAAQ,GAAE,EAAY,EACvC,eAAe,GAAE,eAAsC;IAKzD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAEM,WAAW,IAAI,EAAE;IAIjB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAW1F;;;;;OAKG;IAIU,aAAa,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,mBAAmB,EAAE,WAAW;IAyCnH;;;OAGG;IAIU,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDtD;;;OAGG;IAEU,iBAAiB,CAAC,GAAG,EAAE,EAAE,EAAE;IAcxC;;;OAGG;IAIU,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBnG,oDAAoD;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;YAQzB,UAAU;cAqCR,kCAAkC,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB;IAWvG;;OAEG;IACI,MAAM;IAQb;;OAEG;IACU,aAAa;;;;IAoB1B;;;;OAIG;YACW,kBAAkB;IAShC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;YAwDT,uBAAuB;YA+BvB,uBAAuB;IAmCrC,OAAO,CAAC,iBAAiB;IA+CzB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,kBAAkB;YA2BZ,sBAAsB;IA2DpC,OAAO,CAAC,wBAAwB;IAwBhC,OAAO,CAAC,gCAAgC;IAUxC,OAAO,CAAC,wBAAwB;IA4BhC,OAAO,CAAC,uBAAuB;YA0BjB,mBAAmB;IA8BjC,OAAO,CAAC,iBAAiB;YA6BX,8BAA8B;YAa9B,8BAA8B;IAyB5C,OAAO,CAAC,mCAAmC;IAa3C,OAAO,CAAC,yBAAyB;IASjC;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IA8CjB,OAAO,CAAC,4BAA4B;CAWrC"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAU3F,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAS9C,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EACV,WAAW,EACX,wBAAwB,EAGxB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAUzC,OAAO,EAAE,KAAK,sBAAsB,EAAgB,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,KAAK,EAAE,EAAmB,MAAM,kBAAkB,CAAC;AACtH,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,MAAM,EAIZ,MAAM,yBAAyB,CAAC;AAqBjC;;;;;;;;;GASG;AAEH;;GAEG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IASnD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV3B,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,kBAAkB,CAAyB;IAEnD,OAAO,CAAC,cAAc,CAAiD;IACvE,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,GAAG,CAAqD;gBAGtD,UAAU,EAAE,wBAAwB,EACpC,MAAM,EAAE,mBAAmB,EAClB,QAAQ,EAAE,UAAU,EACrC,eAAe,GAAE,eAAsC;IAKzD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAEM,WAAW,IAAI,UAAU;IAIzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,aAAa,CAClB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,2BAA2B,EAAE,2BAA2B;IAmB1D;;;;;OAKG;IAIU,aAAa,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,mBAAmB,EAAE,WAAW;IA+CnH;;;OAGG;IAIU,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDtD;;;OAGG;IAEI,iBAAiB,CAAC,GAAG,EAAE,EAAE,EAAE;IAelC;;;OAGG;IAIU,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BnG,oDAAoD;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;YAQzB,UAAU;cAqCR,kCAAkC,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB;IAWvG;;OAEG;IACI,MAAM;IAQb;;OAEG;IACU,aAAa;;;;;IA6B1B;;;;OAIG;YACW,kBAAkB;IAShC;;;;;OAKG;IACH,OAAO,CAAC,eAAe;YAwDT,uBAAuB;YAkCvB,uBAAuB;IAyCrC,OAAO,CAAC,iBAAiB;IA8CzB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,kBAAkB;YA0BZ,sBAAsB;IAgFpC,OAAO,CAAC,wBAAwB;IAuBhC,OAAO,CAAC,gCAAgC;IAUxC,OAAO,CAAC,wBAAwB;IA2BhC,OAAO,CAAC,uBAAuB;IAwB/B,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,iBAAiB;YA4BX,8BAA8B;YAa9B,8BAA8B;IA2B5C,OAAO,CAAC,mCAAmC;IAa3C,OAAO,CAAC,yBAAyB;IASjC;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAoDjB,OAAO,CAAC,4BAA4B;CAWrC"}
@@ -4,7 +4,8 @@ function _ts_decorate(decorators, target, key, desc) {
4
4
  else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  }
7
- import { AVM_PROOF_LENGTH_IN_FIELDS, AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS, L1_TO_L2_MSG_SUBTREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants';
7
+ import { BlobAccumulatorPublicInputs } from '@aztec/blob-lib';
8
+ import { L1_TO_L2_MSG_SUBTREE_HEIGHT, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, NUM_BASE_PARITY_PER_ROOT_PARITY } from '@aztec/constants';
8
9
  import { padArrayEnd, times } from '@aztec/foundation/collection';
9
10
  import { AbortError } from '@aztec/foundation/error';
10
11
  import { Fr } from '@aztec/foundation/fields';
@@ -14,16 +15,15 @@ import { assertLength } from '@aztec/foundation/serialize';
14
15
  import { pushTestData } from '@aztec/foundation/testing';
15
16
  import { elapsed } from '@aztec/foundation/timer';
16
17
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
18
+ import { readAvmMinimalPublicTxInputsFromFile } from '@aztec/simulator/public/fixtures';
17
19
  import { L2Block } from '@aztec/stdlib/block';
18
20
  import { BaseParityInputs } from '@aztec/stdlib/parity';
19
- import { makeEmptyRecursiveProof } from '@aztec/stdlib/proofs';
20
21
  import { EmptyBlockRootRollupInputs, PrivateBaseRollupInputs, SingleTxBlockRootRollupInputs, TubeInputs } from '@aztec/stdlib/rollup';
21
22
  import { MerkleTreeId } from '@aztec/stdlib/trees';
22
23
  import { toNumBlobFields } from '@aztec/stdlib/tx';
23
- import { VerificationKeyData } from '@aztec/stdlib/vks';
24
24
  import { Attributes, getTelemetryClient, trackSpan, wrapCallbackInSpan } from '@aztec/telemetry-client';
25
25
  import { inspect } from 'util';
26
- import { buildBaseRollupHints, buildHeaderAndBodyFromTxs, getRootTreeSiblingPath, getSubtreeSiblingPath, getTreeSnapshot, validatePartialState, validateTx } from './block-building-helpers.js';
26
+ import { buildHeaderAndBodyFromTxs, getLastSiblingPath, getRootTreeSiblingPath, getSubtreeSiblingPath, getTreeSnapshot, insertSideEffectsAndBuildBaseRollupHints, validatePartialState, validateTx } from './block-building-helpers.js';
27
27
  import { EpochProvingState } from './epoch-proving-state.js';
28
28
  import { ProvingOrchestratorMetrics } from './orchestrator_metrics.js';
29
29
  import { TxProvingState } from './tx-proving-state.js';
@@ -48,7 +48,7 @@ const logger = createLogger('prover-client:orchestrator');
48
48
  provingPromise;
49
49
  metrics;
50
50
  dbs;
51
- constructor(dbProvider, prover, proverId = Fr.ZERO, telemetryClient = getTelemetryClient()){
51
+ constructor(dbProvider, prover, proverId, telemetryClient = getTelemetryClient()){
52
52
  this.dbProvider = dbProvider;
53
53
  this.prover = prover;
54
54
  this.proverId = proverId;
@@ -68,7 +68,7 @@ const logger = createLogger('prover-client:orchestrator');
68
68
  this.cancel();
69
69
  return Promise.resolve();
70
70
  }
71
- startNewEpoch(epochNumber, firstBlockNumber, totalNumBlocks) {
71
+ startNewEpoch(epochNumber, firstBlockNumber, totalNumBlocks, finalBlobBatchingChallenges) {
72
72
  const { promise: _promise, resolve, reject } = promiseWithResolvers();
73
73
  const promise = _promise.catch((reason)=>({
74
74
  status: 'failure',
@@ -78,7 +78,7 @@ const logger = createLogger('prover-client:orchestrator');
78
78
  throw new Error(`Invalid number of blocks for epoch (got ${totalNumBlocks})`);
79
79
  }
80
80
  logger.info(`Starting epoch ${epochNumber} with ${totalNumBlocks} blocks`);
81
- this.provingState = new EpochProvingState(epochNumber, firstBlockNumber, totalNumBlocks, resolve, reject);
81
+ this.provingState = new EpochProvingState(epochNumber, firstBlockNumber, totalNumBlocks, finalBlobBatchingChallenges, resolve, reject);
82
82
  this.provingPromise = promise;
83
83
  }
84
84
  /**
@@ -93,16 +93,17 @@ const logger = createLogger('prover-client:orchestrator');
93
93
  if (!this.provingState?.isAcceptingBlocks()) {
94
94
  throw new Error(`Epoch not accepting further blocks`);
95
95
  }
96
- logger.info(`Starting block ${globalVariables.blockNumber.toNumber()} for slot ${globalVariables.slotNumber.toNumber()}`);
96
+ logger.info(`Starting block ${globalVariables.blockNumber} for slot ${globalVariables.slotNumber.toNumber()}`);
97
97
  // Fork world state at the end of the immediately previous block
98
- const db = await this.dbProvider.fork(globalVariables.blockNumber.toNumber() - 1);
99
- this.dbs.set(globalVariables.blockNumber.toNumber(), db);
98
+ const db = await this.dbProvider.fork(globalVariables.blockNumber - 1);
99
+ this.dbs.set(globalVariables.blockNumber, db);
100
100
  // we start the block by enqueueing all of the base parity circuits
101
- const { l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, baseParityInputs } = await this.prepareBaseParityInputs(l1ToL2Messages, db);
101
+ const { l1ToL2MessageTreeSnapshot, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, baseParityInputs } = await this.prepareBaseParityInputs(l1ToL2Messages, db);
102
102
  // Get archive snapshot before this block lands
103
103
  const lastArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
104
+ const lastArchiveSiblingPath = await getLastSiblingPath(MerkleTreeId.ARCHIVE, db);
104
105
  const newArchiveSiblingPath = await getRootTreeSiblingPath(MerkleTreeId.ARCHIVE, db);
105
- const blockProvingState = this.provingState.startNewBlock(globalVariables, l1ToL2Messages, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchive, newArchiveSiblingPath, previousBlockHeader);
106
+ const blockProvingState = this.provingState.startNewBlock(globalVariables, l1ToL2Messages, l1ToL2MessageTreeSnapshot, l1ToL2MessageSubtreeSiblingPath, l1ToL2MessageTreeSnapshotAfterInsertion, lastArchive, lastArchiveSiblingPath, newArchiveSiblingPath, previousBlockHeader, this.proverId);
106
107
  // Enqueue base parity circuits for the block
107
108
  for(let i = 0; i < baseParityInputs.length; i++){
108
109
  this.enqueueBaseParityCircuit(blockProvingState, baseParityInputs[i], i);
@@ -118,7 +119,7 @@ const logger = createLogger('prover-client:orchestrator');
118
119
  logger.warn(`Provided no txs to orchestrator addTxs.`);
119
120
  return;
120
121
  }
121
- const blockNumber = txs[0].constants.globalVariables.blockNumber.toNumber();
122
+ const blockNumber = txs[0].globalVariables.blockNumber;
122
123
  const provingState = this.provingState?.getBlockProvingStateByBlockNumber(blockNumber);
123
124
  if (!provingState) {
124
125
  throw new Error(`Block proving state for ${blockNumber} not found`);
@@ -154,18 +155,19 @@ const logger = createLogger('prover-client:orchestrator');
154
155
  /**
155
156
  * Kickstarts tube circuits for the specified txs. These will be used during epoch proving.
156
157
  * Note that if the tube circuits are not started this way, they will be started nontheless after processing.
157
- */ async startTubeCircuits(txs) {
158
+ */ startTubeCircuits(txs) {
158
159
  if (!this.provingState?.verifyState()) {
159
160
  throw new Error(`Invalid proving state, call startNewEpoch before starting tube circuits`);
160
161
  }
161
162
  for (const tx of txs){
162
- const txHash = (await tx.getTxHash()).toString();
163
- const tubeInputs = new TubeInputs(tx.clientIvcProof);
163
+ const txHash = tx.getTxHash().toString();
164
+ const tubeInputs = new TubeInputs(!!tx.data.forPublic, tx.clientIvcProof);
164
165
  const tubeProof = promiseWithResolvers();
165
166
  logger.debug(`Starting tube circuit for tx ${txHash}`);
166
167
  this.doEnqueueTube(txHash, tubeInputs, (proof)=>tubeProof.resolve(proof));
167
168
  this.provingState?.cachedTubeProofs.set(txHash, tubeProof.promise);
168
169
  }
170
+ return Promise.resolve();
169
171
  }
170
172
  /**
171
173
  * Marks the block as completed.
@@ -176,7 +178,7 @@ const logger = createLogger('prover-client:orchestrator');
176
178
  throw new Error(`Block proving state for ${blockNumber} not found`);
177
179
  }
178
180
  if (!provingState.spongeBlobState) {
179
- // If we are completing an empty block, initialise the provingState.
181
+ // If we are completing an empty block, initialize the provingState.
180
182
  // We will have 0 txs and no blob fields.
181
183
  provingState.startNewBlock(0, 0);
182
184
  }
@@ -186,6 +188,8 @@ const logger = createLogger('prover-client:orchestrator');
186
188
  // And build the block header
187
189
  logger.verbose(`Block ${blockNumber} completed. Assembling header.`);
188
190
  await this.buildBlock(provingState, expectedHeader);
191
+ logger.debug(`Accumulating blobs for ${blockNumber}`);
192
+ await this.provingState?.setBlobAccumulators(blockNumber);
189
193
  // If the proofs were faster than the block building, then we need to try the block root rollup again here
190
194
  await this.checkAndEnqueueBlockRootRollup(provingState);
191
195
  return provingState.block;
@@ -215,8 +219,8 @@ const logger = createLogger('prover-client:orchestrator');
215
219
  const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
216
220
  const l2Block = new L2Block(newArchive, header, body);
217
221
  await this.verifyBuiltBlockAgainstSyncedState(l2Block, newArchive);
218
- logger.verbose(`Orchestrator finalised block ${l2Block.number}`);
219
- provingState.block = l2Block;
222
+ logger.verbose(`Orchestrator finalized block ${l2Block.number}`);
223
+ provingState.setBlock(l2Block);
220
224
  }
221
225
  // Flagged as protected to disable in certain unit tests
222
226
  async verifyBuiltBlockAgainstSyncedState(l2Block, newArchive) {
@@ -235,14 +239,22 @@ const logger = createLogger('prover-client:orchestrator');
235
239
  }
236
240
  /**
237
241
  * Returns the proof for the current epoch.
238
- */ async finaliseEpoch() {
242
+ */ async finalizeEpoch() {
239
243
  if (!this.provingState || !this.provingPromise) {
240
- throw new Error(`Invalid proving state, an epoch must be proven before it can be finalised`);
244
+ throw new Error(`Invalid proving state, an epoch must be proven before it can be finalized`);
241
245
  }
242
246
  const result = await this.provingPromise;
243
247
  if (result.status === 'failure') {
244
248
  throw new Error(`Epoch proving failed: ${result.reason}`);
245
249
  }
250
+ // TODO(MW): Move this? Requires async and don't want to force root methods to be async
251
+ // TODO(MW): EpochProvingState uses this.blocks.filter(b => !!b).length as total blocks, use this below:
252
+ const finalBlock = this.provingState.blocks[this.provingState.totalNumBlocks - 1];
253
+ if (!finalBlock || !finalBlock.endBlobAccumulator) {
254
+ throw new Error(`Epoch's final block not ready for finalize`);
255
+ }
256
+ const finalBatchedBlob = await finalBlock.endBlobAccumulator.finalize();
257
+ this.provingState.setFinalBatchedBlob(finalBatchedBlob);
246
258
  const epochProofResult = this.provingState.getEpochProofResult();
247
259
  pushTestData('epochProofResult', {
248
260
  proof: epochProofResult.proof.toString(),
@@ -314,11 +326,13 @@ const logger = createLogger('prover-client:orchestrator');
314
326
  async prepareBaseParityInputs(l1ToL2Messages, db) {
315
327
  const l1ToL2MessagesPadded = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, 'Too many L1 to L2 messages');
316
328
  const baseParityInputs = times(NUM_BASE_PARITY_PER_ROOT_PARITY, (i)=>BaseParityInputs.fromSlice(l1ToL2MessagesPadded, i, getVKTreeRoot()));
329
+ const l1ToL2MessageTreeSnapshot = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, db);
317
330
  const l1ToL2MessageSubtreeSiblingPath = assertLength(await getSubtreeSiblingPath(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, L1_TO_L2_MSG_SUBTREE_HEIGHT, db), L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH);
318
331
  // Update the local trees to include the new l1 to l2 messages
319
332
  await db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2MessagesPadded);
320
333
  const l1ToL2MessageTreeSnapshotAfterInsertion = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, db);
321
334
  return {
335
+ l1ToL2MessageTreeSnapshot,
322
336
  l1ToL2MessageSubtreeSiblingPath,
323
337
  l1ToL2MessageTreeSnapshotAfterInsertion,
324
338
  baseParityInputs
@@ -333,7 +347,7 @@ const logger = createLogger('prover-client:orchestrator');
333
347
  const db = this.dbs.get(provingState.blockNumber);
334
348
  // We build the base rollup inputs using a mock proof and verification key.
335
349
  // These will be overwritten later once we have proven the tube circuit and any public kernels
336
- const [ms, hints] = await elapsed(buildBaseRollupHints(tx, provingState.globalVariables, db, provingState.spongeBlobState));
350
+ const [ms, hints] = await elapsed(insertSideEffectsAndBuildBaseRollupHints(tx, provingState.globalVariables, provingState.l1ToL2MessageTreeSnapshotAfterInsertion, db, provingState.spongeBlobState));
337
351
  this.metrics.recordBaseRollupInputs(ms);
338
352
  const promises = [
339
353
  MerkleTreeId.NOTE_HASH_TREE,
@@ -371,7 +385,6 @@ const logger = createLogger('prover-client:orchestrator');
371
385
  logger.debug(`Enqueuing deferred proving base rollup for ${processedTx.hash.toString()}`);
372
386
  this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, `ProvingOrchestrator.prover.${inputs instanceof PrivateBaseRollupInputs ? 'getPrivateBaseRollupProof' : 'getPublicBaseRollupProof'}`, {
373
387
  [Attributes.TX_HASH]: processedTx.hash.toString(),
374
- [Attributes.PROTOCOL_CIRCUIT_TYPE]: 'server',
375
388
  [Attributes.PROTOCOL_CIRCUIT_NAME]: rollupType
376
389
  }, (signal)=>{
377
390
  if (inputs instanceof PrivateBaseRollupInputs) {
@@ -424,7 +437,6 @@ const logger = createLogger('prover-client:orchestrator');
424
437
  }
425
438
  this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getTubeProof', {
426
439
  [Attributes.TX_HASH]: txHash,
427
- [Attributes.PROTOCOL_CIRCUIT_TYPE]: 'server',
428
440
  [Attributes.PROTOCOL_CIRCUIT_NAME]: 'tube-circuit'
429
441
  }, (signal)=>this.prover.getTubeProof(inputs, signal, this.provingState.epochNumber)), handler);
430
442
  }
@@ -437,7 +449,6 @@ const logger = createLogger('prover-client:orchestrator');
437
449
  }
438
450
  const inputs = provingState.getMergeRollupInputs(location);
439
451
  this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getMergeRollupProof', {
440
- [Attributes.PROTOCOL_CIRCUIT_TYPE]: 'server',
441
452
  [Attributes.PROTOCOL_CIRCUIT_NAME]: 'merge-rollup'
442
453
  }, (signal)=>this.prover.getMergeRollupProof(inputs, signal, provingState.epochNumber)), async (result)=>{
443
454
  provingState.setMergeRollupProof(location, result);
@@ -451,10 +462,9 @@ const logger = createLogger('prover-client:orchestrator');
451
462
  return;
452
463
  }
453
464
  provingState.blockRootRollupStarted = true;
454
- const { rollupType, inputs } = await provingState.getBlockRootRollupTypeAndInputs(this.proverId);
465
+ const { rollupType, inputs } = await provingState.getBlockRootRollupTypeAndInputs();
455
466
  logger.debug(`Enqueuing ${rollupType} for block ${provingState.blockNumber} with ${provingState.newL1ToL2Messages.length} l1 to l2 msgs.`);
456
467
  this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getBlockRootRollupProof', {
457
- [Attributes.PROTOCOL_CIRCUIT_TYPE]: 'server',
458
468
  [Attributes.PROTOCOL_CIRCUIT_NAME]: rollupType
459
469
  }, (signal)=>{
460
470
  if (inputs instanceof EmptyBlockRootRollupInputs) {
@@ -466,17 +476,29 @@ const logger = createLogger('prover-client:orchestrator');
466
476
  }
467
477
  }), async (result)=>{
468
478
  provingState.setBlockRootRollupProof(result);
469
- const header = await provingState.buildHeaderFromProvingOutputs(logger);
479
+ const header = await provingState.buildHeaderFromProvingOutputs();
470
480
  if (!(await header.hash()).equals(await provingState.block.header.hash())) {
471
- logger.error(`Block header mismatch\nCircuit:${inspect(header)}\nComputed:${inspect(provingState.block.header)}`);
472
- provingState.reject(`Block header hash mismatch`);
481
+ logger.error(`Block header mismatch.\nCircuit: ${inspect(header)}\nComputed: ${inspect(provingState.block.header)}`);
482
+ provingState.reject(`Block header hash mismatch.`);
483
+ }
484
+ const dbArchiveRoot = provingState.block.archive.root;
485
+ const circuitArchiveRoot = result.inputs.newArchive.root;
486
+ if (!dbArchiveRoot.equals(circuitArchiveRoot)) {
487
+ logger.error(`New archive root mismatch.\nCircuit: ${result.inputs.newArchive.root}\nComputed: ${dbArchiveRoot}`);
488
+ provingState.reject(`New archive root mismatch.`);
489
+ }
490
+ const endBlobAccumulatorPublicInputs = BlobAccumulatorPublicInputs.fromBatchedBlobAccumulator(provingState.endBlobAccumulator);
491
+ const circuitEndBlobAccumulatorState = result.inputs.blobPublicInputs.endBlobAccumulator;
492
+ if (!circuitEndBlobAccumulatorState.equals(endBlobAccumulatorPublicInputs)) {
493
+ logger.error(`Blob accumulator state mismatch.\nCircuit: ${inspect(circuitEndBlobAccumulatorState)}\nComputed: ${inspect(endBlobAccumulatorPublicInputs)}`);
494
+ provingState.reject(`Blob accumulator state mismatch.`);
473
495
  }
474
496
  logger.debug(`Completed ${rollupType} proof for block ${provingState.block.number}`);
475
497
  // validatePartialState(result.inputs.end, tx.treeSnapshots); // TODO(palla/prover)
476
498
  const epochProvingState = this.provingState;
477
499
  const leafLocation = epochProvingState.setBlockRootRollupProof(provingState.index, result);
478
500
  if (epochProvingState.totalNumBlocks === 1) {
479
- await this.enqueueEpochPadding(epochProvingState);
501
+ this.enqueueEpochPadding(epochProvingState);
480
502
  } else {
481
503
  this.checkAndEnqueueNextBlockMergeRollup(epochProvingState, leafLocation);
482
504
  }
@@ -490,7 +512,6 @@ const logger = createLogger('prover-client:orchestrator');
490
512
  return;
491
513
  }
492
514
  this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getBaseParityProof', {
493
- [Attributes.PROTOCOL_CIRCUIT_TYPE]: 'server',
494
515
  [Attributes.PROTOCOL_CIRCUIT_NAME]: 'base-parity'
495
516
  }, (signal)=>this.prover.getBaseParityProof(inputs, signal, provingState.epochNumber)), (provingOutput)=>{
496
517
  provingState.setBaseParityProof(index, provingOutput);
@@ -512,7 +533,6 @@ const logger = createLogger('prover-client:orchestrator');
512
533
  }
513
534
  const inputs = provingState.getRootParityInputs();
514
535
  this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getRootParityProof', {
515
- [Attributes.PROTOCOL_CIRCUIT_TYPE]: 'server',
516
536
  [Attributes.PROTOCOL_CIRCUIT_NAME]: 'root-parity'
517
537
  }, (signal)=>this.prover.getRootParityProof(inputs, signal, provingState.epochNumber)), async (result)=>{
518
538
  provingState.setRootParityProof(result);
@@ -528,24 +548,22 @@ const logger = createLogger('prover-client:orchestrator');
528
548
  }
529
549
  const inputs = provingState.getBlockMergeRollupInputs(location);
530
550
  this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getBlockMergeRollupProof', {
531
- [Attributes.PROTOCOL_CIRCUIT_TYPE]: 'server',
532
551
  [Attributes.PROTOCOL_CIRCUIT_NAME]: 'block-merge-rollup'
533
552
  }, (signal)=>this.prover.getBlockMergeRollupProof(inputs, signal, provingState.epochNumber)), (result)=>{
534
553
  provingState.setBlockMergeRollupProof(location, result);
535
554
  this.checkAndEnqueueNextBlockMergeRollup(provingState, location);
536
555
  });
537
556
  }
538
- async enqueueEpochPadding(provingState) {
557
+ enqueueEpochPadding(provingState) {
539
558
  if (!provingState.verifyState()) {
540
559
  logger.debug('Not running epoch padding. State no longer valid.');
541
560
  return;
542
561
  }
543
- logger.debug('Padding epoch proof with an empty block root proof.');
544
- const inputs = await provingState.getPaddingBlockRootInputs(this.proverId);
545
- this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getEmptyBlockRootRollupProof', {
546
- [Attributes.PROTOCOL_CIRCUIT_TYPE]: 'server',
547
- [Attributes.PROTOCOL_CIRCUIT_NAME]: 'empty-block-root-rollup'
548
- }, (signal)=>this.prover.getEmptyBlockRootRollupProof(inputs, signal, provingState.epochNumber)), (result)=>{
562
+ logger.debug('Padding epoch proof with a padding block root proof.');
563
+ const inputs = provingState.getPaddingBlockRootInputs();
564
+ this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getPaddingBlockRootRollupProof', {
565
+ [Attributes.PROTOCOL_CIRCUIT_NAME]: 'padding-block-root-rollup'
566
+ }, (signal)=>this.prover.getPaddingBlockRootRollupProof(inputs, signal, provingState.epochNumber)), (result)=>{
549
567
  logger.debug('Completed proof for padding block root.');
550
568
  provingState.setPaddingBlockRootProof(result);
551
569
  this.checkAndEnqueueRootRollup(provingState);
@@ -558,9 +576,8 @@ const logger = createLogger('prover-client:orchestrator');
558
576
  return;
559
577
  }
560
578
  logger.debug(`Preparing root rollup`);
561
- const inputs = provingState.getRootRollupInputs(this.proverId);
579
+ const inputs = provingState.getRootRollupInputs();
562
580
  this.deferredProving(provingState, wrapCallbackInSpan(this.tracer, 'ProvingOrchestrator.prover.getRootRollupProof', {
563
- [Attributes.PROTOCOL_CIRCUIT_TYPE]: 'server',
564
581
  [Attributes.PROTOCOL_CIRCUIT_NAME]: 'root-rollup'
565
582
  }, (signal)=>this.prover.getRootRollupProof(inputs, signal, provingState.epochNumber)), (result)=>{
566
583
  logger.verbose(`Orchestrator completed root rollup for epoch ${provingState.epochNumber}`);
@@ -582,15 +599,17 @@ const logger = createLogger('prover-client:orchestrator');
582
599
  }
583
600
  }
584
601
  async checkAndEnqueueBlockRootRollup(provingState) {
602
+ const blockNumber = provingState.blockNumber;
603
+ // Accumulate as far as we can, in case blocks came in out of order and we are behind:
604
+ await this.provingState?.setBlobAccumulators(blockNumber);
585
605
  if (!provingState.isReadyForBlockRootRollup()) {
586
- logger.debug('Not ready for root rollup');
606
+ logger.debug('Not ready for block root rollup');
587
607
  return;
588
608
  }
589
609
  if (provingState.blockRootRollupStarted) {
590
610
  logger.debug('Block root rollup already started');
591
611
  return;
592
612
  }
593
- const blockNumber = provingState.blockNumber;
594
613
  // TODO(palla/prover): This closes the fork only on the happy path. If this epoch orchestrator
595
614
  // is aborted and never reaches this point, it will leak the fork. We need to add a global cleanup,
596
615
  // but have to make sure it only runs once all operations are completed, otherwise some function here
@@ -635,17 +654,24 @@ const logger = createLogger('prover-client:orchestrator');
635
654
  }, async (signal)=>{
636
655
  const inputs = txProvingState.getAvmInputs();
637
656
  try {
638
- return await this.prover.getAvmProof(inputs, signal, provingState.epochNumber);
657
+ // TODO(#14234)[Unconditional PIs validation]: Remove the whole try-catch logic and
658
+ // just keep the next line but removing the second argument (false).
659
+ return await this.prover.getAvmProof(inputs, false, signal, provingState.epochNumber);
639
660
  } catch (err) {
640
661
  if (process.env.AVM_PROVING_STRICT) {
641
662
  logger.error(`Error thrown when proving AVM circuit with AVM_PROVING_STRICT on`, err);
642
663
  throw err;
643
664
  } else {
644
- logger.warn(`Error thrown when proving AVM circuit but AVM_PROVING_STRICT is off. Faking AVM proof and carrying on. ${inspect(err)}.`);
645
- return {
646
- proof: makeEmptyRecursiveProof(AVM_PROOF_LENGTH_IN_FIELDS),
647
- verificationKey: VerificationKeyData.makeFake(AVM_VERIFICATION_KEY_LENGTH_IN_FIELDS)
648
- };
665
+ logger.warn(`Error thrown when proving AVM circuit but AVM_PROVING_STRICT is off. Use snapshotted
666
+ AVM inputs and carrying on. ${inspect(err)}.`);
667
+ try {
668
+ this.metrics.incAvmFallback();
669
+ const snapshotAvmPrivateInputs = readAvmMinimalPublicTxInputsFromFile();
670
+ return await this.prover.getAvmProof(snapshotAvmPrivateInputs, true, signal, provingState.epochNumber);
671
+ } catch (err) {
672
+ logger.error(`Error thrown when proving snapshotted AVM inputs.`, err);
673
+ throw err;
674
+ }
649
675
  }
650
676
  }
651
677
  });
@@ -667,7 +693,7 @@ const logger = createLogger('prover-client:orchestrator');
667
693
  }
668
694
  _ts_decorate([
669
695
  trackSpan('ProvingOrchestrator.startNewBlock', (globalVariables)=>({
670
- [Attributes.BLOCK_NUMBER]: globalVariables.blockNumber.toNumber()
696
+ [Attributes.BLOCK_NUMBER]: globalVariables.blockNumber
671
697
  }))
672
698
  ], ProvingOrchestrator.prototype, "startNewBlock", null);
673
699
  _ts_decorate([
@@ -2,7 +2,9 @@ import { type TelemetryClient, type Tracer } from '@aztec/telemetry-client';
2
2
  export declare class ProvingOrchestratorMetrics {
3
3
  readonly tracer: Tracer;
4
4
  private baseRollupInputsDuration;
5
+ private avmFallbackCount;
5
6
  constructor(client: TelemetryClient, name?: string);
6
7
  recordBaseRollupInputs(durationMs: number): void;
8
+ incAvmFallback(): void;
7
9
  }
8
10
  //# sourceMappingURL=orchestrator_metrics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator_metrics.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,eAAe,EAAE,KAAK,MAAM,EAAa,MAAM,yBAAyB,CAAC;AAEhH,qBAAa,0BAA0B;IACrC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,wBAAwB,CAAY;gBAEhC,MAAM,EAAE,eAAe,EAAE,IAAI,SAAwB;IAWjE,sBAAsB,CAAC,UAAU,EAAE,MAAM;CAG1C"}
1
+ {"version":3,"file":"orchestrator_metrics.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator_metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,0BAA0B;IACrC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,OAAO,CAAC,wBAAwB,CAAY;IAC5C,OAAO,CAAC,gBAAgB,CAAgB;gBAE5B,MAAM,EAAE,eAAe,EAAE,IAAI,SAAwB;IAkBjE,sBAAsB,CAAC,UAAU,EAAE,MAAM;IAIzC,cAAc;CAGf"}