@aztec/prover-client 3.0.0-canary.a9708bd → 3.0.0-devnet.3

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 (72) hide show
  1. package/dest/block-factory/light.d.ts +5 -3
  2. package/dest/block-factory/light.d.ts.map +1 -1
  3. package/dest/block-factory/light.js +16 -9
  4. package/dest/mocks/fixtures.d.ts +4 -1
  5. package/dest/mocks/fixtures.d.ts.map +1 -1
  6. package/dest/mocks/fixtures.js +31 -3
  7. package/dest/mocks/test_context.d.ts +32 -9
  8. package/dest/mocks/test_context.d.ts.map +1 -1
  9. package/dest/mocks/test_context.js +78 -22
  10. package/dest/orchestrator/block-building-helpers.d.ts +33 -31
  11. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  12. package/dest/orchestrator/block-building-helpers.js +126 -137
  13. package/dest/orchestrator/block-proving-state.d.ts +60 -53
  14. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  15. package/dest/orchestrator/block-proving-state.js +214 -187
  16. package/dest/orchestrator/checkpoint-proving-state.d.ts +63 -0
  17. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +1 -0
  18. package/dest/orchestrator/checkpoint-proving-state.js +211 -0
  19. package/dest/orchestrator/epoch-proving-state.d.ts +34 -28
  20. package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
  21. package/dest/orchestrator/epoch-proving-state.js +125 -81
  22. package/dest/orchestrator/orchestrator.d.ts +26 -25
  23. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  24. package/dest/orchestrator/orchestrator.js +350 -218
  25. package/dest/orchestrator/tx-proving-state.d.ts +11 -9
  26. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  27. package/dest/orchestrator/tx-proving-state.js +26 -23
  28. package/dest/prover-client/server-epoch-prover.d.ts +8 -7
  29. package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
  30. package/dest/prover-client/server-epoch-prover.js +7 -7
  31. package/dest/proving_broker/broker_prover_facade.d.ts +20 -15
  32. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  33. package/dest/proving_broker/broker_prover_facade.js +36 -21
  34. package/dest/proving_broker/config.d.ts +8 -8
  35. package/dest/proving_broker/config.js +5 -5
  36. package/dest/proving_broker/factory.js +1 -1
  37. package/dest/proving_broker/fixtures.js +1 -1
  38. package/dest/proving_broker/proof_store/index.d.ts +1 -0
  39. package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
  40. package/dest/proving_broker/proof_store/index.js +1 -0
  41. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  42. package/dest/proving_broker/proving_broker.js +29 -18
  43. package/dest/proving_broker/proving_broker_database/persisted.js +5 -5
  44. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  45. package/dest/proving_broker/proving_job_controller.js +38 -18
  46. package/dest/test/mock_prover.d.ts +22 -17
  47. package/dest/test/mock_prover.d.ts.map +1 -1
  48. package/dest/test/mock_prover.js +35 -20
  49. package/package.json +16 -17
  50. package/src/block-factory/light.ts +35 -9
  51. package/src/mocks/fixtures.ts +39 -11
  52. package/src/mocks/test_context.ts +137 -31
  53. package/src/orchestrator/block-building-helpers.ts +213 -211
  54. package/src/orchestrator/block-proving-state.ts +235 -245
  55. package/src/orchestrator/checkpoint-proving-state.ts +299 -0
  56. package/src/orchestrator/epoch-proving-state.ts +169 -126
  57. package/src/orchestrator/orchestrator.ts +519 -286
  58. package/src/orchestrator/tx-proving-state.ts +45 -43
  59. package/src/prover-client/server-epoch-prover.ts +26 -16
  60. package/src/proving_broker/broker_prover_facade.ts +157 -88
  61. package/src/proving_broker/config.ts +7 -7
  62. package/src/proving_broker/factory.ts +1 -1
  63. package/src/proving_broker/fixtures.ts +1 -1
  64. package/src/proving_broker/proof_store/index.ts +1 -0
  65. package/src/proving_broker/proving_broker.ts +36 -18
  66. package/src/proving_broker/proving_broker_database/persisted.ts +5 -5
  67. package/src/proving_broker/proving_job_controller.ts +38 -18
  68. package/src/test/mock_prover.ts +142 -62
  69. package/dest/bin/get-proof-inputs.d.ts +0 -2
  70. package/dest/bin/get-proof-inputs.d.ts.map +0 -1
  71. package/dest/bin/get-proof-inputs.js +0 -51
  72. package/src/bin/get-proof-inputs.ts +0 -59
@@ -1,7 +1,8 @@
1
+ import { SpongeBlob } from '@aztec/blob-lib';
1
2
  import { Fr } from '@aztec/foundation/fields';
2
3
  import { L2Block } from '@aztec/stdlib/block';
3
4
  import type { IBlockFactory, MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
4
- import { type GlobalVariables, type ProcessedTx } from '@aztec/stdlib/tx';
5
+ import type { GlobalVariables, ProcessedTx } from '@aztec/stdlib/tx';
5
6
  import { type TelemetryClient } from '@aztec/telemetry-client';
6
7
  /**
7
8
  * Builds a block and its header from a set of processed tx without running any circuits.
@@ -20,10 +21,11 @@ export declare class LightweightBlockFactory implements IBlockFactory {
20
21
  private telemetry;
21
22
  private globalVariables?;
22
23
  private l1ToL2Messages?;
24
+ private startSpongeBlob?;
23
25
  private txs;
24
26
  private readonly logger;
25
27
  constructor(db: MerkleTreeWriteOperations, telemetry?: TelemetryClient);
26
- startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[]): Promise<void>;
28
+ startNewBlock(globalVariables: GlobalVariables, l1ToL2Messages: Fr[], startSpongeBlob?: SpongeBlob, isFirstBlock?: boolean): Promise<void>;
27
29
  addTxs(txs: ProcessedTx[]): Promise<void>;
28
30
  setBlockCompleted(): Promise<L2Block>;
29
31
  private buildBlock;
@@ -32,5 +34,5 @@ export declare class LightweightBlockFactory implements IBlockFactory {
32
34
  * Inserts the processed transactions into the DB, then creates a block.
33
35
  * @param db - A db fork to use for block building which WILL BE MODIFIED.
34
36
  */
35
- export declare function buildBlockWithCleanDB(txs: ProcessedTx[], globalVariables: GlobalVariables, l1ToL2Messages: Fr[], db: MerkleTreeWriteOperations, telemetry?: TelemetryClient): Promise<L2Block>;
37
+ export declare function buildBlockWithCleanDB(txs: ProcessedTx[], globalVariables: GlobalVariables, l1ToL2Messages: Fr[], db: MerkleTreeWriteOperations, startSpongeBlob?: SpongeBlob, isFirstBlock?: boolean, telemetry?: TelemetryClient): Promise<L2Block>;
36
38
  //# sourceMappingURL=light.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"light.d.ts","sourceRoot":"","sources":["../../src/block-factory/light.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEhG,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAmB,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAQnF;;;;;;;;;;;GAWG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IASzD,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,SAAS;IATnB,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAO;IAE9B,OAAO,CAAC,GAAG,CAA4B;IAEvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAG1D,EAAE,EAAE,yBAAyB,EAC7B,SAAS,GAAE,eAAsC;IAGrD,aAAa,CAAC,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1F,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;YAIvB,UAAU;CAwBzB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,EAAE,EAClB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,EAAE,EAAE,EACpB,EAAE,EAAE,yBAAyB,EAC7B,SAAS,GAAE,eAAsC,oBAWlD"}
1
+ {"version":3,"file":"light.d.ts","sourceRoot":"","sources":["../../src/block-factory/light.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEhG,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAQnF;;;;;;;;;;;GAWG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IASzD,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,SAAS;IATnB,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,cAAc,CAAC,CAAO;IAC9B,OAAO,CAAC,eAAe,CAAC,CAAa;IACrC,OAAO,CAAC,GAAG,CAA4B;IAEvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAG1D,EAAE,EAAE,yBAAyB,EAC7B,SAAS,GAAE,eAAsC;IAGrD,aAAa,CACjB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,EAAE,EAAE,EAEpB,eAAe,CAAC,EAAE,UAAU,EAE5B,YAAY,UAAO,GAClB,OAAO,CAAC,IAAI,CAAC;IAYhB,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;YAIvB,UAAU;CA2BzB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,EAAE,EAClB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,EAAE,EAAE,EACpB,EAAE,EAAE,yBAAyB,EAC7B,eAAe,CAAC,EAAE,UAAU,EAC5B,YAAY,UAAO,EACnB,SAAS,GAAE,eAAsC,oBAuBlD"}
@@ -5,7 +5,6 @@ import { Fr } from '@aztec/foundation/fields';
5
5
  import { createLogger } from '@aztec/foundation/log';
6
6
  import { L2Block } from '@aztec/stdlib/block';
7
7
  import { MerkleTreeId } from '@aztec/stdlib/trees';
8
- import { toNumBlobFields } from '@aztec/stdlib/tx';
9
8
  import { getTelemetryClient } from '@aztec/telemetry-client';
10
9
  import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffectsAndBuildBaseRollupHints } from '../orchestrator/block-building-helpers.js';
11
10
  /**
@@ -24,6 +23,7 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffectsAndBuildBa
24
23
  telemetry;
25
24
  globalVariables;
26
25
  l1ToL2Messages;
26
+ startSpongeBlob;
27
27
  txs;
28
28
  logger;
29
29
  constructor(db, telemetry = getTelemetryClient()){
@@ -31,13 +31,16 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffectsAndBuildBa
31
31
  this.telemetry = telemetry;
32
32
  this.logger = createLogger('lightweight-block-factory');
33
33
  }
34
- async startNewBlock(globalVariables, l1ToL2Messages) {
34
+ async startNewBlock(globalVariables, l1ToL2Messages, // Must be provided to generate the correct spongeBlobHash for the block header if there's more than one block in the checkpoint.
35
+ startSpongeBlob, // Only insert l1 to l2 messages for the first block in a checkpoint.
36
+ isFirstBlock = true) {
35
37
  this.logger.debug('Starting new block', {
36
38
  globalVariables: globalVariables.toInspect(),
37
39
  l1ToL2Messages
38
40
  });
39
41
  this.globalVariables = globalVariables;
40
- this.l1ToL2Messages = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP);
42
+ this.l1ToL2Messages = isFirstBlock ? padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP) : [];
43
+ this.startSpongeBlob = startSpongeBlob;
41
44
  this.txs = undefined;
42
45
  // Update L1 to L2 tree
43
46
  await this.db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, this.l1ToL2Messages);
@@ -56,9 +59,10 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffectsAndBuildBa
56
59
  return this.buildBlock();
57
60
  }
58
61
  async buildBlock() {
59
- const { header, body } = await buildHeaderAndBodyFromTxs(this.txs ?? [], this.globalVariables, this.l1ToL2Messages, this.db);
62
+ const { header, body } = await buildHeaderAndBodyFromTxs(this.txs ?? [], this.globalVariables, this.l1ToL2Messages, this.db, this.startSpongeBlob);
60
63
  header.state.validate();
61
- await this.db.updateArchive(header);
64
+ const blockHeader = header.toBlockHeader();
65
+ await this.db.updateArchive(blockHeader);
62
66
  const newArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, this.db);
63
67
  const block = new L2Block(newArchive, header, body);
64
68
  this.logger.debug(`Built block ${block.number}`, {
@@ -74,13 +78,16 @@ import { buildHeaderAndBodyFromTxs, getTreeSnapshot, insertSideEffectsAndBuildBa
74
78
  /**
75
79
  * Inserts the processed transactions into the DB, then creates a block.
76
80
  * @param db - A db fork to use for block building which WILL BE MODIFIED.
77
- */ export async function buildBlockWithCleanDB(txs, globalVariables, l1ToL2Messages, db, telemetry = getTelemetryClient()) {
78
- const spongeBlobState = SpongeBlob.init(toNumBlobFields(txs));
81
+ */ export async function buildBlockWithCleanDB(txs, globalVariables, l1ToL2Messages, db, startSpongeBlob, isFirstBlock = true, telemetry = getTelemetryClient()) {
82
+ const lastArchive = await getTreeSnapshot(MerkleTreeId.ARCHIVE, db);
79
83
  const builder = new LightweightBlockFactory(db, telemetry);
80
- await builder.startNewBlock(globalVariables, l1ToL2Messages);
84
+ await builder.startNewBlock(globalVariables, l1ToL2Messages, startSpongeBlob, isFirstBlock);
81
85
  const l1ToL2MessageTree = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, db);
82
86
  for (const tx of txs){
83
- await insertSideEffectsAndBuildBaseRollupHints(tx, globalVariables, l1ToL2MessageTree, db, spongeBlobState);
87
+ // startSpongeBlob and proverId are only used for constructing private inputs of the base rollup.
88
+ // Their values don't matter here because we are not using the return private inputs to build the block.
89
+ const proverId = Fr.ZERO;
90
+ await insertSideEffectsAndBuildBaseRollupHints(tx, lastArchive, l1ToL2MessageTree, startSpongeBlob?.clone() ?? SpongeBlob.empty(), proverId, db);
84
91
  }
85
92
  await builder.addTxs(txs);
86
93
  return await builder.setBlockCompleted();
@@ -1,6 +1,8 @@
1
1
  import type { Logger } from '@aztec/foundation/log';
2
+ import type { FieldsOf } from '@aztec/foundation/types';
2
3
  import { type CircuitSimulator } from '@aztec/simulator/server';
3
4
  import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
5
+ import { CheckpointConstantData } from '@aztec/stdlib/rollup';
4
6
  import type { ProcessedTx } from '@aztec/stdlib/tx';
5
7
  import { GlobalVariables } from '@aztec/stdlib/tx';
6
8
  export declare const getEnvironmentConfig: (logger: Logger) => Promise<{
@@ -16,5 +18,6 @@ export declare function getSimulator(config: {
16
18
  acvmBinaryPath: string | undefined;
17
19
  }, logger?: Logger): Promise<CircuitSimulator>;
18
20
  export declare const updateExpectedTreesFromTxs: (db: MerkleTreeWriteOperations, txs: ProcessedTx[]) => Promise<void>;
19
- export declare const makeGlobals: (blockNumber: number) => GlobalVariables;
21
+ export declare const makeGlobals: (blockNumber: number, slotNumber?: number, overrides?: Partial<FieldsOf<GlobalVariables> & FieldsOf<CheckpointConstantData>>) => GlobalVariables;
22
+ export declare const makeCheckpointConstants: (slotNumber: number, overrides?: Partial<FieldsOf<CheckpointConstantData>>) => CheckpointConstantData;
20
23
  //# sourceMappingURL=fixtures.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/mocks/fixtures.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,KAAK,gBAAgB,EAA+C,MAAM,yBAAyB,CAAC;AAG7G,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAiBnD,eAAO,MAAM,oBAAoB,GAAU,QAAQ,MAAM;;;;;;;cAkCxD,CAAC;AAEF,wBAAsB,YAAY,CAChC,MAAM,EAAE;IAAE,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EACxF,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,CAe3B;AAGD,eAAO,MAAM,0BAA0B,GAAU,IAAI,yBAAyB,EAAE,KAAK,WAAW,EAAE,kBAgBjG,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,aAAa,MAAM,oBAW9C,CAAC"}
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../src/mocks/fixtures.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAIxD,OAAO,EAAE,KAAK,gBAAgB,EAA+C,MAAM,yBAAyB,CAAC;AAG7G,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAiBnD,eAAO,MAAM,oBAAoB,GAAU,QAAQ,MAAM;;;;;;;cAkCxD,CAAC;AAEF,wBAAsB,YAAY,CAChC,MAAM,EAAE;IAAE,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EACxF,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,CAe3B;AAGD,eAAO,MAAM,0BAA0B,GAAU,IAAI,yBAAyB,EAAE,KAAK,WAAW,EAAE,kBAgBjG,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,aAAa,MAAM,EACnB,mBAAwB,EACxB,YAAW,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,sBAAsB,CAAC,CAAM,oBActF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,YAAY,MAAM,EAClB,YAAW,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAM,2BAc1D,CAAC"}
@@ -4,9 +4,12 @@ import { randomBytes } from '@aztec/foundation/crypto';
4
4
  import { EthAddress } from '@aztec/foundation/eth-address';
5
5
  import { Fr } from '@aztec/foundation/fields';
6
6
  import { fileURLToPath } from '@aztec/foundation/url';
7
+ import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
8
+ import { protocolContractsHash } from '@aztec/protocol-contracts';
7
9
  import { NativeACVMSimulator, WASMSimulatorWithBlobs } from '@aztec/simulator/server';
8
10
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
9
11
  import { GasFees } from '@aztec/stdlib/gas';
12
+ import { CheckpointConstantData } from '@aztec/stdlib/rollup';
10
13
  import { MerkleTreeId } from '@aztec/stdlib/trees';
11
14
  import { GlobalVariables } from '@aztec/stdlib/tx';
12
15
  import { promises as fs } from 'fs';
@@ -15,7 +18,7 @@ const { BB_RELEASE_DIR = 'cpp/build/bin', TEMP_DIR = '/tmp', BB_BINARY_PATH = ''
15
18
  // Determines if we have access to the bb binary and a tmp folder for temp files
16
19
  export const getEnvironmentConfig = async (logger)=>{
17
20
  try {
18
- const expectedBBPath = BB_BINARY_PATH ? BB_BINARY_PATH : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../barretenberg/', BB_RELEASE_DIR)}/bb`;
21
+ const expectedBBPath = BB_BINARY_PATH ? BB_BINARY_PATH : `${path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../../../barretenberg/', BB_RELEASE_DIR)}/bb-avm`;
19
22
  await fs.access(expectedBBPath, fs.constants.R_OK);
20
23
  const tempWorkingDirectory = `${TEMP_DIR}/${randomBytes(4).toString('hex')}`;
21
24
  const bbWorkingDirectory = BB_WORKING_DIRECTORY ? BB_WORKING_DIRECTORY : `${tempWorkingDirectory}/bb`;
@@ -72,6 +75,31 @@ export const updateExpectedTreesFromTxs = async (db, txs)=>{
72
75
  await db.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, tx.txEffect.publicDataWrites.map((write)=>write.toBuffer()));
73
76
  }
74
77
  };
75
- export const makeGlobals = (blockNumber)=>{
76
- return new GlobalVariables(Fr.ZERO, Fr.ZERO, blockNumber /** block number */ , new Fr(blockNumber), BigInt(blockNumber), EthAddress.ZERO, AztecAddress.ZERO, GasFees.empty());
78
+ export const makeGlobals = (blockNumber, slotNumber = blockNumber, overrides = {})=>{
79
+ const checkpointConstants = makeCheckpointConstants(slotNumber, overrides);
80
+ return GlobalVariables.from({
81
+ chainId: checkpointConstants.chainId,
82
+ version: checkpointConstants.version,
83
+ blockNumber,
84
+ slotNumber: new Fr(slotNumber),
85
+ timestamp: BigInt(blockNumber),
86
+ coinbase: checkpointConstants.coinbase,
87
+ feeRecipient: checkpointConstants.feeRecipient,
88
+ gasFees: checkpointConstants.gasFees,
89
+ ...overrides
90
+ });
91
+ };
92
+ export const makeCheckpointConstants = (slotNumber, overrides = {})=>{
93
+ return CheckpointConstantData.from({
94
+ chainId: Fr.ZERO,
95
+ version: Fr.ZERO,
96
+ vkTreeRoot: getVKTreeRoot(),
97
+ protocolContractsHash,
98
+ proverId: Fr.ZERO,
99
+ slotNumber: new Fr(slotNumber),
100
+ coinbase: EthAddress.ZERO,
101
+ feeRecipient: AztecAddress.ZERO,
102
+ gasFees: GasFees.empty(),
103
+ ...overrides
104
+ });
77
105
  };
@@ -1,19 +1,21 @@
1
1
  import type { BBProverConfig } from '@aztec/bb-prover';
2
2
  import { Fr } from '@aztec/foundation/fields';
3
3
  import type { Logger } from '@aztec/foundation/log';
4
+ import type { FieldsOf } from '@aztec/foundation/types';
4
5
  import { SimpleContractDataSource } from '@aztec/simulator/public/fixtures';
5
6
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
6
- import { type L2Block } from '@aztec/stdlib/block';
7
7
  import type { ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
8
+ import type { CheckpointConstantData } from '@aztec/stdlib/rollup';
8
9
  import { makeBloatedProcessedTx } from '@aztec/stdlib/testing';
9
- import { type AppendOnlyTreeSnapshot } from '@aztec/stdlib/trees';
10
10
  import { type BlockHeader, type GlobalVariables, type ProcessedTx, type Tx } from '@aztec/stdlib/tx';
11
11
  import type { MerkleTreeAdminDatabase } from '@aztec/world-state';
12
+ import type { BlockProvingState } from '../orchestrator/block-proving-state.js';
12
13
  import { ProvingOrchestrator } from '../orchestrator/index.js';
13
14
  import { BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
14
15
  import { TestBroker } from '../test/mock_prover.js';
15
16
  export declare class TestContext {
16
17
  worldState: MerkleTreeAdminDatabase;
18
+ firstCheckpointNumber: Fr;
17
19
  globalVariables: GlobalVariables;
18
20
  prover: ServerCircuitProver;
19
21
  broker: TestBroker;
@@ -25,26 +27,47 @@ export declare class TestContext {
25
27
  logger: Logger;
26
28
  private headers;
27
29
  private feePayerBalance;
28
- constructor(worldState: MerkleTreeAdminDatabase, globalVariables: GlobalVariables, prover: ServerCircuitProver, broker: TestBroker, brokerProverFacade: BrokerCircuitProverFacade, orchestrator: TestProvingOrchestrator, blockNumber: number, feePayer: AztecAddress, initialFeePayerBalance: Fr, directoriesToCleanup: string[], logger: Logger);
30
+ constructor(worldState: MerkleTreeAdminDatabase, firstCheckpointNumber: Fr, globalVariables: GlobalVariables, prover: ServerCircuitProver, broker: TestBroker, brokerProverFacade: BrokerCircuitProverFacade, orchestrator: TestProvingOrchestrator, blockNumber: number, feePayer: AztecAddress, initialFeePayerBalance: Fr, directoriesToCleanup: string[], logger: Logger);
29
31
  get epochProver(): TestProvingOrchestrator;
30
- static new(logger: Logger, { proverCount, createProver, blockNumber, }?: {
32
+ getCheckpointConstants(checkpointIndex?: number): CheckpointConstantData;
33
+ static new(logger: Logger, { proverCount, createProver, slotNumber, blockNumber, }?: {
31
34
  proverCount?: number;
32
35
  createProver?: (bbConfig: BBProverConfig) => Promise<ServerCircuitProver>;
36
+ slotNumber?: number;
33
37
  blockNumber?: number;
34
38
  }): Promise<TestContext>;
35
39
  getFork(): Promise<import("@aztec/stdlib/trees").MerkleTreeWriteOperations>;
36
40
  getBlockHeader(blockNumber: 0): BlockHeader;
37
41
  getBlockHeader(blockNumber: number): BlockHeader | undefined;
38
- setBlockHeader(header: BlockHeader, blockNumber: number): void;
39
42
  getPreviousBlockHeader(currentBlockNumber?: number): BlockHeader;
40
43
  cleanup(): Promise<void>;
41
- private makeProcessedTx;
44
+ makeProcessedTx(opts?: Parameters<typeof makeBloatedProcessedTx>[0]): Promise<ProcessedTx>;
42
45
  /** Creates a block with the given number of txs and adds it to world-state */
43
- makePendingBlock(numTxs: number, numL1ToL2Messages?: number, blockNumOrGlobals?: GlobalVariables | number, makeProcessedTxOpts?: (index: number) => Partial<Parameters<typeof makeBloatedProcessedTx>[0]>): Promise<{
44
- block: L2Block;
46
+ makePendingBlock(numTxs: number, { checkpointIndex, numL1ToL2Messages, blockNumber, makeProcessedTxOpts, }?: {
47
+ checkpointIndex?: number;
48
+ numL1ToL2Messages?: number;
49
+ blockNumber?: number;
50
+ makeProcessedTxOpts?: (index: number) => Partial<Parameters<typeof makeBloatedProcessedTx>[0]>;
51
+ }): Promise<{
52
+ block: import("@aztec/stdlib/block").L2Block;
45
53
  txs: ProcessedTx[];
46
54
  l1ToL2Messages: Fr[];
47
55
  }>;
56
+ makePendingBlocksInCheckpoint(numBlocks: number, { checkpointIndex, numTxsPerBlock, numL1ToL2Messages, firstBlockNumber, makeGlobalVariablesOpts, makeProcessedTxOpts, }?: {
57
+ checkpointIndex?: number;
58
+ numTxsPerBlock?: number | number[];
59
+ numL1ToL2Messages?: number;
60
+ firstBlockNumber?: number;
61
+ makeGlobalVariablesOpts?: (blockNumber: number, checkpointIndex: number) => Partial<FieldsOf<GlobalVariables> & FieldsOf<CheckpointConstantData>>;
62
+ makeProcessedTxOpts?: (blockGlobalVariables: GlobalVariables, txIndex: number) => Partial<Parameters<typeof makeBloatedProcessedTx>[0]>;
63
+ }): Promise<{
64
+ blocks: {
65
+ header: BlockHeader;
66
+ txs: ProcessedTx[];
67
+ }[];
68
+ l1ToL2Messages: Fr[];
69
+ blobFields: Fr[];
70
+ }>;
48
71
  processPublicFunctions(txs: Tx[], { maxTransactions, numL1ToL2Messages, contractDataSource, }?: {
49
72
  maxTransactions?: number;
50
73
  numL1ToL2Messages?: number;
@@ -54,7 +77,7 @@ export declare class TestContext {
54
77
  }
55
78
  declare class TestProvingOrchestrator extends ProvingOrchestrator {
56
79
  isVerifyBuiltBlockAgainstSyncedStateEnabled: boolean;
57
- protected verifyBuiltBlockAgainstSyncedState(l2Block: L2Block, newArchive: AppendOnlyTreeSnapshot): Promise<void>;
80
+ protected verifyBuiltBlockAgainstSyncedState(provingState: BlockProvingState): Promise<void>;
58
81
  }
59
82
  export {};
60
83
  //# sourceMappingURL=test_context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test_context.d.ts","sourceRoot":"","sources":["../../src/mocks/test_context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test_context.d.ts","sourceRoot":"","sources":["../../src/mocks/test_context.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,32 @@
1
+ import { TestCircuitProver } from '@aztec/bb-prover';
2
+ import { SpongeBlob } from '@aztec/blob-lib';
1
3
  import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
2
4
  import { padArrayEnd, times, timesParallel } from '@aztec/foundation/collection';
3
5
  import { Fr } from '@aztec/foundation/fields';
4
6
  import { TestDateProvider } from '@aztec/foundation/timer';
5
7
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
6
- import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
8
+ import { ProtocolContractsList } from '@aztec/protocol-contracts';
7
9
  import { computeFeePayerBalanceLeafSlot } from '@aztec/protocol-contracts/fee-juice';
8
10
  import { SimpleContractDataSource } from '@aztec/simulator/public/fixtures';
9
11
  import { PublicProcessorFactory } from '@aztec/simulator/server';
10
12
  import { PublicDataWrite } from '@aztec/stdlib/avm';
11
13
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
12
14
  import { EthAddress } from '@aztec/stdlib/block';
15
+ import { getCheckpointBlobFields } from '@aztec/stdlib/checkpoint';
13
16
  import { makeBloatedProcessedTx } from '@aztec/stdlib/testing';
14
17
  import { MerkleTreeId, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
15
18
  import { TreeSnapshots } from '@aztec/stdlib/tx';
16
19
  import { NativeWorldStateService } from '@aztec/world-state/native';
17
20
  import { promises as fs } from 'fs';
18
- // TODO(#12613) This means of sharing test code is not ideal.
19
- // eslint-disable-next-line import/no-relative-packages
20
- import { TestCircuitProver } from '../../../bb-prover/src/test/test_circuit_prover.js';
21
21
  import { buildBlockWithCleanDB } from '../block-factory/light.js';
22
22
  import { getTreeSnapshot } from '../orchestrator/block-building-helpers.js';
23
23
  import { ProvingOrchestrator } from '../orchestrator/index.js';
24
24
  import { BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
25
25
  import { TestBroker } from '../test/mock_prover.js';
26
- import { getEnvironmentConfig, getSimulator, makeGlobals, updateExpectedTreesFromTxs } from './fixtures.js';
26
+ import { getEnvironmentConfig, getSimulator, makeCheckpointConstants, makeGlobals, updateExpectedTreesFromTxs } from './fixtures.js';
27
27
  export class TestContext {
28
28
  worldState;
29
+ firstCheckpointNumber;
29
30
  globalVariables;
30
31
  prover;
31
32
  broker;
@@ -37,8 +38,9 @@ export class TestContext {
37
38
  logger;
38
39
  headers;
39
40
  feePayerBalance;
40
- constructor(worldState, globalVariables, prover, broker, brokerProverFacade, orchestrator, blockNumber, feePayer, initialFeePayerBalance, directoriesToCleanup, logger){
41
+ constructor(worldState, firstCheckpointNumber, globalVariables, prover, broker, brokerProverFacade, orchestrator, blockNumber, feePayer, initialFeePayerBalance, directoriesToCleanup, logger){
41
42
  this.worldState = worldState;
43
+ this.firstCheckpointNumber = firstCheckpointNumber;
42
44
  this.globalVariables = globalVariables;
43
45
  this.prover = prover;
44
46
  this.broker = broker;
@@ -54,9 +56,13 @@ export class TestContext {
54
56
  get epochProver() {
55
57
  return this.orchestrator;
56
58
  }
57
- static async new(logger, { proverCount = 4, createProver = async (bbConfig)=>new TestCircuitProver(await getSimulator(bbConfig, logger)), blockNumber = 1 } = {}) {
59
+ getCheckpointConstants(checkpointIndex = 0) {
60
+ return makeCheckpointConstants(this.firstCheckpointNumber.toNumber() + checkpointIndex);
61
+ }
62
+ static async new(logger, { proverCount = 4, createProver = async (bbConfig)=>new TestCircuitProver(await getSimulator(bbConfig, logger)), slotNumber = 1, blockNumber = 1 } = {}) {
58
63
  const directoriesToCleanup = [];
59
- const globalVariables = makeGlobals(blockNumber);
64
+ const firstCheckpointNumber = new Fr(slotNumber);
65
+ const globalVariables = makeGlobals(blockNumber, slotNumber);
60
66
  const feePayer = AztecAddress.fromNumber(42222);
61
67
  const initialFeePayerBalance = new Fr(10n ** 20n);
62
68
  const feePayerSlot = await computeFeePayerBalanceLeafSlot(feePayer);
@@ -89,7 +95,7 @@ export class TestContext {
89
95
  const orchestrator = new TestProvingOrchestrator(ws, facade, EthAddress.ZERO);
90
96
  await broker.start();
91
97
  facade.start();
92
- return new this(ws, globalVariables, localProver, broker, facade, orchestrator, blockNumber, feePayer, initialFeePayerBalance, directoriesToCleanup, logger);
98
+ return new this(ws, firstCheckpointNumber, globalVariables, localProver, broker, facade, orchestrator, blockNumber, feePayer, initialFeePayerBalance, directoriesToCleanup, logger);
93
99
  }
94
100
  getFork() {
95
101
  return this.worldState.fork();
@@ -97,9 +103,6 @@ export class TestContext {
97
103
  getBlockHeader(blockNumber = 0) {
98
104
  return blockNumber === 0 ? this.worldState.getCommitted().getInitialHeader() : this.headers.get(blockNumber);
99
105
  }
100
- setBlockHeader(header, blockNumber) {
101
- this.headers.set(blockNumber, header);
102
- }
103
106
  getPreviousBlockHeader(currentBlockNumber = this.blockNumber) {
104
107
  return this.getBlockHeader(currentBlockNumber - 1);
105
108
  }
@@ -119,13 +122,14 @@ export class TestContext {
119
122
  }
120
123
  }
121
124
  async makeProcessedTx(opts) {
122
- const blockNum = (opts?.globalVariables ?? this.globalVariables).blockNumber;
123
- const header = this.getBlockHeader(blockNum - 1);
125
+ const globalVariables = opts?.globalVariables ?? this.globalVariables;
126
+ const blockNumber = globalVariables.blockNumber;
127
+ const header = opts?.header ?? this.getBlockHeader(blockNumber - 1);
124
128
  const tx = await makeBloatedProcessedTx({
125
129
  header,
126
130
  vkTreeRoot: getVKTreeRoot(),
127
- protocolContractTreeRoot,
128
- globalVariables: this.globalVariables,
131
+ protocolContracts: ProtocolContractsList,
132
+ globalVariables,
129
133
  feePayer: this.feePayer,
130
134
  ...opts
131
135
  });
@@ -136,8 +140,9 @@ export class TestContext {
136
140
  }
137
141
  return tx;
138
142
  }
139
- /** Creates a block with the given number of txs and adds it to world-state */ async makePendingBlock(numTxs, numL1ToL2Messages = 0, blockNumOrGlobals = this.globalVariables, makeProcessedTxOpts = ()=>({})) {
140
- const globalVariables = typeof blockNumOrGlobals === 'number' ? makeGlobals(blockNumOrGlobals) : blockNumOrGlobals;
143
+ /** Creates a block with the given number of txs and adds it to world-state */ async makePendingBlock(numTxs, { checkpointIndex = 0, numL1ToL2Messages = 0, blockNumber = this.blockNumber, makeProcessedTxOpts = ()=>({}) } = {}) {
144
+ const slotNumber = this.firstCheckpointNumber.toNumber() + checkpointIndex;
145
+ const globalVariables = makeGlobals(blockNumber, slotNumber);
141
146
  const blockNum = globalVariables.blockNumber;
142
147
  const db = await this.worldState.fork();
143
148
  const l1ToL2Messages = times(numL1ToL2Messages, (i)=>new Fr(blockNum * 100 + i));
@@ -152,7 +157,7 @@ export class TestContext {
152
157
  }));
153
158
  await this.setTreeRoots(txs);
154
159
  const block = await buildBlockWithCleanDB(txs, globalVariables, l1ToL2Messages, db);
155
- this.headers.set(blockNum, block.header);
160
+ this.headers.set(blockNum, block.getBlockHeader());
156
161
  await this.worldState.handleL2BlockAndMessages(block, l1ToL2Messages);
157
162
  return {
158
163
  block,
@@ -160,12 +165,63 @@ export class TestContext {
160
165
  l1ToL2Messages
161
166
  };
162
167
  }
168
+ async makePendingBlocksInCheckpoint(numBlocks, { checkpointIndex = 0, numTxsPerBlock = 1, numL1ToL2Messages = 0, firstBlockNumber = this.blockNumber + checkpointIndex * numBlocks, makeGlobalVariablesOpts = ()=>({}), makeProcessedTxOpts = ()=>({}) } = {}) {
169
+ const slotNumber = this.firstCheckpointNumber.toNumber() + checkpointIndex;
170
+ const l1ToL2Messages = times(numL1ToL2Messages, (i)=>new Fr(slotNumber * 100 + i));
171
+ const merkleTrees = await this.worldState.fork();
172
+ await merkleTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP));
173
+ const newL1ToL2Snapshot = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, merkleTrees);
174
+ const blockGlobalVariables = times(numBlocks, (i)=>makeGlobals(firstBlockNumber + i, slotNumber, makeGlobalVariablesOpts(firstBlockNumber + i, checkpointIndex)));
175
+ let totalTxs = 0;
176
+ const blockTxs = await timesParallel(numBlocks, (blockIndex)=>{
177
+ const txIndexOffset = totalTxs;
178
+ const numTxs = typeof numTxsPerBlock === 'number' ? numTxsPerBlock : numTxsPerBlock[blockIndex];
179
+ totalTxs += numTxs;
180
+ return timesParallel(numTxs, (txIndex)=>this.makeProcessedTx({
181
+ seed: (txIndexOffset + txIndex + 1) * 321 + (checkpointIndex + 1) * 123456,
182
+ globalVariables: blockGlobalVariables[blockIndex],
183
+ header: this.getBlockHeader(firstBlockNumber - 1),
184
+ newL1ToL2Snapshot,
185
+ ...makeProcessedTxOpts(blockGlobalVariables[blockIndex], txIndexOffset + txIndex)
186
+ }));
187
+ });
188
+ const blobFields = getCheckpointBlobFields(blockTxs.map((txs)=>txs.map((tx)=>tx.txEffect)));
189
+ const spongeBlobState = await SpongeBlob.init(blobFields.length);
190
+ const blocks = [];
191
+ for(let i = 0; i < numBlocks; i++){
192
+ const isFirstBlock = i === 0;
193
+ const blockNumber = firstBlockNumber + i;
194
+ const globalVariables = blockGlobalVariables[i];
195
+ const txs = blockTxs[i];
196
+ await this.setTreeRoots(txs);
197
+ const fork = await this.worldState.fork();
198
+ const blockMsgs = isFirstBlock ? l1ToL2Messages : [];
199
+ const block = await buildBlockWithCleanDB(txs, globalVariables, blockMsgs, fork, spongeBlobState, isFirstBlock);
200
+ const header = block.getBlockHeader();
201
+ this.headers.set(blockNumber, header);
202
+ await this.worldState.handleL2BlockAndMessages(block, blockMsgs, isFirstBlock);
203
+ const blockBlobFields = block.body.toBlobFields();
204
+ await spongeBlobState.absorb(blockBlobFields);
205
+ blocks.push({
206
+ header,
207
+ txs
208
+ });
209
+ }
210
+ return {
211
+ blocks,
212
+ l1ToL2Messages,
213
+ blobFields
214
+ };
215
+ }
163
216
  async processPublicFunctions(txs, { maxTransactions = txs.length, numL1ToL2Messages = 0, contractDataSource } = {}) {
164
217
  const l1ToL2Messages = times(numL1ToL2Messages, (i)=>new Fr(this.blockNumber * 100 + i));
165
218
  const merkleTrees = await this.worldState.fork();
166
219
  await merkleTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP));
167
220
  const processorFactory = new PublicProcessorFactory(contractDataSource ?? new SimpleContractDataSource(), new TestDateProvider());
168
- const publicProcessor = processorFactory.create(merkleTrees, this.globalVariables, /*skipFeeEnforcement=*/ false);
221
+ const publicProcessor = processorFactory.create(merkleTrees, this.globalVariables, {
222
+ skipFeeEnforcement: false,
223
+ clientInitiatedSimulation: false
224
+ });
169
225
  return await publicProcessor.process(txs, {
170
226
  maxTransactions
171
227
  });
@@ -190,9 +246,9 @@ class TestProvingOrchestrator extends ProvingOrchestrator {
190
246
  isVerifyBuiltBlockAgainstSyncedStateEnabled = false;
191
247
  // Disable this check by default, since it requires seeding world state with the block being built
192
248
  // This is only enabled in some tests with multiple blocks that populate the pending chain via makePendingBlock
193
- verifyBuiltBlockAgainstSyncedState(l2Block, newArchive) {
249
+ verifyBuiltBlockAgainstSyncedState(provingState) {
194
250
  if (this.isVerifyBuiltBlockAgainstSyncedStateEnabled) {
195
- return super.verifyBuiltBlockAgainstSyncedState(l2Block, newArchive);
251
+ return super.verifyBuiltBlockAgainstSyncedState(provingState);
196
252
  }
197
253
  return Promise.resolve();
198
254
  }
@@ -1,14 +1,13 @@
1
- import { BatchedBlobAccumulator, Blob, type SpongeBlob } from '@aztec/blob-lib';
2
- import { BLS12Point, Fr } from '@aztec/foundation/fields';
3
- import { type Tuple } from '@aztec/foundation/serialize';
1
+ import { BatchedBlobAccumulator, SpongeBlob } from '@aztec/blob-lib';
2
+ import { Fr } from '@aztec/foundation/fields';
3
+ import { type Bufferable, type Tuple } from '@aztec/foundation/serialize';
4
4
  import { MembershipWitness } from '@aztec/foundation/trees';
5
- import { PublicDataHint } from '@aztec/stdlib/avm';
6
- import { Body } from '@aztec/stdlib/block';
7
- import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
8
- import type { ParityPublicInputs } from '@aztec/stdlib/parity';
9
- import { type BaseOrMergeRollupPublicInputs, type BlockRootOrBlockMergePublicInputs, PrivateBaseRollupHints, PublicBaseRollupHints } from '@aztec/stdlib/rollup';
5
+ import { Body, L2BlockHeader } from '@aztec/stdlib/block';
6
+ import type { MerkleTreeWriteOperations, PublicInputsAndRecursiveProof } from '@aztec/stdlib/interfaces/server';
7
+ import { ProofData, RecursiveProof } from '@aztec/stdlib/proofs';
8
+ import { BlockRollupPublicInputs, PrivateBaseRollupHints, PublicBaseRollupHints, PublicTubePrivateInputs } from '@aztec/stdlib/rollup';
10
9
  import { AppendOnlyTreeSnapshot, MerkleTreeId } from '@aztec/stdlib/trees';
11
- import { BlockHeader, type GlobalVariables, PartialStateReference, type ProcessedTx, StateReference, TxEffect } from '@aztec/stdlib/tx';
10
+ import { BlockHeader, GlobalVariables, PartialStateReference, type ProcessedTx, Tx } from '@aztec/stdlib/tx';
12
11
  import type { MerkleTreeReadOperations } from '@aztec/world-state';
13
12
  /**
14
13
  * Type representing the names of the trees for the base rollup.
@@ -18,38 +17,40 @@ type BaseTreeNames = 'NoteHashTree' | 'ContractTree' | 'NullifierTree' | 'Public
18
17
  * Type representing the names of the trees.
19
18
  */
20
19
  export type TreeNames = BaseTreeNames | 'L1ToL2MessageTree' | 'Archive';
21
- export declare const insertSideEffectsAndBuildBaseRollupHints: (tx: ProcessedTx, globalVariables: GlobalVariables, newL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, db: MerkleTreeWriteOperations, startSpongeBlob: SpongeBlob) => Promise<PublicBaseRollupHints | PrivateBaseRollupHints>;
22
- export declare function getPublicDataHint(db: MerkleTreeWriteOperations, leafSlot: bigint): Promise<PublicDataHint>;
23
- export declare const buildBlobHints: (txEffects: TxEffect[]) => Promise<{
24
- blobFields: Fr[];
25
- blobCommitments: BLS12Point[];
26
- blobs: Blob[];
20
+ export declare const insertSideEffectsAndBuildBaseRollupHints: (tx: ProcessedTx, lastArchive: AppendOnlyTreeSnapshot, newL1ToL2MessageTreeSnapshot: AppendOnlyTreeSnapshot, startSpongeBlob: SpongeBlob, proverId: Fr, db: MerkleTreeWriteOperations) => Promise<PublicBaseRollupHints | PrivateBaseRollupHints>;
21
+ export declare function getCivcProofFromTx(tx: Tx | ProcessedTx): RecursiveProof<2084>;
22
+ export declare function getPublicTubePrivateInputsFromTx(tx: Tx | ProcessedTx, proverId: Fr): PublicTubePrivateInputs;
23
+ export declare const buildBlobHints: (blobFields: Fr[]) => {
24
+ blobCommitments: import("@aztec/foundation/fields").BLS12Point[];
25
+ blobs: import("@aztec/blob-lib").Blob[];
27
26
  blobsHash: Fr;
27
+ };
28
+ export declare const buildBlobDataFromTxs: (txsPerCheckpoint: ProcessedTx[][]) => Promise<{
29
+ blobFieldsLengths: number[];
30
+ finalBlobChallenges: import("@aztec/blob-lib").FinalBlobBatchingChallenges;
28
31
  }>;
29
- export declare const accumulateBlobs: (txs: ProcessedTx[], startBlobAccumulator: BatchedBlobAccumulator) => Promise<BatchedBlobAccumulator>;
30
- export declare const buildHeaderFromCircuitOutputs: (previousRollupData: BaseOrMergeRollupPublicInputs[], parityPublicInputs: ParityPublicInputs, rootRollupOutputs: BlockRootOrBlockMergePublicInputs, blobsHash: Fr, endState: StateReference) => BlockHeader;
31
- export declare const buildHeaderAndBodyFromTxs: (txs: ProcessedTx[], globalVariables: GlobalVariables, l1ToL2Messages: Fr[], db: MerkleTreeReadOperations) => Promise<{
32
- header: BlockHeader;
32
+ export declare const buildFinalBlobChallenges: (blobFieldsPerCheckpoint: Fr[][]) => Promise<import("@aztec/blob-lib").FinalBlobBatchingChallenges>;
33
+ export declare const accumulateBlobs: (blobFields: Fr[], startBlobAccumulator: BatchedBlobAccumulator) => Promise<BatchedBlobAccumulator>;
34
+ export declare const buildHeaderFromCircuitOutputs: (blockRootRollupOutput: BlockRollupPublicInputs) => Promise<BlockHeader>;
35
+ export declare const buildHeaderAndBodyFromTxs: (txs: ProcessedTx[], globalVariables: GlobalVariables, l1ToL2Messages: Fr[], db: MerkleTreeReadOperations, startSpongeBlob?: SpongeBlob | undefined) => Promise<{
36
+ header: L2BlockHeader;
33
37
  body: Body;
34
38
  }>;
39
+ export declare const buildBlockHeaderFromTxs: (txs: ProcessedTx[], globalVariables: GlobalVariables, startSpongeBlob: SpongeBlob, db: MerkleTreeReadOperations) => Promise<BlockHeader>;
35
40
  /** Computes the inHash for a block's ContentCommitment given its l1 to l2 messages. */
36
41
  export declare function computeInHashFromL1ToL2Messages(unpaddedL1ToL2Messages: Fr[]): Promise<Fr>;
37
- export declare function getBlobsHashFromBlobs(inputs: Blob[]): Fr;
38
- export declare function getEmptyBlockBlobsHash(): Promise<Fr>;
39
- export declare function validateBlockRootOutput(blockRootOutput: BlockRootOrBlockMergePublicInputs, blockHeader: BlockHeader, db: MerkleTreeReadOperations): Promise<void>;
40
- export declare const validateState: (state: StateReference, db: MerkleTreeReadOperations) => Promise<void>;
41
42
  export declare function getLastSiblingPath<TID extends MerkleTreeId>(treeId: TID, db: MerkleTreeReadOperations): Promise<Tuple<Fr, {
42
- readonly 1: 40;
43
- readonly 4: 29;
44
- readonly 3: 39;
45
- readonly 0: 40;
43
+ readonly 1: 42;
44
+ readonly 4: 30;
45
+ readonly 3: 36;
46
+ readonly 0: 42;
46
47
  readonly 2: 40;
47
48
  }[TID]>>;
48
49
  export declare function getRootTreeSiblingPath<TID extends MerkleTreeId>(treeId: TID, db: MerkleTreeReadOperations): Promise<Tuple<Fr, {
49
- readonly 1: 40;
50
- readonly 4: 29;
51
- readonly 3: 39;
52
- readonly 0: 40;
50
+ readonly 1: 42;
51
+ readonly 4: 30;
52
+ readonly 3: 36;
53
+ readonly 0: 42;
53
54
  readonly 2: 40;
54
55
  }[TID]>>;
55
56
  export declare function getTreeSnapshot(id: MerkleTreeId, db: MerkleTreeReadOperations): Promise<AppendOnlyTreeSnapshot>;
@@ -58,5 +59,6 @@ export declare function getSubtreeSiblingPath(treeId: MerkleTreeId, subtreeHeigh
58
59
  export declare function getMembershipWitnessFor<N extends number>(value: Fr, treeId: MerkleTreeId, height: N, db: MerkleTreeReadOperations): Promise<MembershipWitness<N>>;
59
60
  export declare function validatePartialState(partialState: PartialStateReference, treeSnapshots: Map<MerkleTreeId, AppendOnlyTreeSnapshot>): void;
60
61
  export declare function validateTx(tx: ProcessedTx): void;
62
+ export declare function toProofData<T extends Bufferable, PROOF_LENGTH extends number>({ inputs, proof, verificationKey }: PublicInputsAndRecursiveProof<T, PROOF_LENGTH>, vkIndex?: number): ProofData<T, PROOF_LENGTH>;
61
63
  export {};
62
64
  //# sourceMappingURL=block-building-helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"block-building-helpers.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-building-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"block-building-helpers.d.ts","sourceRoot":"","sources":["../../src/orchestrator/block-building-helpers.ts"],"names":[],"mappings":"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"}