@aztec/prover-node 3.0.0-devnet.2 → 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 (46) 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/config.d.ts +2 -2
  7. package/dest/config.d.ts.map +1 -1
  8. package/dest/config.js +1 -1
  9. package/dest/factory.d.ts +2 -2
  10. package/dest/factory.d.ts.map +1 -1
  11. package/dest/factory.js +5 -3
  12. package/dest/index.d.ts +1 -1
  13. package/dest/job/epoch-proving-job-data.d.ts +8 -6
  14. package/dest/job/epoch-proving-job-data.d.ts.map +1 -1
  15. package/dest/job/epoch-proving-job-data.js +25 -18
  16. package/dest/job/epoch-proving-job.d.ts +5 -12
  17. package/dest/job/epoch-proving-job.d.ts.map +1 -1
  18. package/dest/job/epoch-proving-job.js +94 -84
  19. package/dest/metrics.d.ts +4 -3
  20. package/dest/metrics.d.ts.map +1 -1
  21. package/dest/metrics.js +8 -2
  22. package/dest/monitors/epoch-monitor.d.ts +3 -2
  23. package/dest/monitors/epoch-monitor.d.ts.map +1 -1
  24. package/dest/monitors/epoch-monitor.js +2 -1
  25. package/dest/monitors/index.d.ts +1 -1
  26. package/dest/prover-node-publisher.d.ts +9 -7
  27. package/dest/prover-node-publisher.d.ts.map +1 -1
  28. package/dest/prover-node-publisher.js +43 -37
  29. package/dest/prover-node.d.ts +8 -7
  30. package/dest/prover-node.d.ts.map +1 -1
  31. package/dest/prover-node.js +34 -31
  32. package/dest/prover-publisher-factory.d.ts +4 -2
  33. package/dest/prover-publisher-factory.d.ts.map +1 -1
  34. package/dest/test/index.d.ts +1 -1
  35. package/dest/test/index.d.ts.map +1 -1
  36. package/package.json +26 -25
  37. package/src/bin/run-failed-epoch.ts +1 -1
  38. package/src/config.ts +1 -1
  39. package/src/factory.ts +8 -2
  40. package/src/job/epoch-proving-job-data.ts +31 -25
  41. package/src/job/epoch-proving-job.ts +107 -100
  42. package/src/metrics.ts +15 -3
  43. package/src/monitors/epoch-monitor.ts +4 -3
  44. package/src/prover-node-publisher.ts +62 -52
  45. package/src/prover-node.ts +46 -42
  46. package/src/prover-publisher-factory.ts +3 -1
@@ -8,11 +8,11 @@ export declare function downloadEpochProvingJob(location: string, log: Logger, c
8
8
  dataDirectory: string;
9
9
  jobDataDownloadPath: string;
10
10
  }): Promise<{
11
- rollupVersion: number;
12
11
  l2BlockNumber: number;
13
12
  l2BlockHash: string;
14
- rollupAddress: import("@aztec/foundation/schemas").EthAddress;
15
- l1ChainId: number;
16
13
  l1BlockNumber: number;
14
+ l1ChainId: number;
15
+ rollupVersion: number;
16
+ rollupAddress: import("../../../foundation/dest/eth-address/index.js").EthAddress;
17
17
  }>;
18
- //# sourceMappingURL=download-epoch-proving-job.d.ts.map
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQtZXBvY2gtcHJvdmluZy1qb2IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL2Rvd25sb2FkLWVwb2NoLXByb3Zpbmctam9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBVXBEOzs7O0dBSUc7QUFDSCx3QkFBc0IsdUJBQXVCLENBQzNDLFFBQVEsRUFBRSxNQUFNLEVBQ2hCLEdBQUcsRUFBRSxNQUFNLEVBQ1gsTUFBTSxFQUFFO0lBQ04sYUFBYSxFQUFFLE1BQU0sQ0FBQztJQUN0QixtQkFBbUIsRUFBRSxNQUFNLENBQUM7Q0FDN0I7Ozs7Ozs7R0FxQkYifQ==
@@ -1,3 +1,3 @@
1
1
  export * from './download-epoch-proving-job.js';
2
2
  export * from './rerun-epoch-proving-job.js';
3
- //# sourceMappingURL=index.d.ts.map
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw4QkFBOEIsQ0FBQyJ9
@@ -7,5 +7,5 @@ import { ProverBrokerConfig } from '@aztec/prover-client/broker';
7
7
  * using the state snapshots, and creates a new epoch proving job to prove the downloaded proving job.
8
8
  * Proving is done with a local proving broker and agents as specified by the config.
9
9
  */
10
- export declare function rerunEpochProvingJob(localPath: string, log: Logger, config: DataStoreConfig & ProverBrokerConfig & ProverClientConfig): Promise<"initialized" | "processing" | "awaiting-prover" | "publishing-proof" | "completed" | "failed" | "stopped" | "timed-out" | "reorg">;
11
- //# sourceMappingURL=rerun-epoch-proving-job.d.ts.map
10
+ export declare function rerunEpochProvingJob(localPath: string, log: Logger, config: DataStoreConfig & ProverBrokerConfig & ProverClientConfig): Promise<"awaiting-prover" | "completed" | "failed" | "initialized" | "processing" | "publishing-proof" | "reorg" | "stopped" | "timed-out">;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVydW4tZXBvY2gtcHJvdmluZy1qb2IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL3JlcnVuLWVwb2NoLXByb3Zpbmctam9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLGtCQUFrQixFQUFzQixNQUFNLHNCQUFzQixDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBK0IsTUFBTSw2QkFBNkIsQ0FBQztBQVc5Rjs7OztHQUlHO0FBQ0gsd0JBQXNCLG9CQUFvQixDQUN4QyxTQUFTLEVBQUUsTUFBTSxFQUNqQixHQUFHLEVBQUUsTUFBTSxFQUNYLE1BQU0sRUFBRSxlQUFlLEdBQUcsa0JBQWtCLEdBQUcsa0JBQWtCLCtJQXFDbEUifQ==
@@ -12,4 +12,4 @@ type UploadEpochProofConfig = Pick<ChainConfig, 'l1ChainId' | 'rollupVersion'> &
12
12
  */
13
13
  export declare function uploadEpochProofFailure(location: string, jobId: string, jobData: EpochProvingJobData, archiver: Archiver, worldState: WorldStateSynchronizer, config: UploadEpochProofConfig, log: Logger): Promise<string>;
14
14
  export {};
15
- //# sourceMappingURL=upload-epoch-proof-failure.d.ts.map
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWVwb2NoLXByb29mLWZhaWx1cmUuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL3VwbG9hZC1lcG9jaC1wcm9vZi1mYWlsdXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsS0FBSyxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdyRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUU5RCxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBUTlFLE9BQU8sRUFBRSxLQUFLLG1CQUFtQixFQUFnQyxNQUFNLGtDQUFrQyxDQUFDO0FBRTFHLEtBQUssc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEdBQUcsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUt4SDs7OztHQUlHO0FBQ0gsd0JBQXNCLHVCQUF1QixDQUMzQyxRQUFRLEVBQUUsTUFBTSxFQUNoQixLQUFLLEVBQUUsTUFBTSxFQUNiLE9BQU8sRUFBRSxtQkFBbUIsRUFDNUIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsVUFBVSxFQUFFLHNCQUFzQixFQUNsQyxNQUFNLEVBQUUsc0JBQXNCLEVBQzlCLEdBQUcsRUFBRSxNQUFNLG1CQXVDWiJ9
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=run-failed-epoch.d.ts.map
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLWZhaWxlZC1lcG9jaC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jpbi9ydW4tZmFpbGVkLWVwb2NoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
package/dest/config.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type ArchiverConfig } from '@aztec/archiver/config';
2
2
  import type { ACVMConfig, BBConfig } from '@aztec/bb-prover/config';
3
- import { type GenesisStateConfig } from '@aztec/ethereum';
3
+ import { type GenesisStateConfig } from '@aztec/ethereum/config';
4
4
  import { type ConfigMappingsType } from '@aztec/foundation/config';
5
5
  import { type DataStoreConfig } from '@aztec/kv-store/config';
6
6
  import { type KeyStore, type KeyStoreConfig } from '@aztec/node-keystore';
@@ -28,4 +28,4 @@ export declare function getProverNodeConfigFromEnv(): ProverNodeConfig;
28
28
  export declare function getProverNodeBrokerConfigFromEnv(): ProverBrokerConfig;
29
29
  export declare function getProverNodeAgentConfigFromEnv(): ProverAgentConfig & BBConfig & ACVMConfig;
30
30
  export declare function createKeyStoreForProver(config: ProverNodeConfig): KeyStore | undefined;
31
- //# sourceMappingURL=config.d.ts.map
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBMEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRixPQUFPLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLEtBQUssa0JBQWtCLEVBQThCLE1BQU0sd0JBQXdCLENBQUM7QUFDN0YsT0FBTyxFQUNMLEtBQUssa0JBQWtCLEVBSXhCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLEtBQUssZUFBZSxFQUFzQixNQUFNLHdCQUF3QixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxLQUFLLGNBQWMsRUFBK0MsTUFBTSxzQkFBc0IsQ0FBQztBQUN2SCxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBNEIsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsS0FBSyxTQUFTLEVBQXFCLE1BQU0sbUJBQW1CLENBQUM7QUFDdEUsT0FBTyxFQUNMLEtBQUssaUJBQWlCLEVBQ3RCLEtBQUssa0JBQWtCLEVBR3hCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLEtBQUssc0JBQXNCLEVBQWdELE1BQU0sNkJBQTZCLENBQUM7QUFDeEgsT0FBTyxFQUNMLEtBQUssZUFBZSxFQUNwQixLQUFLLGNBQWMsRUFHcEIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBNEIsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RixNQUFNLE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxHQUMzQyxzQkFBc0IsR0FDdEIsU0FBUyxHQUNULGdCQUFnQixHQUNoQixlQUFlLEdBQ2YsY0FBYyxHQUNkLGVBQWUsR0FDZixjQUFjLEdBQ2QsZ0JBQWdCLEdBQ2hCLHdCQUF3QixHQUN4QixrQkFBa0IsQ0FBQztBQUVyQixNQUFNLE1BQU0sd0JBQXdCLEdBQUc7SUFDckMsd0JBQXdCLEVBQUUsTUFBTSxDQUFDO0lBQ2pDLDJCQUEyQixFQUFFLE1BQU0sQ0FBQztJQUNwQyxtQ0FBbUMsRUFBRSxNQUFNLENBQUM7SUFDNUMsMEJBQTBCLEVBQUUsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUMvQyw2QkFBNkIsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQ2xELDZCQUE2QixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQ3hDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQztJQUM3QixxQkFBcUIsRUFBRSxNQUFNLENBQUM7SUFDOUIsb0JBQW9CLEVBQUUsTUFBTSxDQUFDO0lBQzdCLHFDQUFxQyxFQUFFLE1BQU0sQ0FBQztDQUMvQyxDQUFDO0FBc0RGLGVBQU8sTUFBTSx3QkFBd0IsRUFBRSxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FZekUsQ0FBQztBQUVGLHdCQUFnQiwwQkFBMEIsSUFBSSxnQkFBZ0IsQ0FFN0Q7QUFFRCx3QkFBZ0IsZ0NBQWdDLElBQUksa0JBQWtCLENBSXJFO0FBRUQsd0JBQWdCLCtCQUErQixJQUFJLGlCQUFpQixHQUFHLFFBQVEsR0FBRyxVQUFVLENBSzNGO0FBMERELHdCQUFnQix1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLEdBQUcsUUFBUSxHQUFHLFNBQVMsQ0FNdEYifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,wBAAwB,CAAC;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAA8B,MAAM,iBAAiB,CAAC;AACtF,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAA+C,MAAM,sBAAsB,CAAC;AACvH,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAGxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,KAAK,sBAAsB,EAAgD,MAAM,6BAA6B,CAAC;AACxH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAGpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,2BAA2B,CAAC;AAE5F,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAC3C,sBAAsB,GACtB,SAAS,GACT,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,wBAAwB,GACxB,kBAAkB,CAAC;AAErB,MAAM,MAAM,wBAAwB,GAAG;IACrC,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;IACpC,mCAAmC,EAAE,MAAM,CAAC;IAC5C,0BAA0B,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,6BAA6B,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qCAAqC,EAAE,MAAM,CAAC;CAC/C,CAAC;AAsDF,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,CAAC,gBAAgB,CAYzE,CAAC;AAEF,wBAAgB,0BAA0B,IAAI,gBAAgB,CAE7D;AAED,wBAAgB,gCAAgC,IAAI,kBAAkB,CAIrE;AAED,wBAAgB,+BAA+B,IAAI,iBAAiB,GAAG,QAAQ,GAAG,UAAU,CAK3F;AA0DD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,QAAQ,GAAG,SAAS,CAMtF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,MAAM,wBAAwB,CAAC;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,KAAK,kBAAkB,EAA8B,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAA+C,MAAM,sBAAsB,CAAC;AACvH,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAGxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,KAAK,sBAAsB,EAAgD,MAAM,6BAA6B,CAAC;AACxH,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAGpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,KAAK,gBAAgB,EAA4B,MAAM,2BAA2B,CAAC;AAE5F,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAC3C,sBAAsB,GACtB,SAAS,GACT,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,wBAAwB,GACxB,kBAAkB,CAAC;AAErB,MAAM,MAAM,wBAAwB,GAAG;IACrC,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;IACpC,mCAAmC,EAAE,MAAM,CAAC;IAC5C,0BAA0B,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,6BAA6B,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qCAAqC,EAAE,MAAM,CAAC;CAC/C,CAAC;AAsDF,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,CAAC,gBAAgB,CAYzE,CAAC;AAEF,wBAAgB,0BAA0B,IAAI,gBAAgB,CAE7D;AAED,wBAAgB,gCAAgC,IAAI,kBAAkB,CAIrE;AAED,wBAAgB,+BAA+B,IAAI,iBAAiB,GAAG,QAAQ,GAAG,UAAU,CAK3F;AA0DD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,QAAQ,GAAG,SAAS,CAMtF"}
package/dest/config.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { archiverConfigMappings } from '@aztec/archiver/config';
2
- import { genesisStateConfigMappings } from '@aztec/ethereum';
2
+ import { genesisStateConfigMappings } from '@aztec/ethereum/config';
3
3
  import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
4
4
  import { dataConfigMappings } from '@aztec/kv-store/config';
5
5
  import { ethPrivateKeySchema, keyStoreConfigMappings } from '@aztec/node-keystore';
package/dest/factory.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type Archiver } from '@aztec/archiver';
2
2
  import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
3
- import { L1TxUtils } from '@aztec/ethereum';
3
+ import { L1TxUtils } from '@aztec/ethereum/l1-tx-utils';
4
4
  import { type Logger } from '@aztec/foundation/log';
5
5
  import { DateProvider } from '@aztec/foundation/timer';
6
6
  import type { DataStoreConfig } from '@aztec/kv-store/config';
@@ -26,4 +26,4 @@ export type ProverNodeDeps = {
26
26
  export declare function createProverNode(userConfig: ProverNodeConfig & DataStoreConfig & KeyStoreConfig, deps?: ProverNodeDeps, options?: {
27
27
  prefilledPublicData?: PublicDataTreeLeaf[];
28
28
  }): Promise<ProverNode>;
29
- //# sourceMappingURL=factory.d.ts.map
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssUUFBUSxFQUFrQixNQUFNLGlCQUFpQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxLQUFLLHVCQUF1QixFQUF3QixNQUFNLHlCQUF5QixDQUFDO0FBSTdGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsS0FBSyxNQUFNLEVBQWdCLE1BQU0sdUJBQXVCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxLQUFLLGNBQWMsRUFBa0QsTUFBTSxzQkFBc0IsQ0FBQztBQU0zRyxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVuRixPQUFPLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTlELE9BQU8sRUFBYSxLQUFLLGVBQWUsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUs5RixPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBMkIsTUFBTSxhQUFhLENBQUM7QUFFN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXZFLE1BQU0sTUFBTSxjQUFjLEdBQUc7SUFDM0IsU0FBUyxDQUFDLEVBQUUsZUFBZSxDQUFDO0lBQzVCLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNiLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN0RCxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUM7SUFDcEIsZ0JBQWdCLENBQUMsRUFBRSxzQkFBc0IsQ0FBQztJQUMxQyxjQUFjLENBQUMsRUFBRSx1QkFBdUIsQ0FBQztJQUN6QyxNQUFNLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztJQUMxQixTQUFTLENBQUMsRUFBRSxTQUFTLENBQUM7SUFDdEIsWUFBWSxDQUFDLEVBQUUsWUFBWSxDQUFDO0NBQzdCLENBQUM7QUFFRixnREFBZ0Q7QUFDaEQsd0JBQXNCLGdCQUFnQixDQUNwQyxVQUFVLEVBQUUsZ0JBQWdCLEdBQUcsZUFBZSxHQUFHLGNBQWMsRUFDL0QsSUFBSSxHQUFFLGNBQW1CLEVBQ3pCLE9BQU8sR0FBRTtJQUNQLG1CQUFtQixDQUFDLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztDQUN2Qyx1QkEyS1AifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,KAAK,uBAAuB,EAAwB,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,SAAS,EAAyD,MAAM,iBAAiB,CAAC;AAEnG,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,cAAc,EAAkD,MAAM,sBAAsB,CAAC;AAM3G,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAa,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAK9F,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,aAAa,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,gDAAgD;AAChD,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,gBAAgB,GAAG,eAAe,GAAG,cAAc,EAC/D,IAAI,GAAE,cAAmB,EACzB,OAAO,GAAE;IACP,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACvC,uBAwKP"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAkB,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,KAAK,uBAAuB,EAAwB,MAAM,yBAAyB,CAAC;AAI7F,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAGxD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,cAAc,EAAkD,MAAM,sBAAsB,CAAC;AAM3G,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAa,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAK9F,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,aAAa,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACtD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF,gDAAgD;AAChD,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,gBAAgB,GAAG,eAAe,GAAG,cAAc,EAC/D,IAAI,GAAE,cAAmB,EACzB,OAAO,GAAE;IACP,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACvC,uBA2KP"}
package/dest/factory.js CHANGED
@@ -2,7 +2,9 @@ import { createArchiver } from '@aztec/archiver';
2
2
  import { BBCircuitVerifier, QueuedIVCVerifier, TestCircuitVerifier } from '@aztec/bb-prover';
3
3
  import { createBlobSinkClient } from '@aztec/blob-sink/client';
4
4
  import { EpochCache } from '@aztec/epoch-cache';
5
- import { PublisherManager, RollupContract, createEthereumChain } from '@aztec/ethereum';
5
+ import { createEthereumChain } from '@aztec/ethereum/chain';
6
+ import { RollupContract } from '@aztec/ethereum/contracts';
7
+ import { PublisherManager } from '@aztec/ethereum/publisher-manager';
6
8
  import { pick } from '@aztec/foundation/collection';
7
9
  import { createLogger } from '@aztec/foundation/log';
8
10
  import { DateProvider } from '@aztec/foundation/timer';
@@ -105,7 +107,7 @@ import { ProverPublisherFactory } from './prover-publisher-factory.js';
105
107
  publisherManager: new PublisherManager(l1TxUtils, config),
106
108
  telemetry
107
109
  });
108
- const proofVerifier = new QueuedIVCVerifier(config, config.realProofs ? await BBCircuitVerifier.new(config) : new TestCircuitVerifier());
110
+ const proofVerifier = new QueuedIVCVerifier(config, config.realProofs || config.debugForceTxProofVerification ? await BBCircuitVerifier.new(config) : new TestCircuitVerifier(config.proverTestVerificationDelayMs));
109
111
  const p2pClient = await createP2PClient(P2PClientType.Prover, config, archiver, proofVerifier, worldStateSynchronizer, epochCache, getPackageVersion() ?? '', dateProvider, telemetry, {
110
112
  txCollectionNodeSources: deps.aztecNodeTxProvider ? [
111
113
  new NodeRpcTxSource(deps.aztecNodeTxProvider, 'TestNode')
@@ -113,7 +115,7 @@ import { ProverPublisherFactory } from './prover-publisher-factory.js';
113
115
  });
114
116
  await p2pClient.start();
115
117
  const proverNodeConfig = {
116
- ...pick(config, 'proverNodeMaxPendingJobs', 'proverNodeMaxParallelBlocksPerEpoch', 'proverNodePollingIntervalMs', 'proverNodeEpochProvingDelayMs', 'txGatheringMaxParallelRequests', 'txGatheringIntervalMs', 'txGatheringTimeoutMs', 'proverNodeFailedEpochStore', 'dataDirectory', 'l1ChainId', 'rollupVersion')
118
+ ...pick(config, 'proverNodeMaxPendingJobs', 'proverNodeMaxParallelBlocksPerEpoch', 'proverNodePollingIntervalMs', 'proverNodeEpochProvingDelayMs', 'txGatheringMaxParallelRequests', 'txGatheringIntervalMs', 'txGatheringTimeoutMs', 'proverNodeFailedEpochStore', 'proverNodeDisableProofPublish', 'dataDirectory', 'l1ChainId', 'rollupVersion')
117
119
  };
118
120
  const epochMonitor = await EpochMonitor.create(archiver, {
119
121
  pollingIntervalMs: config.proverNodePollingIntervalMs,
package/dest/index.d.ts CHANGED
@@ -3,4 +3,4 @@ export * from './config.js';
3
3
  export * from './factory.js';
4
4
  export * from './prover-node-publisher.js';
5
5
  export * from './prover-node.js';
6
- //# sourceMappingURL=index.d.ts.map
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxrQkFBa0IsQ0FBQyJ9
@@ -1,16 +1,18 @@
1
- import { Fr } from '@aztec/foundation/fields';
2
- import { CommitteeAttestation, L2Block } from '@aztec/stdlib/block';
1
+ import { CheckpointNumber, EpochNumber } from '@aztec/foundation/branded-types';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { CommitteeAttestation } from '@aztec/stdlib/block';
4
+ import { Checkpoint } from '@aztec/stdlib/checkpoint';
3
5
  import { BlockHeader, Tx } from '@aztec/stdlib/tx';
4
6
  /** All data from an epoch used in proving. */
5
7
  export type EpochProvingJobData = {
6
- epochNumber: bigint;
7
- blocks: L2Block[];
8
+ epochNumber: EpochNumber;
9
+ checkpoints: Checkpoint[];
8
10
  txs: Map<string, Tx>;
9
- l1ToL2Messages: Record<number, Fr[]>;
11
+ l1ToL2Messages: Record<CheckpointNumber, Fr[]>;
10
12
  previousBlockHeader: BlockHeader;
11
13
  attestations: CommitteeAttestation[];
12
14
  };
13
15
  export declare function validateEpochProvingJobData(data: EpochProvingJobData): void;
14
16
  export declare function serializeEpochProvingJobData(data: EpochProvingJobData): Buffer;
15
17
  export declare function deserializeEpochProvingJobData(buf: Buffer): EpochProvingJobData;
16
- //# sourceMappingURL=epoch-proving-job-data.d.ts.map
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtcHJvdmluZy1qb2ItZGF0YS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2pvYi9lcG9jaC1wcm92aW5nLWpvYi1kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsOENBQThDO0FBQzlDLE1BQU0sTUFBTSxtQkFBbUIsR0FBRztJQUNoQyxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQ3pCLFdBQVcsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUMxQixHQUFHLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyQixjQUFjLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0MsbUJBQW1CLEVBQUUsV0FBVyxDQUFDO0lBQ2pDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxDQUFDO0NBQ3RDLENBQUM7QUFFRix3QkFBZ0IsMkJBQTJCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixRQWtCcEU7QUFFRCx3QkFBZ0IsNEJBQTRCLENBQUMsSUFBSSxFQUFFLG1CQUFtQixHQUFHLE1BQU0sQ0FzQjlFO0FBRUQsd0JBQWdCLDhCQUE4QixDQUFDLEdBQUcsRUFBRSxNQUFNLEdBQUcsbUJBQW1CLENBb0IvRSJ9
@@ -1 +1 @@
1
- {"version":3,"file":"epoch-proving-job-data.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEnD,8CAA8C;AAC9C,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IACrC,mBAAmB,EAAE,WAAW,CAAC;IACjC,YAAY,EAAE,oBAAoB,EAAE,CAAC;CACtC,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,mBAAmB,QAcpE;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAsB9E;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAoB/E"}
1
+ {"version":3,"file":"epoch-proving-job-data.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAEpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEnD,8CAA8C;AAC9C,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/C,mBAAmB,EAAE,WAAW,CAAC;IACjC,YAAY,EAAE,oBAAoB,EAAE,CAAC;CACtC,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,mBAAmB,QAkBpE;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAsB9E;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAoB/E"}
@@ -1,40 +1,47 @@
1
- import { Fr } from '@aztec/foundation/fields';
1
+ import { CheckpointNumber, EpochNumber } from '@aztec/foundation/branded-types';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
3
  import { BufferReader, serializeToBuffer } from '@aztec/foundation/serialize';
3
- import { CommitteeAttestation, L2Block } from '@aztec/stdlib/block';
4
+ import { CommitteeAttestation } from '@aztec/stdlib/block';
5
+ import { Checkpoint } from '@aztec/stdlib/checkpoint';
4
6
  import { BlockHeader, Tx } from '@aztec/stdlib/tx';
5
7
  export function validateEpochProvingJobData(data) {
6
- if (data.blocks.length > 0 && data.previousBlockHeader.getBlockNumber() + 1 !== data.blocks[0].number) {
7
- throw new Error(`Initial block number ${data.blocks[0].number} does not match previous block header ${data.previousBlockHeader.getBlockNumber()}`);
8
+ if (data.checkpoints.length === 0) {
9
+ throw new Error('No checkpoints to prove');
8
10
  }
9
- for (const blockNumber of data.blocks.map((block)=>block.number)){
10
- if (!(blockNumber in data.l1ToL2Messages)) {
11
- throw new Error(`Missing L1 to L2 messages for block number ${blockNumber}`);
11
+ const firstBlockNumber = data.checkpoints[0].blocks[0].number;
12
+ const previousBlockNumber = data.previousBlockHeader.getBlockNumber();
13
+ if (previousBlockNumber + 1 !== firstBlockNumber) {
14
+ throw new Error(`Initial block number ${firstBlockNumber} does not match previous block header ${previousBlockNumber}`);
15
+ }
16
+ for (const checkpoint of data.checkpoints){
17
+ if (!(checkpoint.number in data.l1ToL2Messages)) {
18
+ throw new Error(`Missing L1 to L2 messages for checkpoint number ${checkpoint.number}`);
12
19
  }
13
20
  }
14
21
  }
15
22
  export function serializeEpochProvingJobData(data) {
16
- const blocks = data.blocks.map((block)=>block.toBuffer());
23
+ const checkpoints = data.checkpoints.map((checkpoint)=>checkpoint.toBuffer());
17
24
  const txs = Array.from(data.txs.values()).map((tx)=>tx.toBuffer());
18
- const l1ToL2Messages = Object.entries(data.l1ToL2Messages).map(([blockNumber, messages])=>[
19
- Number(blockNumber),
25
+ const l1ToL2Messages = Object.entries(data.l1ToL2Messages).map(([checkpointNumber, messages])=>[
26
+ Number(checkpointNumber),
20
27
  messages.length,
21
28
  ...messages
22
29
  ]);
23
30
  const attestations = data.attestations.map((attestation)=>attestation.toBuffer());
24
- return serializeToBuffer(Number(data.epochNumber), data.previousBlockHeader, blocks.length, ...blocks, txs.length, ...txs, l1ToL2Messages.length, ...l1ToL2Messages, attestations.length, ...attestations);
31
+ return serializeToBuffer(data.epochNumber, data.previousBlockHeader, checkpoints.length, ...checkpoints, txs.length, ...txs, l1ToL2Messages.length, ...l1ToL2Messages, attestations.length, ...attestations);
25
32
  }
26
33
  export function deserializeEpochProvingJobData(buf) {
27
34
  const reader = BufferReader.asReader(buf);
28
- const epochNumber = BigInt(reader.readNumber());
35
+ const epochNumber = EpochNumber(reader.readNumber());
29
36
  const previousBlockHeader = reader.readObject(BlockHeader);
30
- const blocks = reader.readVector(L2Block);
37
+ const checkpoints = reader.readVector(Checkpoint);
31
38
  const txArray = reader.readVector(Tx);
32
- const l1ToL2MessageBlockCount = reader.readNumber();
39
+ const l1ToL2MessageCheckpointCount = reader.readNumber();
33
40
  const l1ToL2Messages = {};
34
- for(let i = 0; i < l1ToL2MessageBlockCount; i++){
35
- const blockNumber = reader.readNumber();
41
+ for(let i = 0; i < l1ToL2MessageCheckpointCount; i++){
42
+ const checkpointNumber = CheckpointNumber(reader.readNumber());
36
43
  const messages = reader.readVector(Fr);
37
- l1ToL2Messages[blockNumber] = messages;
44
+ l1ToL2Messages[checkpointNumber] = messages;
38
45
  }
39
46
  const attestations = reader.readVector(CommitteeAttestation);
40
47
  const txs = new Map(txArray.map((tx)=>[
@@ -44,7 +51,7 @@ export function deserializeEpochProvingJobData(buf) {
44
51
  return {
45
52
  epochNumber,
46
53
  previousBlockHeader,
47
- blocks,
54
+ checkpoints,
48
55
  txs,
49
56
  l1ToL2Messages,
50
57
  attestations
@@ -1,3 +1,4 @@
1
+ import { EpochNumber } from '@aztec/foundation/branded-types';
1
2
  import type { PublicProcessorFactory } from '@aztec/simulator/server';
2
3
  import type { L2BlockSource } from '@aztec/stdlib/block';
3
4
  import { type EpochProver, type EpochProvingJobState, EpochProvingJobTerminalState, type ForkMerkleTreeOperations } from '@aztec/stdlib/interfaces/server';
@@ -35,35 +36,27 @@ export declare class EpochProvingJob implements Traceable {
35
36
  constructor(data: EpochProvingJobData, dbProvider: Pick<ForkMerkleTreeOperations, 'fork'>, prover: EpochProver, publicProcessorFactory: PublicProcessorFactory, publisher: Pick<ProverNodePublisher, 'submitEpochProof'>, l2BlockSource: L2BlockSource | undefined, metrics: ProverNodeJobMetrics, deadline: Date | undefined, config: EpochProvingJobOptions);
36
37
  getId(): string;
37
38
  getState(): EpochProvingJobState;
38
- getEpochNumber(): bigint;
39
+ getEpochNumber(): EpochNumber;
39
40
  getDeadline(): Date | undefined;
40
41
  getProvingData(): EpochProvingJobData;
41
42
  private get epochNumber();
42
- private get blocks();
43
+ private get checkpoints();
43
44
  private get txs();
44
45
  private get attestations();
45
46
  /**
46
47
  * Proves the given epoch and submits the proof to L1.
47
48
  */
48
49
  run(): Promise<void>;
49
- /**
50
- * Create a new db fork for tx processing, inserting all L1 to L2.
51
- * REFACTOR: The prover already spawns a db fork of its own for each block, so we may be able to do away with just one fork.
52
- */
53
50
  private createFork;
54
51
  private progressState;
55
52
  private checkState;
56
53
  stop(state?: EpochProvingJobTerminalState): Promise<void>;
57
54
  private scheduleDeadlineStop;
58
- /**
59
- * Kicks off a running promise that queries the archiver for the set of L2 blocks of the current epoch.
60
- * If those change, stops the proving job with a `rerun` state, so the node re-enqueues it.
61
- */
62
55
  private scheduleEpochCheck;
63
- private getBlockHeader;
56
+ private gatherPreviousBlockHeaders;
64
57
  private getTxs;
65
58
  private getL1ToL2Messages;
66
59
  private processTxs;
67
60
  }
68
61
  export { type EpochProvingJobState };
69
- //# sourceMappingURL=epoch-proving-job.d.ts.map
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXBvY2gtcHJvdmluZy1qb2IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9qb2IvZXBvY2gtcHJvdmluZy1qb2IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBUzNFLE9BQU8sS0FBSyxFQUFtQixzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRXZGLE9BQU8sS0FBSyxFQUFjLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJFLE9BQU8sRUFDTCxLQUFLLFdBQVcsRUFDaEIsS0FBSyxvQkFBb0IsRUFDekIsNEJBQTRCLEVBQzVCLEtBQUssd0JBQXdCLEVBQzlCLE1BQU0saUNBQWlDLENBQUM7QUFJekMsT0FBTyxFQUFjLEtBQUssU0FBUyxFQUFFLEtBQUssTUFBTSxFQUFhLE1BQU0seUJBQXlCLENBQUM7QUFJN0YsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsS0FBSyxtQkFBbUIsRUFBK0IsTUFBTSw2QkFBNkIsQ0FBQztBQUVwRyxNQUFNLE1BQU0sc0JBQXNCLEdBQUc7SUFDbkMsa0JBQWtCLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDNUIsY0FBYyxDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQ3pCLGVBQWUsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUMzQixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILHFCQUFhLGVBQWdCLFlBQVcsU0FBUztJQVk3QyxPQUFPLENBQUMsSUFBSTtJQUNaLE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLHNCQUFzQjtJQUM5QixPQUFPLENBQUMsU0FBUztJQUNqQixPQUFPLENBQUMsYUFBYTtJQUNyQixPQUFPLENBQUMsT0FBTztJQUNmLE9BQU8sQ0FBQyxRQUFRO0lBQ2hCLE9BQU8sQ0FBQyxNQUFNO0lBbkJoQixPQUFPLENBQUMsS0FBSyxDQUF1QztJQUNwRCxPQUFPLENBQUMsR0FBRyxDQUFpRDtJQUM1RCxPQUFPLENBQUMsSUFBSSxDQUFTO0lBRXJCLE9BQU8sQ0FBQyxVQUFVLENBQTRCO0lBQzlDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBNkI7SUFDdEQsT0FBTyxDQUFDLHNCQUFzQixDQUE2QjtJQUUzRCxTQUFnQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBRS9CLFlBQ1UsSUFBSSxFQUFFLG1CQUFtQixFQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLE1BQU0sQ0FBQyxFQUNsRCxNQUFNLEVBQUUsV0FBVyxFQUNuQixzQkFBc0IsRUFBRSxzQkFBc0IsRUFDOUMsU0FBUyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxrQkFBa0IsQ0FBQyxFQUN4RCxhQUFhLEVBQUUsYUFBYSxHQUFHLFNBQVMsRUFDeEMsT0FBTyxFQUFFLG9CQUFvQixFQUM3QixRQUFRLEVBQUUsSUFBSSxHQUFHLFNBQVMsRUFDMUIsTUFBTSxFQUFFLHNCQUFzQixFQUt2QztJQUVNLEtBQUssSUFBSSxNQUFNLENBRXJCO0lBRU0sUUFBUSxJQUFJLG9CQUFvQixDQUV0QztJQUVNLGNBQWMsSUFBSSxXQUFXLENBRW5DO0lBRU0sV0FBVyxJQUFJLElBQUksR0FBRyxTQUFTLENBRXJDO0lBRU0sY0FBYyxJQUFJLG1CQUFtQixDQUUzQztJQUVELE9BQU8sS0FBSyxXQUFXLEdBRXRCO0lBRUQsT0FBTyxLQUFLLFdBQVcsR0FFdEI7SUFFRCxPQUFPLEtBQUssR0FBRyxHQUVkO0lBRUQsT0FBTyxLQUFLLFlBQVksR0FFdkI7SUFFRDs7T0FFRztJQUlVLEdBQUcsa0JBaUxmO1lBTWEsVUFBVTtJQWdCeEIsT0FBTyxDQUFDLGFBQWE7SUFLckIsT0FBTyxDQUFDLFVBQVU7SUFNTCxJQUFJLENBQUMsS0FBSyxHQUFFLDRCQUF3QyxpQkFNaEU7SUFFRCxPQUFPLENBQUMsb0JBQW9CO1lBd0JkLGtCQUFrQjtJQStCaEMsT0FBTyxDQUFDLDBCQUEwQjtJQUtsQyxPQUFPLENBQUMsTUFBTTtJQUlkLE9BQU8sQ0FBQyxpQkFBaUI7WUFJWCxVQUFVO0NBbUJ6QjtBQVNELE9BQU8sRUFBRSxLQUFLLG9CQUFvQixFQUFFLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAmB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,KAAK,EAAW,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,4BAA4B,EAC5B,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,MAAM,EAAa,MAAM,yBAAyB,CAAC;AAI7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,KAAK,mBAAmB,EAA+B,MAAM,6BAA6B,CAAC;AAEpG,MAAM,MAAM,sBAAsB,GAAG;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAY7C,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IAnBhB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,GAAG,CAAiD;IAC5D,OAAO,CAAC,IAAI,CAAS;IAErB,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,sBAAsB,CAA6B;IAE3D,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAGrB,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,EAClD,MAAM,EAAE,WAAW,EACnB,sBAAsB,EAAE,sBAAsB,EAC9C,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,EACxD,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,IAAI,GAAG,SAAS,EAC1B,MAAM,EAAE,sBAAsB;IAOjC,KAAK,IAAI,MAAM;IAIf,QAAQ,IAAI,oBAAoB;IAIhC,cAAc,IAAI,MAAM;IAIxB,WAAW,IAAI,IAAI,GAAG,SAAS;IAI/B,cAAc,IAAI,mBAAmB;IAI5C,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,KAAK,GAAG,GAEd;IAED,OAAO,KAAK,YAAY,GAEvB;IAED;;OAEG;IAIU,GAAG;IAiKhB;;;OAGG;YACW,UAAU;IAgBxB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,UAAU;IAML,IAAI,CAAC,KAAK,GAAE,4BAAwC;IAQjE,OAAO,CAAC,oBAAoB;IAoB5B;;;OAGG;YACW,kBAAkB;IAiChC,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,iBAAiB;YAIX,UAAU;CAmBzB;AASD,OAAO,EAAE,KAAK,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAS3E,OAAO,KAAK,EAAmB,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEvF,OAAO,KAAK,EAAc,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,4BAA4B,EAC5B,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAc,KAAK,SAAS,EAAE,KAAK,MAAM,EAAa,MAAM,yBAAyB,CAAC;AAI7F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,KAAK,mBAAmB,EAA+B,MAAM,6BAA6B,CAAC;AAEpG,MAAM,MAAM,sBAAsB,GAAG;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAY7C,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,sBAAsB;IAC9B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IAnBhB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,GAAG,CAAiD;IAC5D,OAAO,CAAC,IAAI,CAAS;IAErB,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,sBAAsB,CAA6B;IAE3D,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B,YACU,IAAI,EAAE,mBAAmB,EACzB,UAAU,EAAE,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,EAClD,MAAM,EAAE,WAAW,EACnB,sBAAsB,EAAE,sBAAsB,EAC9C,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,EACxD,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE,IAAI,GAAG,SAAS,EAC1B,MAAM,EAAE,sBAAsB,EAKvC;IAEM,KAAK,IAAI,MAAM,CAErB;IAEM,QAAQ,IAAI,oBAAoB,CAEtC;IAEM,cAAc,IAAI,WAAW,CAEnC;IAEM,WAAW,IAAI,IAAI,GAAG,SAAS,CAErC;IAEM,cAAc,IAAI,mBAAmB,CAE3C;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,GAAG,GAEd;IAED,OAAO,KAAK,YAAY,GAEvB;IAED;;OAEG;IAIU,GAAG,kBAiLf;YAMa,UAAU;IAgBxB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,UAAU;IAML,IAAI,CAAC,KAAK,GAAE,4BAAwC,iBAMhE;IAED,OAAO,CAAC,oBAAoB;YAwBd,kBAAkB;IA+BhC,OAAO,CAAC,0BAA0B;IAKlC,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,iBAAiB;YAIX,UAAU;CAmBzB;AASD,OAAO,EAAE,KAAK,oBAAoB,EAAE,CAAC"}
@@ -6,14 +6,16 @@ function _ts_decorate(decorators, target, key, desc) {
6
6
  }
7
7
  import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
8
8
  import { asyncPool } from '@aztec/foundation/async-pool';
9
+ import { BlockNumber } from '@aztec/foundation/branded-types';
9
10
  import { padArrayEnd } from '@aztec/foundation/collection';
10
- import { Fr } from '@aztec/foundation/fields';
11
+ import { Fr } from '@aztec/foundation/curves/bn254';
11
12
  import { createLogger } from '@aztec/foundation/log';
12
13
  import { RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
13
14
  import { Timer } from '@aztec/foundation/timer';
14
15
  import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
15
16
  import { protocolContractsHash } from '@aztec/protocol-contracts';
16
17
  import { buildFinalBlobChallenges } from '@aztec/prover-client/helpers';
18
+ import { PublicSimulatorConfig } from '@aztec/stdlib/avm';
17
19
  import { EpochProvingJobTerminalState } from '@aztec/stdlib/interfaces/server';
18
20
  import { CheckpointConstantData } from '@aztec/stdlib/rollup';
19
21
  import { MerkleTreeId } from '@aztec/stdlib/trees';
@@ -75,8 +77,8 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
75
77
  get epochNumber() {
76
78
  return this.data.epochNumber;
77
79
  }
78
- get blocks() {
79
- return this.data.blocks;
80
+ get checkpoints() {
81
+ return this.data.checkpoints;
80
82
  }
81
83
  get txs() {
82
84
  return this.data.txs;
@@ -92,17 +94,18 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
92
94
  await this.scheduleEpochCheck();
93
95
  }
94
96
  const attestations = this.attestations.map((attestation)=>attestation.toViem());
95
- const epochNumber = Number(this.epochNumber);
96
- const epochSizeBlocks = this.blocks.length;
97
- const epochSizeTxs = this.blocks.reduce((total, current)=>total + current.body.txEffects.length, 0);
98
- const [fromBlock, toBlock] = [
99
- this.blocks[0].number,
100
- this.blocks.at(-1).number
101
- ];
102
- this.log.info(`Starting epoch ${epochNumber} proving job with blocks ${fromBlock} to ${toBlock}`, {
97
+ const epochNumber = this.epochNumber;
98
+ const epochSizeCheckpoints = this.checkpoints.length;
99
+ const epochSizeBlocks = this.checkpoints.reduce((accum, checkpoint)=>accum + checkpoint.blocks.length, 0);
100
+ const epochSizeTxs = this.checkpoints.reduce((accum, checkpoint)=>accum + checkpoint.blocks.reduce((accumC, block)=>accumC + block.body.txEffects.length, 0), 0);
101
+ const fromCheckpoint = this.checkpoints[0].number;
102
+ const toCheckpoint = this.checkpoints.at(-1).number;
103
+ const fromBlock = this.checkpoints[0].blocks[0].number;
104
+ const toBlock = this.checkpoints.at(-1).blocks.at(-1).number;
105
+ this.log.info(`Starting epoch ${epochNumber} proving job with checkpoints ${fromCheckpoint} to ${toCheckpoint}`, {
103
106
  fromBlock,
104
107
  toBlock,
105
- epochSizeBlocks,
108
+ epochSizeTxs,
106
109
  epochNumber,
107
110
  uuid: this.uuid
108
111
  });
@@ -111,66 +114,75 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
111
114
  const { promise, resolve } = promiseWithResolvers();
112
115
  this.runPromise = promise;
113
116
  try {
114
- const blobFieldsPerCheckpoint = this.blocks.map((block)=>block.getCheckpointBlobFields());
117
+ const blobFieldsPerCheckpoint = this.checkpoints.map((checkpoint)=>checkpoint.toBlobFields());
115
118
  const finalBlobBatchingChallenges = await buildFinalBlobChallenges(blobFieldsPerCheckpoint);
116
- // TODO(#17027): Enable multiple blocks per checkpoint.
117
- // Total number of checkpoints equals number of blocks because we currently build a checkpoint with only one block.
118
- const totalNumCheckpoints = epochSizeBlocks;
119
- this.prover.startNewEpoch(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges);
120
- await this.prover.startTubeCircuits(Array.from(this.txs.values()));
121
- await asyncPool(this.config.parallelBlockLimit ?? 32, this.blocks, async (block)=>{
119
+ this.prover.startNewEpoch(epochNumber, epochSizeCheckpoints, finalBlobBatchingChallenges);
120
+ await this.prover.startChonkVerifierCircuits(Array.from(this.txs.values()));
121
+ // Everything in the epoch should have the same chainId and version.
122
+ const { chainId, version } = this.checkpoints[0].blocks[0].header.globalVariables;
123
+ const previousBlockHeaders = this.gatherPreviousBlockHeaders();
124
+ await asyncPool(this.config.parallelBlockLimit ?? 32, this.checkpoints, async (checkpoint)=>{
122
125
  this.checkState();
123
- const globalVariables = block.header.globalVariables;
124
- const txs = this.getTxs(block);
125
- const l1ToL2Messages = this.getL1ToL2Messages(block);
126
- const previousHeader = this.getBlockHeader(block.number - 1);
127
- this.log.verbose(`Starting processing block ${block.number}`, {
128
- number: block.number,
129
- blockHash: (await block.hash()).toString(),
130
- lastArchive: block.header.lastArchive.root,
131
- noteHashTreeRoot: block.header.state.partial.noteHashTree.root,
132
- nullifierTreeRoot: block.header.state.partial.nullifierTree.root,
133
- publicDataTreeRoot: block.header.state.partial.publicDataTree.root,
134
- previousHeader: previousHeader.hash(),
135
- uuid: this.uuid,
136
- ...globalVariables
137
- });
126
+ const checkpointIndex = checkpoint.number - fromCheckpoint;
138
127
  const checkpointConstants = CheckpointConstantData.from({
139
- chainId: globalVariables.chainId,
140
- version: globalVariables.version,
128
+ chainId,
129
+ version,
141
130
  vkTreeRoot: getVKTreeRoot(),
142
131
  protocolContractsHash: protocolContractsHash,
143
132
  proverId: this.prover.getProverId().toField(),
144
- slotNumber: globalVariables.slotNumber,
145
- coinbase: globalVariables.coinbase,
146
- feeRecipient: globalVariables.feeRecipient,
147
- gasFees: globalVariables.gasFees
133
+ slotNumber: checkpoint.header.slotNumber,
134
+ coinbase: checkpoint.header.coinbase,
135
+ feeRecipient: checkpoint.header.feeRecipient,
136
+ gasFees: checkpoint.header.gasFees
148
137
  });
149
- // TODO(#17027): Enable multiple blocks per checkpoint.
150
- // Each checkpoint has only one block.
151
- const totalNumBlocks = 1;
152
- const checkpointIndex = block.number - fromBlock;
153
- await this.prover.startNewCheckpoint(checkpointIndex, checkpointConstants, l1ToL2Messages, totalNumBlocks, blobFieldsPerCheckpoint[checkpointIndex].length, previousHeader);
154
- // Start block proving
155
- await this.prover.startNewBlock(block.number, globalVariables.timestamp, txs.length);
156
- // Process public fns
157
- const db = await this.createFork(block.number - 1, l1ToL2Messages);
158
- const publicProcessor = this.publicProcessorFactory.create(db, globalVariables, {
159
- skipFeeEnforcement: true,
160
- clientInitiatedSimulation: false,
161
- proverId: this.prover.getProverId().toField()
162
- });
163
- const processed = await this.processTxs(publicProcessor, txs);
164
- await this.prover.addTxs(processed);
165
- await db.close();
166
- this.log.verbose(`Processed all ${txs.length} txs for block ${block.number}`, {
167
- blockNumber: block.number,
168
- blockHash: (await block.hash()).toString(),
138
+ const previousHeader = previousBlockHeaders[checkpointIndex];
139
+ const l1ToL2Messages = this.getL1ToL2Messages(checkpoint);
140
+ this.log.verbose(`Starting processing checkpoint ${checkpoint.number}`, {
141
+ number: checkpoint.number,
142
+ checkpointHash: checkpoint.hash().toString(),
143
+ lastArchive: checkpoint.header.lastArchiveRoot,
144
+ previousHeader: previousHeader.hash(),
169
145
  uuid: this.uuid
170
146
  });
171
- // Mark block as completed to pad it
172
- const expectedBlockHeader = block.getBlockHeader();
173
- await this.prover.setBlockCompleted(block.number, expectedBlockHeader);
147
+ await this.prover.startNewCheckpoint(checkpointIndex, checkpointConstants, l1ToL2Messages, checkpoint.blocks.length, previousHeader);
148
+ for (const block of checkpoint.blocks){
149
+ const globalVariables = block.header.globalVariables;
150
+ const txs = this.getTxs(block);
151
+ this.log.verbose(`Starting processing block ${block.number}`, {
152
+ number: block.number,
153
+ blockHash: (await block.hash()).toString(),
154
+ lastArchive: block.header.lastArchive.root,
155
+ noteHashTreeRoot: block.header.state.partial.noteHashTree.root,
156
+ nullifierTreeRoot: block.header.state.partial.nullifierTree.root,
157
+ publicDataTreeRoot: block.header.state.partial.publicDataTree.root,
158
+ ...globalVariables,
159
+ numTxs: txs.length
160
+ });
161
+ // Start block proving
162
+ await this.prover.startNewBlock(block.number, globalVariables.timestamp, txs.length);
163
+ // Process public fns
164
+ const db = await this.createFork(BlockNumber(block.number - 1), l1ToL2Messages);
165
+ const config = PublicSimulatorConfig.from({
166
+ proverId: this.prover.getProverId().toField(),
167
+ skipFeeEnforcement: false,
168
+ collectDebugLogs: false,
169
+ collectHints: true,
170
+ collectPublicInputs: true,
171
+ collectStatistics: false
172
+ });
173
+ const publicProcessor = this.publicProcessorFactory.create(db, globalVariables, config);
174
+ const processed = await this.processTxs(publicProcessor, txs);
175
+ await this.prover.addTxs(processed);
176
+ await db.close();
177
+ this.log.verbose(`Processed all ${txs.length} txs for block ${block.number}`, {
178
+ blockNumber: block.number,
179
+ blockHash: (await block.hash()).toString(),
180
+ uuid: this.uuid
181
+ });
182
+ // Mark block as completed to pad it
183
+ const expectedBlockHeader = block.header;
184
+ await this.prover.setBlockCompleted(block.number, expectedBlockHeader);
185
+ }
174
186
  });
175
187
  const executionTime = timer.ms();
176
188
  this.progressState('awaiting-prover');
@@ -182,14 +194,14 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
182
194
  });
183
195
  this.progressState('publishing-proof');
184
196
  if (this.config.skipSubmitProof) {
185
- this.log.info(`Proof publishing is disabled. Dropping valid proof for epoch ${epochNumber} (blocks ${fromBlock} to ${toBlock})`);
197
+ this.log.info(`Proof publishing is disabled. Dropping valid proof for epoch ${epochNumber} (checkpoints ${fromCheckpoint} to ${toCheckpoint})`);
186
198
  this.state = 'completed';
187
- this.metrics.recordProvingJob(executionTime, timer.ms(), epochSizeBlocks, epochSizeTxs);
199
+ this.metrics.recordProvingJob(executionTime, timer.ms(), epochSizeCheckpoints, epochSizeBlocks, epochSizeTxs);
188
200
  return;
189
201
  }
190
202
  const success = await this.publisher.submitEpochProof({
191
- fromBlock,
192
- toBlock,
203
+ fromCheckpoint,
204
+ toCheckpoint,
193
205
  epochNumber,
194
206
  publicInputs,
195
207
  proof,
@@ -199,12 +211,12 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
199
211
  if (!success) {
200
212
  throw new Error('Failed to submit epoch proof to L1');
201
213
  }
202
- this.log.info(`Submitted proof for epoch ${epochNumber} (blocks ${fromBlock} to ${toBlock})`, {
214
+ this.log.info(`Submitted proof for epoch ${epochNumber} (checkpoints ${fromCheckpoint} to ${toCheckpoint})`, {
203
215
  epochNumber,
204
216
  uuid: this.uuid
205
217
  });
206
218
  this.state = 'completed';
207
- this.metrics.recordProvingJob(executionTime, timer.ms(), epochSizeBlocks, epochSizeTxs);
219
+ this.metrics.recordProvingJob(executionTime, timer.ms(), epochSizeCheckpoints, epochSizeBlocks, epochSizeTxs);
208
220
  } catch (err) {
209
221
  if (err && err.name === 'HaltExecutionError') {
210
222
  this.log.warn(`Halted execution of epoch ${epochNumber} prover job`, {
@@ -236,7 +248,7 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
236
248
  const l1ToL2MessagesPadded = padArrayEnd(l1ToL2Messages, Fr.ZERO, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, 'Too many L1 to L2 messages');
237
249
  this.log.verbose(`Creating fork at ${blockNumber} with ${l1ToL2Messages.length} L1 to L2 messages`, {
238
250
  blockNumber,
239
- l1ToL2Messages: l1ToL2MessagesPadded.map((m)=>m.toString())
251
+ l1ToL2Messages: l1ToL2Messages.map((m)=>m.toString())
240
252
  });
241
253
  await db.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2MessagesPadded);
242
254
  return db;
@@ -294,8 +306,9 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
294
306
  this.epochCheckPromise = new RunningPromise(async ()=>{
295
307
  const blocks = await l2BlockSource.getBlockHeadersForEpoch(this.epochNumber);
296
308
  const blockHashes = await Promise.all(blocks.map((block)=>block.hash()));
297
- const thisBlockHashes = await Promise.all(this.blocks.map((block)=>block.hash()));
298
- if (blocks.length !== this.blocks.length || !blockHashes.every((block, i)=>block.equals(thisBlockHashes[i]))) {
309
+ const thisBlocks = this.checkpoints.flatMap((checkpoint)=>checkpoint.blocks);
310
+ const thisBlockHashes = await Promise.all(thisBlocks.map((block)=>block.hash()));
311
+ if (blocks.length !== thisBlocks.length || !blockHashes.every((block, i)=>block.equals(thisBlockHashes[i]))) {
299
312
  this.log.warn('Epoch blocks changed underfoot', {
300
313
  uuid: this.uuid,
301
314
  epochNumber: this.epochNumber,
@@ -307,21 +320,18 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
307
320
  }, this.log, intervalMs).start();
308
321
  this.log.verbose(`Scheduled epoch check for epoch ${this.epochNumber} every ${intervalMs}ms`);
309
322
  }
310
- /* Returns the header for the given block number based on the epoch proving job data. */ getBlockHeader(blockNumber) {
311
- const block = this.blocks.find((b)=>b.number === blockNumber);
312
- if (block) {
313
- return block.getBlockHeader();
314
- }
315
- if (blockNumber === Number(this.data.previousBlockHeader.getBlockNumber())) {
316
- return this.data.previousBlockHeader;
317
- }
318
- throw new Error(`Block header not found for block number ${blockNumber} (got ${this.blocks.map((b)=>b.number).join(', ')} and previous header ${this.data.previousBlockHeader.getBlockNumber()})`);
323
+ /* Returns the last block header in the previous checkpoint for all checkpoints in the epoch */ gatherPreviousBlockHeaders() {
324
+ const lastBlocks = this.checkpoints.map((checkpoint)=>checkpoint.blocks.at(-1));
325
+ return [
326
+ this.data.previousBlockHeader,
327
+ ...lastBlocks.map((block)=>block.header).slice(0, -1)
328
+ ];
319
329
  }
320
330
  getTxs(block) {
321
331
  return block.body.txEffects.map((txEffect)=>this.txs.get(txEffect.txHash.toString()));
322
332
  }
323
- getL1ToL2Messages(block) {
324
- return this.data.l1ToL2Messages[block.number];
333
+ getL1ToL2Messages(checkpoint) {
334
+ return this.data.l1ToL2Messages[checkpoint.number];
325
335
  }
326
336
  async processTxs(publicProcessor, txs) {
327
337
  const { deadline } = this;
@@ -341,7 +351,7 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
341
351
  _ts_decorate([
342
352
  trackSpan('EpochProvingJob.run', function() {
343
353
  return {
344
- [Attributes.EPOCH_NUMBER]: Number(this.data.epochNumber)
354
+ [Attributes.EPOCH_NUMBER]: this.data.epochNumber
345
355
  };
346
356
  })
347
357
  ], EpochProvingJob.prototype, "run", null);