@aztec/prover-node 3.0.0-canary.a9708bd → 3.0.0-devnet.2-patch.1

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 (48) hide show
  1. package/dest/actions/download-epoch-proving-job.d.ts +4 -4
  2. package/dest/actions/index.d.ts +1 -1
  3. package/dest/actions/rerun-epoch-proving-job.d.ts +2 -2
  4. package/dest/actions/upload-epoch-proof-failure.d.ts +1 -1
  5. package/dest/bin/run-failed-epoch.d.ts +1 -1
  6. package/dest/bin/run-failed-epoch.js +1 -1
  7. package/dest/config.d.ts +4 -2
  8. package/dest/config.d.ts.map +1 -1
  9. package/dest/config.js +19 -14
  10. package/dest/factory.d.ts +2 -2
  11. package/dest/factory.d.ts.map +1 -1
  12. package/dest/factory.js +18 -7
  13. package/dest/index.d.ts +1 -1
  14. package/dest/job/epoch-proving-job-data.d.ts +8 -6
  15. package/dest/job/epoch-proving-job-data.d.ts.map +1 -1
  16. package/dest/job/epoch-proving-job-data.js +25 -18
  17. package/dest/job/epoch-proving-job.d.ts +11 -16
  18. package/dest/job/epoch-proving-job.d.ts.map +1 -1
  19. package/dest/job/epoch-proving-job.js +107 -65
  20. package/dest/metrics.d.ts +4 -3
  21. package/dest/metrics.d.ts.map +1 -1
  22. package/dest/metrics.js +9 -3
  23. package/dest/monitors/epoch-monitor.d.ts +5 -2
  24. package/dest/monitors/epoch-monitor.d.ts.map +1 -1
  25. package/dest/monitors/epoch-monitor.js +10 -1
  26. package/dest/monitors/index.d.ts +1 -1
  27. package/dest/prover-node-publisher.d.ts +9 -10
  28. package/dest/prover-node-publisher.d.ts.map +1 -1
  29. package/dest/prover-node-publisher.js +51 -52
  30. package/dest/prover-node.d.ts +8 -7
  31. package/dest/prover-node.d.ts.map +1 -1
  32. package/dest/prover-node.js +39 -32
  33. package/dest/prover-publisher-factory.d.ts +6 -2
  34. package/dest/prover-publisher-factory.d.ts.map +1 -1
  35. package/dest/prover-publisher-factory.js +6 -0
  36. package/dest/test/index.d.ts +1 -1
  37. package/dest/test/index.d.ts.map +1 -1
  38. package/package.json +26 -25
  39. package/src/bin/run-failed-epoch.ts +2 -2
  40. package/src/config.ts +30 -29
  41. package/src/factory.ts +22 -14
  42. package/src/job/epoch-proving-job-data.ts +31 -25
  43. package/src/job/epoch-proving-job.ts +138 -82
  44. package/src/metrics.ts +16 -4
  45. package/src/monitors/epoch-monitor.ts +15 -5
  46. package/src/prover-node-publisher.ts +73 -72
  47. package/src/prover-node.ts +51 -44
  48. package/src/prover-publisher-factory.ts +12 -1
@@ -1,28 +1,25 @@
1
- import { FinalBlobAccumulatorPublicInputs } from '@aztec/blob-lib';
1
+ import { getEthBlobEvaluationInputs } from '@aztec/blob-lib';
2
2
  import { AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants';
3
- import { RollupContract as RollupContractClass } from '@aztec/ethereum';
4
3
  import { makeTuple } from '@aztec/foundation/array';
4
+ import { CheckpointNumber } from '@aztec/foundation/branded-types';
5
5
  import { areArraysEqual } from '@aztec/foundation/collection';
6
+ import { Fr } from '@aztec/foundation/curves/bn254';
6
7
  import { EthAddress } from '@aztec/foundation/eth-address';
7
- import { Fr } from '@aztec/foundation/fields';
8
8
  import { createLogger } from '@aztec/foundation/log';
9
- import { InterruptibleSleep } from '@aztec/foundation/sleep';
10
9
  import { Timer } from '@aztec/foundation/timer';
11
10
  import { RollupAbi } from '@aztec/l1-artifacts';
11
+ import { CommitteeAttestation, CommitteeAttestationsAndSigners } from '@aztec/stdlib/block';
12
12
  import { getTelemetryClient } from '@aztec/telemetry-client';
13
13
  import { inspect } from 'util';
14
14
  import { encodeFunctionData } from 'viem';
15
15
  import { ProverNodePublisherMetrics } from './metrics.js';
16
16
  export class ProverNodePublisher {
17
- interruptibleSleep = new InterruptibleSleep();
18
- sleepTimeMs;
19
17
  interrupted = false;
20
18
  metrics;
21
19
  log = createLogger('prover-node:l1-tx-publisher');
22
20
  rollupContract;
23
21
  l1TxUtils;
24
22
  constructor(config, deps){
25
- this.sleepTimeMs = config?.l1PublishRetryIntervalMS ?? 60_000;
26
23
  const telemetry = deps.telemetry ?? getTelemetryClient();
27
24
  this.metrics = new ProverNodePublisherMetrics(telemetry, 'ProverNode');
28
25
  this.rollupContract = deps.rollupContract;
@@ -38,20 +35,21 @@ export class ProverNodePublisher {
38
35
  * A call to `restart` is required before you can continue publishing.
39
36
  */ interrupt() {
40
37
  this.interrupted = true;
41
- this.interruptibleSleep.interrupt();
38
+ this.l1TxUtils.interrupt();
42
39
  }
43
40
  /** Restarts the publisher after calling `interrupt`. */ restart() {
44
41
  this.interrupted = false;
42
+ this.l1TxUtils.restart();
45
43
  }
46
44
  getSenderAddress() {
47
45
  return this.l1TxUtils.getSenderAddress();
48
46
  }
49
47
  async submitEpochProof(args) {
50
- const { epochNumber, fromBlock, toBlock } = args;
48
+ const { epochNumber, fromCheckpoint, toCheckpoint } = args;
51
49
  const ctx = {
52
50
  epochNumber,
53
- fromBlock,
54
- toBlock
51
+ fromCheckpoint,
52
+ toCheckpoint
55
53
  };
56
54
  if (!this.interrupted) {
57
55
  const timer = new Timer();
@@ -59,6 +57,7 @@ export class ProverNodePublisher {
59
57
  await this.validateEpochProofSubmission(args);
60
58
  const txReceipt = await this.sendSubmitEpochProofTx(args);
61
59
  if (!txReceipt) {
60
+ this.log.error(`Failed to mine submitEpochProof tx`, undefined, ctx);
62
61
  return false;
63
62
  }
64
63
  try {
@@ -88,37 +87,37 @@ export class ProverNodePublisher {
88
87
  return true;
89
88
  }
90
89
  this.metrics.recordFailedTx();
91
- this.log.error(`Rollup.submitEpochProof tx status failed ${txReceipt.transactionHash}`, undefined, ctx);
92
- await this.sleepOrInterrupted();
90
+ this.log.error(`Rollup submitEpochProof tx reverted ${txReceipt.transactionHash}`, undefined, ctx);
93
91
  }
94
- this.log.verbose('L2 block data syncing interrupted', ctx);
92
+ this.log.verbose('Checkpoint data syncing interrupted', ctx);
95
93
  return false;
96
94
  }
97
95
  async validateEpochProofSubmission(args) {
98
- const { fromBlock, toBlock, publicInputs, batchedBlobInputs } = args;
99
- // Check that the block numbers match the expected epoch to be proven
100
- const { pendingBlockNumber: pending, provenBlockNumber: proven } = await this.rollupContract.getTips();
101
- // Don't publish if proven is beyond our toBlock, pointless to do so
102
- if (proven > BigInt(toBlock)) {
103
- throw new Error(`Cannot submit epoch proof for ${fromBlock}-${toBlock} as proven block is ${proven}`);
96
+ const { fromCheckpoint, toCheckpoint, publicInputs, batchedBlobInputs } = args;
97
+ // Check that the checkpoint numbers match the expected epoch to be proven
98
+ const { pending, proven } = await this.rollupContract.getTips();
99
+ // Don't publish if proven is beyond our toCheckpoint, pointless to do so
100
+ if (proven > toCheckpoint) {
101
+ throw new Error(`Cannot submit epoch proof for ${fromCheckpoint}-${toCheckpoint} as proven checkpoint is ${proven}`);
104
102
  }
105
- // toBlock can't be greater than pending
106
- if (toBlock > pending) {
107
- throw new Error(`Cannot submit epoch proof for ${fromBlock}-${toBlock} as pending block is ${pending}`);
103
+ // toCheckpoint can't be greater than pending
104
+ if (toCheckpoint > pending) {
105
+ throw new Error(`Cannot submit epoch proof for ${fromCheckpoint}-${toCheckpoint} as pending checkpoint is ${pending}`);
108
106
  }
109
- // Check the archive for the immediate block before the epoch
110
- const blockLog = await this.rollupContract.getBlock(BigInt(fromBlock - 1));
111
- if (publicInputs.previousArchiveRoot.toString() !== blockLog.archive) {
112
- throw new Error(`Previous archive root mismatch: ${publicInputs.previousArchiveRoot.toString()} !== ${blockLog.archive}`);
107
+ // Check the archive for the immediate checkpoint before the epoch
108
+ const checkpointLog = await this.rollupContract.getCheckpoint(CheckpointNumber(fromCheckpoint - 1));
109
+ if (publicInputs.previousArchiveRoot.toString() !== checkpointLog.archive) {
110
+ throw new Error(`Previous archive root mismatch: ${publicInputs.previousArchiveRoot.toString()} !== ${checkpointLog.archive}`);
113
111
  }
114
- // Check the archive for the last block in the epoch
115
- const endBlockLog = await this.rollupContract.getBlock(BigInt(toBlock));
116
- if (publicInputs.endArchiveRoot.toString() !== endBlockLog.archive) {
117
- throw new Error(`End archive root mismatch: ${publicInputs.endArchiveRoot.toString()} !== ${endBlockLog.archive}`);
112
+ // Check the archive for the last checkpoint in the epoch
113
+ const endCheckpointLog = await this.rollupContract.getCheckpoint(toCheckpoint);
114
+ if (publicInputs.endArchiveRoot.toString() !== endCheckpointLog.archive) {
115
+ throw new Error(`End archive root mismatch: ${publicInputs.endArchiveRoot.toString()} !== ${endCheckpointLog.archive}`);
118
116
  }
119
117
  // Check the batched blob inputs from the root rollup against the batched blob computed in ts
120
- if (!publicInputs.blobPublicInputs.equals(FinalBlobAccumulatorPublicInputs.fromBatchedBlob(batchedBlobInputs))) {
121
- throw new Error(`Batched blob mismatch: ${inspect(publicInputs.blobPublicInputs)} !== ${inspect(FinalBlobAccumulatorPublicInputs.fromBatchedBlob(batchedBlobInputs))}`);
118
+ const finalBlobAccumulator = batchedBlobInputs.toFinalBlobAccumulator();
119
+ if (!publicInputs.blobPublicInputs.equals(finalBlobAccumulator)) {
120
+ throw new Error(`Batched blob mismatch: ${inspect(publicInputs.blobPublicInputs)} !== ${inspect(finalBlobAccumulator)}`);
122
121
  }
123
122
  // Compare the public inputs computed by the contract with the ones injected
124
123
  const rollupPublicInputs = await this.rollupContract.getEpochProofPublicInputs(this.getEpochProofPublicInputsArgs(args));
@@ -136,8 +135,8 @@ export class ProverNodePublisher {
136
135
  ];
137
136
  this.log.info(`Submitting epoch proof to L1 rollup contract`, {
138
137
  proofSize: args.proof.withoutPublicInputs().length,
139
- fromBlock: args.fromBlock,
140
- toBlock: args.toBlock
138
+ fromCheckpoint: args.fromCheckpoint,
139
+ toCheckpoint: args.toCheckpoint
141
140
  });
142
141
  const data = encodeFunctionData({
143
142
  abi: RollupAbi,
@@ -149,33 +148,36 @@ export class ProverNodePublisher {
149
148
  to: this.rollupContract.address,
150
149
  data
151
150
  });
151
+ if (receipt.status !== 'success') {
152
+ const errorMsg = await this.l1TxUtils.tryGetErrorFromRevertedTx(data, {
153
+ args: [
154
+ ...txArgs
155
+ ],
156
+ functionName: 'submitEpochRootProof',
157
+ abi: RollupAbi,
158
+ address: this.rollupContract.address
159
+ }, /*blobInputs*/ undefined, /*stateOverride*/ []);
160
+ this.log.error(`Rollup submit epoch proof tx reverted with ${errorMsg ?? 'unknown error'}`);
161
+ return undefined;
162
+ }
152
163
  return receipt;
153
164
  } catch (err) {
154
165
  this.log.error(`Rollup submit epoch proof failed`, err);
155
- const errorMsg = await this.l1TxUtils.tryGetErrorFromRevertedTx(data, {
156
- args: [
157
- ...txArgs
158
- ],
159
- functionName: 'submitEpochRootProof',
160
- abi: RollupAbi,
161
- address: this.rollupContract.address
162
- }, /*blobInputs*/ undefined, /*stateOverride*/ []);
163
- this.log.error(`Rollup submit epoch proof tx reverted. ${errorMsg}`);
164
166
  return undefined;
165
167
  }
166
168
  }
167
169
  getEpochProofPublicInputsArgs(args) {
168
170
  // Returns arguments for EpochProofLib.sol -> getEpochProofPublicInputs()
169
171
  return [
170
- BigInt(args.fromBlock),
171
- BigInt(args.toBlock),
172
+ BigInt(args.fromCheckpoint),
173
+ BigInt(args.toCheckpoint),
172
174
  {
173
175
  previousArchive: args.publicInputs.previousArchiveRoot.toString(),
174
176
  endArchive: args.publicInputs.endArchiveRoot.toString(),
175
- proverId: EthAddress.fromField(args.publicInputs.proverId).toString()
177
+ proverId: EthAddress.fromField(args.publicInputs.constants.proverId).toString()
176
178
  } /*_args*/ ,
177
179
  makeTuple(AZTEC_MAX_EPOCH_DURATION * 2, (i)=>i % 2 === 0 ? args.publicInputs.fees[i / 2].recipient.toField().toString() : args.publicInputs.fees[(i - 1) / 2].value.toString()),
178
- args.batchedBlobInputs.getEthBlobEvaluationInputs()
180
+ getEthBlobEvaluationInputs(args.batchedBlobInputs)
179
181
  ];
180
182
  }
181
183
  getSubmitEpochProofArgs(args) {
@@ -187,12 +189,9 @@ export class ProverNodePublisher {
187
189
  end: argsArray[1],
188
190
  args: argsArray[2],
189
191
  fees: argsArray[3],
190
- attestations: RollupContractClass.packAttestations(args.attestations),
192
+ attestations: new CommitteeAttestationsAndSigners(args.attestations.map((a)=>CommitteeAttestation.fromViem(a))).getPackedAttestations(),
191
193
  blobInputs: argsArray[4],
192
194
  proof: proofHex
193
195
  };
194
196
  }
195
- async sleepOrInterrupted() {
196
- await this.interruptibleSleep.sleep(this.sleepTimeMs);
197
- }
198
197
  }
@@ -1,4 +1,5 @@
1
- import type { RollupContract } from '@aztec/ethereum';
1
+ import type { RollupContract } from '@aztec/ethereum/contracts';
2
+ import { EpochNumber } from '@aztec/foundation/branded-types';
2
3
  import type { DataStoreConfig } from '@aztec/kv-store/config';
3
4
  import type { P2PClient } from '@aztec/p2p';
4
5
  import { PublicProcessorFactory } from '@aztec/simulator/server';
@@ -50,7 +51,7 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
50
51
  * @param epochNumber - The epoch number that was just completed.
51
52
  * @returns false if there is an error, true otherwise
52
53
  */
53
- handleEpochReadyToProve(epochNumber: bigint): Promise<boolean>;
54
+ handleEpochReadyToProve(epochNumber: EpochNumber): Promise<boolean>;
54
55
  /**
55
56
  * Starts the prover node so it periodically checks for unproven epochs in the unfinalized chain from L1 and
56
57
  * starts proving jobs for them.
@@ -67,7 +68,7 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
67
68
  /**
68
69
  * Starts a proving process and returns immediately.
69
70
  */
70
- startProof(epochNumber: number | bigint): Promise<void>;
71
+ startProof(epochNumber: EpochNumber): Promise<void>;
71
72
  private runJob;
72
73
  protected tryUploadEpochFailure(job: EpochProvingJob): Promise<string | undefined>;
73
74
  /**
@@ -80,9 +81,9 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
80
81
  getJobs(): Promise<{
81
82
  uuid: string;
82
83
  status: EpochProvingJobState;
83
- epochNumber: number;
84
+ epochNumber: EpochNumber;
84
85
  }[]>;
85
- protected getActiveJobsForEpoch(epochBigInt: bigint): Promise<{
86
+ protected getActiveJobsForEpoch(epochNumber: EpochNumber): Promise<{
86
87
  uuid: string;
87
88
  status: EpochProvingJobState;
88
89
  }[]>;
@@ -90,7 +91,7 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
90
91
  private createProvingJob;
91
92
  private getL1Constants;
92
93
  private gatherEpochData;
93
- private gatherBlocks;
94
+ private gatherCheckpoints;
94
95
  private gatherTxs;
95
96
  private gatherMessages;
96
97
  private gatherPreviousBlockHeader;
@@ -103,4 +104,4 @@ export declare class ProverNode implements EpochMonitorHandler, ProverNodeApi, T
103
104
  private validateConfig;
104
105
  }
105
106
  export {};
106
- //# sourceMappingURL=prover-node.d.ts.map
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm92ZXItbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRSxPQUFPLEVBQWlDLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBTTdGLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpFLE9BQU8sRUFDTCxLQUFLLGtCQUFrQixFQUV2QixLQUFLLGFBQWEsRUFDbEIsS0FBSyxPQUFPLEVBQ1osS0FBSyxvQkFBb0IsRUFDekIsS0FBSyxzQkFBc0IsRUFFNUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXZELE9BQU8sRUFFTCxTQUFTLEVBQ1QsS0FBSyxlQUFlLEVBQ3BCLEtBQUssU0FBUyxFQUNkLEtBQUssTUFBTSxFQUdaLE1BQU0seUJBQXlCLENBQUM7QUFHakMsT0FBTyxLQUFLLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxP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
@@ -1 +1 @@
1
- {"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ 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 { BlockNumber } from '@aztec/foundation/branded-types';
7
8
  import { assertRequired, compact, pick, sum } from '@aztec/foundation/collection';
8
9
  import { memoize } from '@aztec/foundation/decorators';
9
10
  import { createLogger } from '@aztec/foundation/log';
@@ -63,6 +64,7 @@ import { ProverNodeJobMetrics, ProverNodeRewardsMetrics } from './metrics.js';
63
64
  txGatheringMaxParallelRequestsPerNode: 100,
64
65
  txGatheringTimeoutMs: 120_000,
65
66
  proverNodeFailedEpochStore: undefined,
67
+ proverNodeEpochProvingDelayMs: undefined,
66
68
  ...compact(config)
67
69
  };
68
70
  this.validateConfig();
@@ -109,6 +111,7 @@ import { ProverNodeJobMetrics, ProverNodeRewardsMetrics } from './metrics.js';
109
111
  * starts proving jobs for them.
110
112
  */ async start() {
111
113
  this.epochsMonitor.start(this);
114
+ await this.publisherFactory.start();
112
115
  this.publisher = await this.publisherFactory.create();
113
116
  await this.rewardsMetrics.start();
114
117
  this.l1Metrics.start();
@@ -122,6 +125,7 @@ import { ProverNodeJobMetrics, ProverNodeRewardsMetrics } from './metrics.js';
122
125
  await this.prover.stop();
123
126
  await tryStop(this.p2pClient);
124
127
  await tryStop(this.l2BlockSource);
128
+ await tryStop(this.publisherFactory);
125
129
  this.publisher?.interrupt();
126
130
  await Promise.all(Array.from(this.jobs.values()).map((job)=>job.stop()));
127
131
  await this.worldState.stop();
@@ -140,7 +144,7 @@ import { ProverNodeJobMetrics, ProverNodeRewardsMetrics } from './metrics.js';
140
144
  /**
141
145
  * Starts a proving process and returns immediately.
142
146
  */ async startProof(epochNumber) {
143
- const job = await this.createProvingJob(BigInt(epochNumber), {
147
+ const job = await this.createProvingJob(epochNumber, {
144
148
  skipEpochCheck: true
145
149
  });
146
150
  void this.runJob(job);
@@ -187,12 +191,11 @@ import { ProverNodeJobMetrics, ProverNodeRewardsMetrics } from './metrics.js';
187
191
  return Promise.resolve(Array.from(this.jobs.entries()).map(([uuid, job])=>({
188
192
  uuid,
189
193
  status: job.getState(),
190
- epochNumber: Number(job.getEpochNumber())
194
+ epochNumber: job.getEpochNumber()
191
195
  })));
192
196
  }
193
- async getActiveJobsForEpoch(epochBigInt) {
197
+ async getActiveJobsForEpoch(epochNumber) {
194
198
  const jobs = await this.getJobs();
195
- const epochNumber = Number(epochBigInt);
196
199
  return jobs.filter((job)=>job.epochNumber === epochNumber && !EpochProvingJobTerminalState.includes(job.status));
197
200
  }
198
201
  checkMaximumPendingJobs() {
@@ -206,9 +209,11 @@ import { ProverNodeJobMetrics, ProverNodeRewardsMetrics } from './metrics.js';
206
209
  this.publisher = await this.publisherFactory.create();
207
210
  // Gather all data for this epoch
208
211
  const epochData = await this.gatherEpochData(epochNumber);
209
- const fromBlock = epochData.blocks[0].number;
210
- const toBlock = epochData.blocks.at(-1).number;
211
- this.log.verbose(`Creating proving job for epoch ${epochNumber} for block range ${fromBlock} to ${toBlock}`);
212
+ const fromCheckpoint = epochData.checkpoints[0].number;
213
+ const toCheckpoint = epochData.checkpoints.at(-1).number;
214
+ const fromBlock = epochData.checkpoints[0].blocks[0].number;
215
+ const toBlock = epochData.checkpoints.at(-1).blocks.at(-1).number;
216
+ this.log.verbose(`Creating proving job for epoch ${epochNumber} for checkpoint range ${fromCheckpoint} to ${toCheckpoint} and block range ${fromBlock} to ${toBlock}`);
212
217
  // Fast forward world state to right before the target block and get a fork
213
218
  await this.worldState.syncImmediate(toBlock);
214
219
  // Create a processor factory
@@ -224,18 +229,19 @@ import { ProverNodeJobMetrics, ProverNodeRewardsMetrics } from './metrics.js';
224
229
  return this.l2BlockSource.getL1Constants();
225
230
  }
226
231
  async gatherEpochData(epochNumber) {
227
- const blocks = await this.gatherBlocks(epochNumber);
228
- const txArray = await this.gatherTxs(epochNumber, blocks);
232
+ const checkpoints = await this.gatherCheckpoints(epochNumber);
233
+ const txArray = await this.gatherTxs(epochNumber, checkpoints);
229
234
  const txs = new Map(txArray.map((tx)=>[
230
235
  tx.getTxHash().toString(),
231
236
  tx
232
237
  ]));
233
- const l1ToL2Messages = await this.gatherMessages(epochNumber, blocks);
234
- const previousBlockHeader = await this.gatherPreviousBlockHeader(epochNumber, blocks[0]);
235
- const [lastBlock] = await this.l2BlockSource.getPublishedBlocks(blocks.at(-1).number, 1);
236
- const attestations = lastBlock?.attestations ?? [];
238
+ const l1ToL2Messages = await this.gatherMessages(epochNumber, checkpoints);
239
+ const [firstBlock] = checkpoints[0].blocks;
240
+ const previousBlockHeader = await this.gatherPreviousBlockHeader(epochNumber, firstBlock.number - 1);
241
+ const [lastPublishedCheckpoint] = await this.l2BlockSource.getPublishedCheckpoints(checkpoints.at(-1).number, 1);
242
+ const attestations = lastPublishedCheckpoint?.attestations ?? [];
237
243
  return {
238
- blocks,
244
+ checkpoints,
239
245
  txs,
240
246
  l1ToL2Messages,
241
247
  epochNumber,
@@ -243,16 +249,17 @@ import { ProverNodeJobMetrics, ProverNodeRewardsMetrics } from './metrics.js';
243
249
  attestations
244
250
  };
245
251
  }
246
- async gatherBlocks(epochNumber) {
247
- const blocks = await this.l2BlockSource.getBlocksForEpoch(epochNumber);
248
- if (blocks.length === 0) {
252
+ async gatherCheckpoints(epochNumber) {
253
+ const checkpoints = await this.l2BlockSource.getCheckpointsForEpoch(epochNumber);
254
+ if (checkpoints.length === 0) {
249
255
  throw new EmptyEpochError(epochNumber);
250
256
  }
251
- return blocks;
257
+ return checkpoints;
252
258
  }
253
- async gatherTxs(epochNumber, blocks) {
259
+ async gatherTxs(epochNumber, checkpoints) {
254
260
  const deadline = new Date(this.dateProvider.now() + this.config.txGatheringTimeoutMs);
255
261
  const txProvider = this.p2pClient.getTxProvider();
262
+ const blocks = checkpoints.flatMap((checkpoint)=>checkpoint.blocks);
256
263
  const txsByBlock = await Promise.all(blocks.map((block)=>txProvider.getTxsForBlock(block, {
257
264
  deadline
258
265
  })));
@@ -266,31 +273,31 @@ import { ProverNodeJobMetrics, ProverNodeRewardsMetrics } from './metrics.js';
266
273
  }
267
274
  throw new Error(`Txs not found for epoch ${epochNumber}: ${missingTxs.map((hash)=>hash.toString()).join(', ')}`);
268
275
  }
269
- async gatherMessages(epochNumber, blocks) {
270
- const messages = await Promise.all(blocks.map((b)=>this.l1ToL2MessageSource.getL1ToL2Messages(b.number)));
276
+ async gatherMessages(epochNumber, checkpoints) {
277
+ const messages = await Promise.all(checkpoints.map((c)=>this.l1ToL2MessageSource.getL1ToL2Messages(c.number)));
271
278
  const messageCount = sum(messages.map((m)=>m.length));
272
279
  this.log.verbose(`Gathered all ${messageCount} messages for epoch ${epochNumber}`, {
273
280
  epochNumber
274
281
  });
275
- const messagesByBlock = {};
276
- for(let i = 0; i < blocks.length; i++){
277
- messagesByBlock[blocks[i].number] = messages[i];
282
+ const messagesByCheckpoint = {};
283
+ for(let i = 0; i < checkpoints.length; i++){
284
+ messagesByCheckpoint[checkpoints[i].number] = messages[i];
278
285
  }
279
- return messagesByBlock;
286
+ return messagesByCheckpoint;
280
287
  }
281
- async gatherPreviousBlockHeader(epochNumber, initialBlock) {
282
- const previousBlockNumber = initialBlock.number - 1;
283
- const header = await (previousBlockNumber === 0 ? this.worldState.getCommitted().getInitialHeader() : this.l2BlockSource.getBlockHeader(previousBlockNumber));
288
+ async gatherPreviousBlockHeader(epochNumber, previousBlockNumber) {
289
+ const header = await (previousBlockNumber === 0 ? this.worldState.getCommitted().getInitialHeader() : this.l2BlockSource.getBlockHeader(BlockNumber(previousBlockNumber)));
284
290
  if (!header) {
285
- throw new Error(`Previous block header ${initialBlock.number} not found for proving epoch ${epochNumber}`);
291
+ throw new Error(`Previous block header ${previousBlockNumber} not found for proving epoch ${epochNumber}`);
286
292
  }
287
293
  this.log.verbose(`Gathered previous block header ${header.getBlockNumber()} for epoch ${epochNumber}`);
288
294
  return header;
289
295
  }
290
296
  /** Extracted for testing purposes. */ doCreateEpochProvingJob(data, deadline, publicProcessorFactory, publisher, opts = {}) {
291
- const { proverNodeMaxParallelBlocksPerEpoch: parallelBlockLimit } = this.config;
297
+ const { proverNodeMaxParallelBlocksPerEpoch: parallelBlockLimit, proverNodeDisableProofPublish } = this.config;
292
298
  return new EpochProvingJob(data, this.worldState, this.prover.createEpochProver(), publicProcessorFactory, publisher, this.l2BlockSource, this.jobMetrics, deadline, {
293
299
  parallelBlockLimit,
300
+ skipSubmitProof: proverNodeDisableProofPublish,
294
301
  ...opts
295
302
  });
296
303
  }
@@ -306,7 +313,7 @@ import { ProverNodeJobMetrics, ProverNodeRewardsMetrics } from './metrics.js';
306
313
  }
307
314
  _ts_decorate([
308
315
  trackSpan('ProverNode.createProvingJob', (epochNumber)=>({
309
- [Attributes.EPOCH_NUMBER]: Number(epochNumber)
316
+ [Attributes.EPOCH_NUMBER]: epochNumber
310
317
  }))
311
318
  ], ProverNode.prototype, "createProvingJob", null);
312
319
  _ts_decorate([
@@ -314,7 +321,7 @@ _ts_decorate([
314
321
  ], ProverNode.prototype, "getL1Constants", null);
315
322
  _ts_decorate([
316
323
  trackSpan('ProverNode.gatherEpochData', (epochNumber)=>({
317
- [Attributes.EPOCH_NUMBER]: Number(epochNumber)
324
+ [Attributes.EPOCH_NUMBER]: epochNumber
318
325
  }))
319
326
  ], ProverNode.prototype, "gatherEpochData", null);
320
327
  class EmptyEpochError extends Error {
@@ -1,4 +1,6 @@
1
- import type { L1TxUtils, PublisherManager, RollupContract } from '@aztec/ethereum';
1
+ import type { RollupContract } from '@aztec/ethereum/contracts';
2
+ import type { L1TxUtils } from '@aztec/ethereum/l1-tx-utils';
3
+ import type { PublisherManager } from '@aztec/ethereum/publisher-manager';
2
4
  import type { PublisherConfig, TxSenderConfig } from '@aztec/sequencer-client';
3
5
  import type { TelemetryClient } from '@aztec/telemetry-client';
4
6
  import { ProverNodePublisher } from './prover-node-publisher.js';
@@ -10,10 +12,12 @@ export declare class ProverPublisherFactory {
10
12
  publisherManager: PublisherManager<L1TxUtils>;
11
13
  telemetry?: TelemetryClient;
12
14
  });
15
+ start(): Promise<void>;
16
+ stop(): void;
13
17
  /**
14
18
  * Creates a new Prover Publisher instance.
15
19
  * @returns A new ProverNodePublisher instance.
16
20
  */
17
21
  create(): Promise<ProverNodePublisher>;
18
22
  }
19
- //# sourceMappingURL=prover-publisher-factory.d.ts.map
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLXB1Ymxpc2hlci1mYWN0b3J5LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmVyLXB1Ymxpc2hlci1mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9FLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRWpFLHFCQUFhLHNCQUFzQjtJQUUvQixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxJQUFJO0lBRmQsWUFDVSxNQUFNLEVBQUUsY0FBYyxHQUFHLGVBQWUsRUFDeEMsSUFBSSxFQUFFO1FBQ1osY0FBYyxFQUFFLGNBQWMsQ0FBQztRQUMvQixnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxTQUFTLENBQUMsRUFBRSxlQUFlLENBQUM7S0FDN0IsRUFDQztJQUVTLEtBQUssa0JBRWpCO0lBRU0sSUFBSSxTQUVWO0lBRUQ7OztPQUdHO0lBQ1UsTUFBTSxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQU9sRDtDQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"prover-publisher-factory.d.ts","sourceRoot":"","sources":["../src/prover-publisher-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;gBADJ,MAAM,EAAE,cAAc,GAAG,eAAe,EACxC,IAAI,EAAE;QACZ,cAAc,EAAE,cAAc,CAAC;QAC/B,gBAAgB,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC9C,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B;IAEH;;;OAGG;IACU,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAQpD"}
1
+ {"version":3,"file":"prover-publisher-factory.d.ts","sourceRoot":"","sources":["../src/prover-publisher-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;IAFd,YACU,MAAM,EAAE,cAAc,GAAG,eAAe,EACxC,IAAI,EAAE;QACZ,cAAc,EAAE,cAAc,CAAC;QAC/B,gBAAgB,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC9C,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B,EACC;IAES,KAAK,kBAEjB;IAEM,IAAI,SAEV;IAED;;;OAGG;IACU,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAOlD;CACF"}
@@ -6,6 +6,12 @@ export class ProverPublisherFactory {
6
6
  this.config = config;
7
7
  this.deps = deps;
8
8
  }
9
+ async start() {
10
+ await this.deps.publisherManager.loadState();
11
+ }
12
+ stop() {
13
+ this.deps.publisherManager.interrupt();
14
+ }
9
15
  /**
10
16
  * Creates a new Prover Publisher instance.
11
17
  * @returns A new ProverNodePublisher instance.
@@ -9,4 +9,4 @@ declare abstract class TestProverNodeClass extends ProverNode {
9
9
  }
10
10
  export type TestProverNode = TestProverNodeClass;
11
11
  export {};
12
- //# sourceMappingURL=index.d.ts.map
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFMUUsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFL0MsdUJBQWUsbUJBQW9CLFNBQVEsVUFBVTtJQUNwQyxNQUFNLEVBQUUsa0JBQWtCLENBQUM7SUFDM0IsU0FBUyxFQUFFLG1CQUFtQixDQUFDO0lBRTlDLFNBQXlCLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxlQUFlLEdBQUcsT0FBTyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztDQUNuRztBQUVELE1BQU0sTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,uBAAe,mBAAoB,SAAQ,UAAU;IACpC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,mBAAmB,CAAC;aAErB,qBAAqB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAClG;AAED,MAAM,MAAM,cAAc,GAAG,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,uBAAe,mBAAoB,SAAQ,UAAU;IACpC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,SAAS,EAAE,mBAAmB,CAAC;IAE9C,SAAyB,qBAAqB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACnG;AAED,MAAM,MAAM,cAAc,GAAG,mBAAmB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/prover-node",
3
- "version": "3.0.0-canary.a9708bd",
3
+ "version": "3.0.0-devnet.2-patch.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -11,8 +11,8 @@
11
11
  "../package.common.json"
12
12
  ],
13
13
  "scripts": {
14
- "build": "yarn clean && tsc -b",
15
- "build:dev": "tsc -b --watch",
14
+ "build": "yarn clean && ../scripts/tsc.sh",
15
+ "build:dev": "../scripts/tsc.sh --watch",
16
16
  "clean": "rm -rf ./dest .tsbuildinfo",
17
17
  "bb": "node --no-warnings ./dest/bb/index.js",
18
18
  "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}",
@@ -56,36 +56,37 @@
56
56
  ]
57
57
  },
58
58
  "dependencies": {
59
- "@aztec/archiver": "3.0.0-canary.a9708bd",
60
- "@aztec/bb-prover": "3.0.0-canary.a9708bd",
61
- "@aztec/blob-lib": "3.0.0-canary.a9708bd",
62
- "@aztec/blob-sink": "3.0.0-canary.a9708bd",
63
- "@aztec/constants": "3.0.0-canary.a9708bd",
64
- "@aztec/epoch-cache": "3.0.0-canary.a9708bd",
65
- "@aztec/ethereum": "3.0.0-canary.a9708bd",
66
- "@aztec/foundation": "3.0.0-canary.a9708bd",
67
- "@aztec/kv-store": "3.0.0-canary.a9708bd",
68
- "@aztec/l1-artifacts": "3.0.0-canary.a9708bd",
69
- "@aztec/node-keystore": "3.0.0-canary.a9708bd",
70
- "@aztec/node-lib": "3.0.0-canary.a9708bd",
71
- "@aztec/noir-protocol-circuits-types": "3.0.0-canary.a9708bd",
72
- "@aztec/p2p": "3.0.0-canary.a9708bd",
73
- "@aztec/protocol-contracts": "3.0.0-canary.a9708bd",
74
- "@aztec/prover-client": "3.0.0-canary.a9708bd",
75
- "@aztec/sequencer-client": "3.0.0-canary.a9708bd",
76
- "@aztec/simulator": "3.0.0-canary.a9708bd",
77
- "@aztec/stdlib": "3.0.0-canary.a9708bd",
78
- "@aztec/telemetry-client": "3.0.0-canary.a9708bd",
79
- "@aztec/world-state": "3.0.0-canary.a9708bd",
59
+ "@aztec/archiver": "3.0.0-devnet.2-patch.1",
60
+ "@aztec/bb-prover": "3.0.0-devnet.2-patch.1",
61
+ "@aztec/blob-lib": "3.0.0-devnet.2-patch.1",
62
+ "@aztec/blob-sink": "3.0.0-devnet.2-patch.1",
63
+ "@aztec/constants": "3.0.0-devnet.2-patch.1",
64
+ "@aztec/epoch-cache": "3.0.0-devnet.2-patch.1",
65
+ "@aztec/ethereum": "3.0.0-devnet.2-patch.1",
66
+ "@aztec/foundation": "3.0.0-devnet.2-patch.1",
67
+ "@aztec/kv-store": "3.0.0-devnet.2-patch.1",
68
+ "@aztec/l1-artifacts": "3.0.0-devnet.2-patch.1",
69
+ "@aztec/node-keystore": "3.0.0-devnet.2-patch.1",
70
+ "@aztec/node-lib": "3.0.0-devnet.2-patch.1",
71
+ "@aztec/noir-protocol-circuits-types": "3.0.0-devnet.2-patch.1",
72
+ "@aztec/p2p": "3.0.0-devnet.2-patch.1",
73
+ "@aztec/protocol-contracts": "3.0.0-devnet.2-patch.1",
74
+ "@aztec/prover-client": "3.0.0-devnet.2-patch.1",
75
+ "@aztec/sequencer-client": "3.0.0-devnet.2-patch.1",
76
+ "@aztec/simulator": "3.0.0-devnet.2-patch.1",
77
+ "@aztec/stdlib": "3.0.0-devnet.2-patch.1",
78
+ "@aztec/telemetry-client": "3.0.0-devnet.2-patch.1",
79
+ "@aztec/world-state": "3.0.0-devnet.2-patch.1",
80
80
  "source-map-support": "^0.5.21",
81
81
  "tslib": "^2.4.0",
82
- "viem": "2.23.7"
82
+ "viem": "npm:@aztec/viem@2.38.2"
83
83
  },
84
84
  "devDependencies": {
85
85
  "@jest/globals": "^30.0.0",
86
86
  "@types/jest": "^30.0.0",
87
87
  "@types/node": "^22.15.17",
88
88
  "@types/source-map-support": "^0.5.10",
89
+ "@typescript/native-preview": "7.0.0-dev.20251126.1",
89
90
  "jest": "^30.0.0",
90
91
  "jest-mock-extended": "^4.0.0",
91
92
  "ts-node": "^10.9.1",
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable no-console */
2
- import type { L1ContractAddresses } from '@aztec/ethereum';
2
+ import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
3
3
  import { EthAddress } from '@aztec/foundation/eth-address';
4
4
  import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
5
5
  import { createLogger } from '@aztec/foundation/log';
@@ -25,7 +25,7 @@ async function rerunFailedEpoch(provingJobUrl: string, baseLocalDir: string) {
25
25
  const config = {
26
26
  ...getProverNodeConfigFromEnv(),
27
27
  dataDirectory: dataDir,
28
- dataStoreMapSizeKB: env.dataStoreMapSizeKB ?? 1024 * 1024,
28
+ dataStoreMapSizeKb: env.dataStoreMapSizeKb ?? 1024 * 1024,
29
29
  proverId: env.proverId ?? EthAddress.random(),
30
30
  };
31
31