@aztec/prover-client 0.0.1-fake-c83136db25 → 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 (67) hide show
  1. package/dest/bin/get-proof-inputs.d.ts +2 -0
  2. package/dest/bin/get-proof-inputs.d.ts.map +1 -0
  3. package/dest/bin/get-proof-inputs.js +51 -0
  4. package/dest/block-factory/light.d.ts +3 -5
  5. package/dest/block-factory/light.d.ts.map +1 -1
  6. package/dest/block-factory/light.js +9 -16
  7. package/dest/config.js +1 -1
  8. package/dest/mocks/fixtures.d.ts +1 -4
  9. package/dest/mocks/fixtures.d.ts.map +1 -1
  10. package/dest/mocks/fixtures.js +3 -31
  11. package/dest/mocks/test_context.d.ts +9 -32
  12. package/dest/mocks/test_context.d.ts.map +1 -1
  13. package/dest/mocks/test_context.js +22 -78
  14. package/dest/orchestrator/block-building-helpers.d.ts +31 -33
  15. package/dest/orchestrator/block-building-helpers.d.ts.map +1 -1
  16. package/dest/orchestrator/block-building-helpers.js +137 -126
  17. package/dest/orchestrator/block-proving-state.d.ts +53 -60
  18. package/dest/orchestrator/block-proving-state.d.ts.map +1 -1
  19. package/dest/orchestrator/block-proving-state.js +187 -214
  20. package/dest/orchestrator/epoch-proving-state.d.ts +28 -34
  21. package/dest/orchestrator/epoch-proving-state.d.ts.map +1 -1
  22. package/dest/orchestrator/epoch-proving-state.js +84 -128
  23. package/dest/orchestrator/orchestrator.d.ts +30 -31
  24. package/dest/orchestrator/orchestrator.d.ts.map +1 -1
  25. package/dest/orchestrator/orchestrator.js +236 -368
  26. package/dest/orchestrator/tx-proving-state.d.ts +9 -11
  27. package/dest/orchestrator/tx-proving-state.d.ts.map +1 -1
  28. package/dest/orchestrator/tx-proving-state.js +23 -26
  29. package/dest/prover-client/server-epoch-prover.d.ts +8 -9
  30. package/dest/prover-client/server-epoch-prover.d.ts.map +1 -1
  31. package/dest/prover-client/server-epoch-prover.js +9 -9
  32. package/dest/proving_broker/broker_prover_facade.d.ts +15 -20
  33. package/dest/proving_broker/broker_prover_facade.d.ts.map +1 -1
  34. package/dest/proving_broker/broker_prover_facade.js +21 -36
  35. package/dest/proving_broker/fixtures.js +1 -1
  36. package/dest/proving_broker/proof_store/index.d.ts +0 -1
  37. package/dest/proving_broker/proof_store/index.d.ts.map +1 -1
  38. package/dest/proving_broker/proof_store/index.js +0 -1
  39. package/dest/proving_broker/proving_broker.d.ts.map +1 -1
  40. package/dest/proving_broker/proving_broker.js +18 -29
  41. package/dest/proving_broker/proving_job_controller.d.ts.map +1 -1
  42. package/dest/proving_broker/proving_job_controller.js +18 -38
  43. package/dest/test/mock_prover.d.ts +17 -22
  44. package/dest/test/mock_prover.d.ts.map +1 -1
  45. package/dest/test/mock_prover.js +20 -35
  46. package/package.json +17 -16
  47. package/src/bin/get-proof-inputs.ts +59 -0
  48. package/src/block-factory/light.ts +9 -35
  49. package/src/config.ts +1 -1
  50. package/src/mocks/fixtures.ts +11 -39
  51. package/src/mocks/test_context.ts +31 -137
  52. package/src/orchestrator/block-building-helpers.ts +211 -211
  53. package/src/orchestrator/block-proving-state.ts +245 -235
  54. package/src/orchestrator/epoch-proving-state.ts +127 -172
  55. package/src/orchestrator/orchestrator.ts +303 -545
  56. package/src/orchestrator/tx-proving-state.ts +43 -49
  57. package/src/prover-client/server-epoch-prover.ts +18 -28
  58. package/src/proving_broker/broker_prover_facade.ts +86 -157
  59. package/src/proving_broker/fixtures.ts +1 -1
  60. package/src/proving_broker/proof_store/index.ts +0 -1
  61. package/src/proving_broker/proving_broker.ts +18 -36
  62. package/src/proving_broker/proving_job_controller.ts +18 -38
  63. package/src/test/mock_prover.ts +60 -142
  64. package/dest/orchestrator/checkpoint-proving-state.d.ts +0 -63
  65. package/dest/orchestrator/checkpoint-proving-state.d.ts.map +0 -1
  66. package/dest/orchestrator/checkpoint-proving-state.js +0 -211
  67. package/src/orchestrator/checkpoint-proving-state.ts +0 -299
@@ -1,44 +1,35 @@
1
1
  import type { BBProverConfig } from '@aztec/bb-prover';
2
- import { TestCircuitProver } from '@aztec/bb-prover';
3
- import { SpongeBlob } from '@aztec/blob-lib';
4
2
  import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
5
3
  import { padArrayEnd, times, timesParallel } from '@aztec/foundation/collection';
6
4
  import { Fr } from '@aztec/foundation/fields';
7
5
  import type { Logger } from '@aztec/foundation/log';
8
6
  import { TestDateProvider } from '@aztec/foundation/timer';
9
- import type { FieldsOf } from '@aztec/foundation/types';
10
7
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
11
- import { ProtocolContractsList } from '@aztec/protocol-contracts';
8
+ import { protocolContractTreeRoot } from '@aztec/protocol-contracts';
12
9
  import { computeFeePayerBalanceLeafSlot } from '@aztec/protocol-contracts/fee-juice';
13
10
  import { SimpleContractDataSource } from '@aztec/simulator/public/fixtures';
14
11
  import { PublicProcessorFactory } from '@aztec/simulator/server';
15
12
  import { PublicDataWrite } from '@aztec/stdlib/avm';
16
13
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
17
- import { EthAddress } from '@aztec/stdlib/block';
18
- import { getCheckpointBlobFields } from '@aztec/stdlib/checkpoint';
14
+ import { EthAddress, type L2Block } from '@aztec/stdlib/block';
19
15
  import type { ServerCircuitProver } from '@aztec/stdlib/interfaces/server';
20
- import type { CheckpointConstantData } from '@aztec/stdlib/rollup';
21
16
  import { makeBloatedProcessedTx } from '@aztec/stdlib/testing';
22
- import { MerkleTreeId, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
17
+ import { type AppendOnlyTreeSnapshot, MerkleTreeId, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
23
18
  import { type BlockHeader, type GlobalVariables, type ProcessedTx, TreeSnapshots, type Tx } from '@aztec/stdlib/tx';
24
19
  import type { MerkleTreeAdminDatabase } from '@aztec/world-state';
25
20
  import { NativeWorldStateService } from '@aztec/world-state/native';
26
21
 
27
22
  import { promises as fs } from 'fs';
28
23
 
24
+ // TODO(#12613) This means of sharing test code is not ideal.
25
+ // eslint-disable-next-line import/no-relative-packages
26
+ import { TestCircuitProver } from '../../../bb-prover/src/test/test_circuit_prover.js';
29
27
  import { buildBlockWithCleanDB } from '../block-factory/light.js';
30
28
  import { getTreeSnapshot } from '../orchestrator/block-building-helpers.js';
31
- import type { BlockProvingState } from '../orchestrator/block-proving-state.js';
32
29
  import { ProvingOrchestrator } from '../orchestrator/index.js';
33
30
  import { BrokerCircuitProverFacade } from '../proving_broker/broker_prover_facade.js';
34
31
  import { TestBroker } from '../test/mock_prover.js';
35
- import {
36
- getEnvironmentConfig,
37
- getSimulator,
38
- makeCheckpointConstants,
39
- makeGlobals,
40
- updateExpectedTreesFromTxs,
41
- } from './fixtures.js';
32
+ import { getEnvironmentConfig, getSimulator, makeGlobals, updateExpectedTreesFromTxs } from './fixtures.js';
42
33
 
43
34
  export class TestContext {
44
35
  private headers: Map<number, BlockHeader> = new Map();
@@ -46,7 +37,6 @@ export class TestContext {
46
37
 
47
38
  constructor(
48
39
  public worldState: MerkleTreeAdminDatabase,
49
- public firstCheckpointNumber: Fr,
50
40
  public globalVariables: GlobalVariables,
51
41
  public prover: ServerCircuitProver,
52
42
  public broker: TestBroker,
@@ -65,27 +55,20 @@ export class TestContext {
65
55
  return this.orchestrator;
66
56
  }
67
57
 
68
- public getCheckpointConstants(checkpointIndex = 0): CheckpointConstantData {
69
- return makeCheckpointConstants(this.firstCheckpointNumber.toNumber() + checkpointIndex);
70
- }
71
-
72
58
  static async new(
73
59
  logger: Logger,
74
60
  {
75
61
  proverCount = 4,
76
62
  createProver = async (bbConfig: BBProverConfig) => new TestCircuitProver(await getSimulator(bbConfig, logger)),
77
- slotNumber = 1,
78
63
  blockNumber = 1,
79
64
  }: {
80
65
  proverCount?: number;
81
66
  createProver?: (bbConfig: BBProverConfig) => Promise<ServerCircuitProver>;
82
- slotNumber?: number;
83
67
  blockNumber?: number;
84
68
  } = {},
85
69
  ) {
86
70
  const directoriesToCleanup: string[] = [];
87
- const firstCheckpointNumber = new Fr(slotNumber);
88
- const globalVariables = makeGlobals(blockNumber, slotNumber);
71
+ const globalVariables = makeGlobals(blockNumber);
89
72
 
90
73
  const feePayer = AztecAddress.fromNumber(42222);
91
74
  const initialFeePayerBalance = new Fr(10n ** 20n);
@@ -129,7 +112,6 @@ export class TestContext {
129
112
 
130
113
  return new this(
131
114
  ws,
132
- firstCheckpointNumber,
133
115
  globalVariables,
134
116
  localProver,
135
117
  broker,
@@ -149,10 +131,14 @@ export class TestContext {
149
131
 
150
132
  public getBlockHeader(blockNumber: 0): BlockHeader;
151
133
  public getBlockHeader(blockNumber: number): BlockHeader | undefined;
152
- public getBlockHeader(blockNumber = 0): BlockHeader | undefined {
134
+ public getBlockHeader(blockNumber = 0) {
153
135
  return blockNumber === 0 ? this.worldState.getCommitted().getInitialHeader() : this.headers.get(blockNumber);
154
136
  }
155
137
 
138
+ public setBlockHeader(header: BlockHeader, blockNumber: number) {
139
+ this.headers.set(blockNumber, header);
140
+ }
141
+
156
142
  public getPreviousBlockHeader(currentBlockNumber = this.blockNumber): BlockHeader {
157
143
  return this.getBlockHeader(currentBlockNumber - 1)!;
158
144
  }
@@ -169,15 +155,14 @@ export class TestContext {
169
155
  }
170
156
  }
171
157
 
172
- async makeProcessedTx(opts?: Parameters<typeof makeBloatedProcessedTx>[0]): Promise<ProcessedTx> {
173
- const globalVariables = opts?.globalVariables ?? this.globalVariables;
174
- const blockNumber = globalVariables.blockNumber;
175
- const header = opts?.header ?? this.getBlockHeader(blockNumber - 1);
158
+ private async makeProcessedTx(opts?: Parameters<typeof makeBloatedProcessedTx>[0]): Promise<ProcessedTx> {
159
+ const blockNum = (opts?.globalVariables ?? this.globalVariables).blockNumber;
160
+ const header = this.getBlockHeader(blockNum - 1);
176
161
  const tx = await makeBloatedProcessedTx({
177
162
  header,
178
163
  vkTreeRoot: getVKTreeRoot(),
179
- protocolContracts: ProtocolContractsList,
180
- globalVariables,
164
+ protocolContractTreeRoot,
165
+ globalVariables: this.globalVariables,
181
166
  feePayer: this.feePayer,
182
167
  ...opts,
183
168
  });
@@ -192,27 +177,18 @@ export class TestContext {
192
177
  /** Creates a block with the given number of txs and adds it to world-state */
193
178
  public async makePendingBlock(
194
179
  numTxs: number,
195
- {
196
- checkpointIndex = 0,
197
- numL1ToL2Messages = 0,
198
- blockNumber = this.blockNumber,
199
- makeProcessedTxOpts = () => ({}),
200
- }: {
201
- checkpointIndex?: number;
202
- numL1ToL2Messages?: number;
203
- blockNumber?: number;
204
- makeProcessedTxOpts?: (index: number) => Partial<Parameters<typeof makeBloatedProcessedTx>[0]>;
205
- } = {},
180
+ numL1ToL2Messages: number = 0,
181
+ blockNumOrGlobals: GlobalVariables | number = this.globalVariables,
182
+ makeProcessedTxOpts: (index: number) => Partial<Parameters<typeof makeBloatedProcessedTx>[0]> = () => ({}),
206
183
  ) {
207
- const slotNumber = this.firstCheckpointNumber.toNumber() + checkpointIndex;
208
- const globalVariables = makeGlobals(blockNumber, slotNumber);
184
+ const globalVariables = typeof blockNumOrGlobals === 'number' ? makeGlobals(blockNumOrGlobals) : blockNumOrGlobals;
209
185
  const blockNum = globalVariables.blockNumber;
210
186
  const db = await this.worldState.fork();
211
187
  const l1ToL2Messages = times(numL1ToL2Messages, i => new Fr(blockNum * 100 + i));
212
188
  const merkleTrees = await this.worldState.fork();
213
189
  await merkleTrees.appendLeaves(
214
190
  MerkleTreeId.L1_TO_L2_MESSAGE_TREE,
215
- padArrayEnd<Fr, number>(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP),
191
+ padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP),
216
192
  );
217
193
  const newL1ToL2Snapshot = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, merkleTrees);
218
194
  const txs = await timesParallel(numTxs, i =>
@@ -226,93 +202,11 @@ export class TestContext {
226
202
  await this.setTreeRoots(txs);
227
203
 
228
204
  const block = await buildBlockWithCleanDB(txs, globalVariables, l1ToL2Messages, db);
229
- this.headers.set(blockNum, block.getBlockHeader());
205
+ this.headers.set(blockNum, block.header);
230
206
  await this.worldState.handleL2BlockAndMessages(block, l1ToL2Messages);
231
207
  return { block, txs, l1ToL2Messages };
232
208
  }
233
209
 
234
- public async makePendingBlocksInCheckpoint(
235
- numBlocks: number,
236
- {
237
- checkpointIndex = 0,
238
- numTxsPerBlock = 1,
239
- numL1ToL2Messages = 0,
240
- firstBlockNumber = this.blockNumber + checkpointIndex * numBlocks,
241
- makeGlobalVariablesOpts = () => ({}),
242
- makeProcessedTxOpts = () => ({}),
243
- }: {
244
- checkpointIndex?: number;
245
- numTxsPerBlock?: number | number[];
246
- numL1ToL2Messages?: number;
247
- firstBlockNumber?: number;
248
- makeGlobalVariablesOpts?: (
249
- blockNumber: number,
250
- checkpointIndex: number,
251
- ) => Partial<FieldsOf<GlobalVariables> & FieldsOf<CheckpointConstantData>>;
252
- makeProcessedTxOpts?: (
253
- blockGlobalVariables: GlobalVariables,
254
- txIndex: number,
255
- ) => Partial<Parameters<typeof makeBloatedProcessedTx>[0]>;
256
- } = {},
257
- ) {
258
- const slotNumber = this.firstCheckpointNumber.toNumber() + checkpointIndex;
259
- const l1ToL2Messages = times(numL1ToL2Messages, i => new Fr(slotNumber * 100 + i));
260
- const merkleTrees = await this.worldState.fork();
261
- await merkleTrees.appendLeaves(
262
- MerkleTreeId.L1_TO_L2_MESSAGE_TREE,
263
- padArrayEnd<Fr, number>(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP),
264
- );
265
- const newL1ToL2Snapshot = await getTreeSnapshot(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, merkleTrees);
266
-
267
- const blockGlobalVariables = times(numBlocks, i =>
268
- makeGlobals(firstBlockNumber + i, slotNumber, makeGlobalVariablesOpts(firstBlockNumber + i, checkpointIndex)),
269
- );
270
- let totalTxs = 0;
271
- const blockTxs = await timesParallel(numBlocks, blockIndex => {
272
- const txIndexOffset = totalTxs;
273
- const numTxs = typeof numTxsPerBlock === 'number' ? numTxsPerBlock : numTxsPerBlock[blockIndex];
274
- totalTxs += numTxs;
275
- return timesParallel(numTxs, txIndex =>
276
- this.makeProcessedTx({
277
- seed: (txIndexOffset + txIndex + 1) * 321 + (checkpointIndex + 1) * 123456,
278
- globalVariables: blockGlobalVariables[blockIndex],
279
- header: this.getBlockHeader(firstBlockNumber - 1),
280
- newL1ToL2Snapshot,
281
- ...makeProcessedTxOpts(blockGlobalVariables[blockIndex], txIndexOffset + txIndex),
282
- }),
283
- );
284
- });
285
-
286
- const blobFields = getCheckpointBlobFields(blockTxs.map(txs => txs.map(tx => tx.txEffect)));
287
- const spongeBlobState = await SpongeBlob.init(blobFields.length);
288
-
289
- const blocks: { header: BlockHeader; txs: ProcessedTx[] }[] = [];
290
- for (let i = 0; i < numBlocks; i++) {
291
- const isFirstBlock = i === 0;
292
- const blockNumber = firstBlockNumber + i;
293
- const globalVariables = blockGlobalVariables[i];
294
- const txs = blockTxs[i];
295
-
296
- await this.setTreeRoots(txs);
297
-
298
- const fork = await this.worldState.fork();
299
- const blockMsgs = isFirstBlock ? l1ToL2Messages : [];
300
- const block = await buildBlockWithCleanDB(txs, globalVariables, blockMsgs, fork, spongeBlobState, isFirstBlock);
301
-
302
- const header = block.getBlockHeader();
303
- this.headers.set(blockNumber, header);
304
-
305
- await this.worldState.handleL2BlockAndMessages(block, blockMsgs, isFirstBlock);
306
-
307
- const blockBlobFields = block.body.toBlobFields();
308
- await spongeBlobState.absorb(blockBlobFields);
309
-
310
- blocks.push({ header, txs });
311
- }
312
-
313
- return { blocks, l1ToL2Messages, blobFields };
314
- }
315
-
316
210
  public async processPublicFunctions(
317
211
  txs: Tx[],
318
212
  {
@@ -329,17 +223,14 @@ export class TestContext {
329
223
  const merkleTrees = await this.worldState.fork();
330
224
  await merkleTrees.appendLeaves(
331
225
  MerkleTreeId.L1_TO_L2_MESSAGE_TREE,
332
- padArrayEnd<Fr, number>(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP),
226
+ padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP),
333
227
  );
334
228
 
335
229
  const processorFactory = new PublicProcessorFactory(
336
230
  contractDataSource ?? new SimpleContractDataSource(),
337
231
  new TestDateProvider(),
338
232
  );
339
- const publicProcessor = processorFactory.create(merkleTrees, this.globalVariables, {
340
- skipFeeEnforcement: false,
341
- clientInitiatedSimulation: false,
342
- });
233
+ const publicProcessor = processorFactory.create(merkleTrees, this.globalVariables, /*skipFeeEnforcement=*/ false);
343
234
 
344
235
  return await publicProcessor.process(txs, { maxTransactions });
345
236
  }
@@ -374,9 +265,12 @@ class TestProvingOrchestrator extends ProvingOrchestrator {
374
265
 
375
266
  // Disable this check by default, since it requires seeding world state with the block being built
376
267
  // This is only enabled in some tests with multiple blocks that populate the pending chain via makePendingBlock
377
- protected override verifyBuiltBlockAgainstSyncedState(provingState: BlockProvingState): Promise<void> {
268
+ protected override verifyBuiltBlockAgainstSyncedState(
269
+ l2Block: L2Block,
270
+ newArchive: AppendOnlyTreeSnapshot,
271
+ ): Promise<void> {
378
272
  if (this.isVerifyBuiltBlockAgainstSyncedStateEnabled) {
379
- return super.verifyBuiltBlockAgainstSyncedState(provingState);
273
+ return super.verifyBuiltBlockAgainstSyncedState(l2Block, newArchive);
380
274
  }
381
275
  return Promise.resolve();
382
276
  }