@aztec/prover-node 2.1.0-rc.9 → 3.0.0-devnet.2

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.
@@ -18,7 +18,7 @@ async function rerunFailedEpoch(provingJobUrl, baseLocalDir) {
18
18
  const config = {
19
19
  ...getProverNodeConfigFromEnv(),
20
20
  dataDirectory: dataDir,
21
- dataStoreMapSizeKB: env.dataStoreMapSizeKB ?? 1024 * 1024,
21
+ dataStoreMapSizeKb: env.dataStoreMapSizeKb ?? 1024 * 1024,
22
22
  proverId: env.proverId ?? EthAddress.random()
23
23
  };
24
24
  let metadata;
package/dest/config.d.ts CHANGED
@@ -16,8 +16,8 @@ export type SpecificProverNodeConfig = {
16
16
  proverNodePollingIntervalMs: number;
17
17
  proverNodeMaxParallelBlocksPerEpoch: number;
18
18
  proverNodeFailedEpochStore: string | undefined;
19
- proverNodeDisableProofPublish?: boolean;
20
19
  proverNodeEpochProvingDelayMs: number | undefined;
20
+ proverNodeDisableProofPublish?: boolean;
21
21
  txGatheringTimeoutMs: number;
22
22
  txGatheringIntervalMs: number;
23
23
  txGatheringBatchSize: number;
@@ -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,CAAC,EAAE,OAAO,CAAC;IACxC,6BAA6B,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,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,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 +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,uBAsKP"}
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"}
package/dest/factory.js CHANGED
@@ -53,6 +53,7 @@ import { ProverPublisherFactory } from './prover-publisher-factory.js';
53
53
  } else if (!keyStoreProvided) {
54
54
  log.warn('KEY STORE CREATED FROM ENVIRONMENT, IT IS RECOMMENDED TO USE A FILE-BASED KEY STORE IN PRODUCTION ENVIRONMENTS');
55
55
  }
56
+ log.info(`Creating prover with publishers ${proverSigners.signers.map((signer)=>signer.address.toString()).join()}`);
56
57
  // Only consider user provided config if it is valid
57
58
  const proverIdInUserConfig = config.proverId === undefined || config.proverId.isZero() ? undefined : config.proverId;
58
59
  // ProverId: Take from key store if provided, otherwise from user config if valid, otherwise address of first signer
@@ -1 +1 @@
1
- {"version":3,"file":"epoch-proving-job.d.ts","sourceRoot":"","sources":["../../src/job/epoch-proving-job.ts"],"names":[],"mappings":"AAQA,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;AAGzC,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;IAiIhB;;;OAGG;YACW,UAAU;IAgBxB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,UAAU;IAML,IAAI,CAAC,KAAK,GAAE,4BAAwC;IASjE,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":"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"}
@@ -4,7 +4,6 @@ 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 { BatchedBlob, Blob } from '@aztec/blob-lib';
8
7
  import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
9
8
  import { asyncPool } from '@aztec/foundation/async-pool';
10
9
  import { padArrayEnd } from '@aztec/foundation/collection';
@@ -12,7 +11,11 @@ import { Fr } from '@aztec/foundation/fields';
12
11
  import { createLogger } from '@aztec/foundation/log';
13
12
  import { RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
14
13
  import { Timer } from '@aztec/foundation/timer';
14
+ import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
15
+ import { protocolContractsHash } from '@aztec/protocol-contracts';
16
+ import { buildFinalBlobChallenges } from '@aztec/prover-client/helpers';
15
17
  import { EpochProvingJobTerminalState } from '@aztec/stdlib/interfaces/server';
18
+ import { CheckpointConstantData } from '@aztec/stdlib/rollup';
16
19
  import { MerkleTreeId } from '@aztec/stdlib/trees';
17
20
  import { Attributes, trackSpan } from '@aztec/telemetry-client';
18
21
  import * as crypto from 'node:crypto';
@@ -108,9 +111,12 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
108
111
  const { promise, resolve } = promiseWithResolvers();
109
112
  this.runPromise = promise;
110
113
  try {
111
- const allBlobs = (await Promise.all(this.blocks.map(async (block)=>await Blob.getBlobsPerBlock(block.body.toBlobFields())))).flat();
112
- const finalBlobBatchingChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(allBlobs);
113
- this.prover.startNewEpoch(epochNumber, fromBlock, epochSizeBlocks, finalBlobBatchingChallenges);
114
+ const blobFieldsPerCheckpoint = this.blocks.map((block)=>block.getCheckpointBlobFields());
115
+ 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);
114
120
  await this.prover.startTubeCircuits(Array.from(this.txs.values()));
115
121
  await asyncPool(this.config.parallelBlockLimit ?? 32, this.blocks, async (block)=>{
116
122
  this.checkState();
@@ -129,11 +135,31 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
129
135
  uuid: this.uuid,
130
136
  ...globalVariables
131
137
  });
138
+ const checkpointConstants = CheckpointConstantData.from({
139
+ chainId: globalVariables.chainId,
140
+ version: globalVariables.version,
141
+ vkTreeRoot: getVKTreeRoot(),
142
+ protocolContractsHash: protocolContractsHash,
143
+ proverId: this.prover.getProverId().toField(),
144
+ slotNumber: globalVariables.slotNumber,
145
+ coinbase: globalVariables.coinbase,
146
+ feeRecipient: globalVariables.feeRecipient,
147
+ gasFees: globalVariables.gasFees
148
+ });
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);
132
154
  // Start block proving
133
- await this.prover.startNewBlock(globalVariables, l1ToL2Messages, previousHeader);
155
+ await this.prover.startNewBlock(block.number, globalVariables.timestamp, txs.length);
134
156
  // Process public fns
135
157
  const db = await this.createFork(block.number - 1, l1ToL2Messages);
136
- const publicProcessor = this.publicProcessorFactory.create(db, globalVariables, true);
158
+ const publicProcessor = this.publicProcessorFactory.create(db, globalVariables, {
159
+ skipFeeEnforcement: true,
160
+ clientInitiatedSimulation: false,
161
+ proverId: this.prover.getProverId().toField()
162
+ });
137
163
  const processed = await this.processTxs(publicProcessor, txs);
138
164
  await this.prover.addTxs(processed);
139
165
  await db.close();
@@ -143,7 +169,8 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
143
169
  uuid: this.uuid
144
170
  });
145
171
  // Mark block as completed to pad it
146
- await this.prover.setBlockCompleted(block.number, block.header);
172
+ const expectedBlockHeader = block.getBlockHeader();
173
+ await this.prover.setBlockCompleted(block.number, expectedBlockHeader);
147
174
  });
148
175
  const executionTime = timer.ms();
149
176
  this.progressState('awaiting-prover');
@@ -226,7 +253,6 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
226
253
  async stop(state = 'stopped') {
227
254
  this.state = state;
228
255
  this.prover.cancel();
229
- // TODO(palla/prover): Stop the publisher as well
230
256
  if (this.runPromise) {
231
257
  await this.runPromise;
232
258
  }
@@ -284,7 +310,7 @@ import { validateEpochProvingJobData } from './epoch-proving-job-data.js';
284
310
  /* Returns the header for the given block number based on the epoch proving job data. */ getBlockHeader(blockNumber) {
285
311
  const block = this.blocks.find((b)=>b.number === blockNumber);
286
312
  if (block) {
287
- return block.header;
313
+ return block.getBlockHeader();
288
314
  }
289
315
  if (blockNumber === Number(this.data.previousBlockHeader.getBlockNumber())) {
290
316
  return this.data.previousBlockHeader;
@@ -1,4 +1,4 @@
1
- import { type BatchedBlob } from '@aztec/blob-lib';
1
+ import type { BatchedBlob } from '@aztec/blob-lib';
2
2
  import { AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants';
3
3
  import type { L1TxUtils, RollupContract, ViemCommitteeAttestation } from '@aztec/ethereum';
4
4
  import { EthAddress } from '@aztec/foundation/eth-address';
@@ -1 +1 @@
1
- {"version":3,"file":"prover-node-publisher.d.ts","sourceRoot":"","sources":["../src/prover-node-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAoC,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAG3F,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAGzD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAOnF,sEAAsE;AACtE,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,EAAE,CAAC;IACpB,UAAU,EAAE,EAAE,CAAC;IACf,YAAY,EAAE,EAAE,CAAC;IACjB,OAAO,EAAE,EAAE,CAAC;IACZ,QAAQ,EAAE,EAAE,CAAC;IACb,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,wBAAwB,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAA6B;IAE5C,SAAS,CAAC,GAAG,yCAA+C;IAE5D,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAEzC,SAAgB,SAAS,EAAE,SAAS,CAAC;gBAGnC,MAAM,EAAE,cAAc,GAAG,eAAe,EACxC,IAAI,EAAE;QACJ,cAAc,EAAE,cAAc,CAAC;QAC/B,SAAS,EAAE,SAAS,CAAC;QACrB,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B;IAUI,iBAAiB;IAIxB;;;;;OAKG;IACI,SAAS;IAKhB,wDAAwD;IACjD,OAAO;IAKP,gBAAgB;IAIV,gBAAgB,CAAC,IAAI,EAAE;QAClC,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,sBAAsB,CAAC;QACrC,KAAK,EAAE,KAAK,CAAC;QACb,iBAAiB,EAAE,WAAW,CAAC;QAC/B,YAAY,EAAE,wBAAwB,EAAE,CAAC;KAC1C,GAAG,OAAO,CAAC,OAAO,CAAC;YAiDN,4BAA4B;YA0D5B,sBAAsB;IAyCpC,OAAO,CAAC,6BAA6B;IAyBrC,OAAO,CAAC,uBAAuB;CAuBhC"}
1
+ {"version":3,"file":"prover-node-publisher.d.ts","sourceRoot":"","sources":["../src/prover-node-publisher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAG3F,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAGzD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAOnF,sEAAsE;AACtE,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,EAAE,CAAC;IACpB,UAAU,EAAE,EAAE,CAAC;IACf,YAAY,EAAE,EAAE,CAAC;IACjB,OAAO,EAAE,EAAE,CAAC;IACZ,QAAQ,EAAE,EAAE,CAAC;IACb,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,wBAAwB,CAAC,CAAC;IAC3D,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAA6B;IAE5C,SAAS,CAAC,GAAG,yCAA+C;IAE5D,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAEzC,SAAgB,SAAS,EAAE,SAAS,CAAC;gBAGnC,MAAM,EAAE,cAAc,GAAG,eAAe,EACxC,IAAI,EAAE;QACJ,cAAc,EAAE,cAAc,CAAC;QAC/B,SAAS,EAAE,SAAS,CAAC;QACrB,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B;IAUI,iBAAiB;IAIxB;;;;;OAKG;IACI,SAAS;IAKhB,wDAAwD;IACjD,OAAO;IAKP,gBAAgB;IAIV,gBAAgB,CAAC,IAAI,EAAE;QAClC,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,sBAAsB,CAAC;QACrC,KAAK,EAAE,KAAK,CAAC;QACb,iBAAiB,EAAE,WAAW,CAAC;QAC/B,YAAY,EAAE,wBAAwB,EAAE,CAAC;KAC1C,GAAG,OAAO,CAAC,OAAO,CAAC;YAkDN,4BAA4B;YA2D5B,sBAAsB;IAyCpC,OAAO,CAAC,6BAA6B;IAyBrC,OAAO,CAAC,uBAAuB;CAuBhC"}
@@ -1,4 +1,3 @@
1
- import { FinalBlobAccumulatorPublicInputs } from '@aztec/blob-lib';
2
1
  import { AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants';
3
2
  import { makeTuple } from '@aztec/foundation/array';
4
3
  import { areArraysEqual } from '@aztec/foundation/collection';
@@ -113,8 +112,9 @@ export class ProverNodePublisher {
113
112
  throw new Error(`End archive root mismatch: ${publicInputs.endArchiveRoot.toString()} !== ${endBlockLog.archive}`);
114
113
  }
115
114
  // Check the batched blob inputs from the root rollup against the batched blob computed in ts
116
- if (!publicInputs.blobPublicInputs.equals(FinalBlobAccumulatorPublicInputs.fromBatchedBlob(batchedBlobInputs))) {
117
- throw new Error(`Batched blob mismatch: ${inspect(publicInputs.blobPublicInputs)} !== ${inspect(FinalBlobAccumulatorPublicInputs.fromBatchedBlob(batchedBlobInputs))}`);
115
+ const finalBlobAccumulator = batchedBlobInputs.toFinalBlobAccumulator();
116
+ if (!publicInputs.blobPublicInputs.equals(finalBlobAccumulator)) {
117
+ throw new Error(`Batched blob mismatch: ${inspect(publicInputs.blobPublicInputs)} !== ${inspect(finalBlobAccumulator)}`);
118
118
  }
119
119
  // Compare the public inputs computed by the contract with the ones injected
120
120
  const rollupPublicInputs = await this.rollupContract.getEpochProofPublicInputs(this.getEpochProofPublicInputsArgs(args));
@@ -168,7 +168,7 @@ export class ProverNodePublisher {
168
168
  {
169
169
  previousArchive: args.publicInputs.previousArchiveRoot.toString(),
170
170
  endArchive: args.publicInputs.endArchiveRoot.toString(),
171
- proverId: EthAddress.fromField(args.publicInputs.proverId).toString()
171
+ proverId: EthAddress.fromField(args.publicInputs.constants.proverId).toString()
172
172
  } /*_args*/ ,
173
173
  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()),
174
174
  args.batchedBlobInputs.getEthBlobEvaluationInputs()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/prover-node",
3
- "version": "2.1.0-rc.9",
3
+ "version": "3.0.0-devnet.2",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -56,30 +56,30 @@
56
56
  ]
57
57
  },
58
58
  "dependencies": {
59
- "@aztec/archiver": "2.1.0-rc.9",
60
- "@aztec/bb-prover": "2.1.0-rc.9",
61
- "@aztec/blob-lib": "2.1.0-rc.9",
62
- "@aztec/blob-sink": "2.1.0-rc.9",
63
- "@aztec/constants": "2.1.0-rc.9",
64
- "@aztec/epoch-cache": "2.1.0-rc.9",
65
- "@aztec/ethereum": "2.1.0-rc.9",
66
- "@aztec/foundation": "2.1.0-rc.9",
67
- "@aztec/kv-store": "2.1.0-rc.9",
68
- "@aztec/l1-artifacts": "2.1.0-rc.9",
69
- "@aztec/node-keystore": "2.1.0-rc.9",
70
- "@aztec/node-lib": "2.1.0-rc.9",
71
- "@aztec/noir-protocol-circuits-types": "2.1.0-rc.9",
72
- "@aztec/p2p": "2.1.0-rc.9",
73
- "@aztec/protocol-contracts": "2.1.0-rc.9",
74
- "@aztec/prover-client": "2.1.0-rc.9",
75
- "@aztec/sequencer-client": "2.1.0-rc.9",
76
- "@aztec/simulator": "2.1.0-rc.9",
77
- "@aztec/stdlib": "2.1.0-rc.9",
78
- "@aztec/telemetry-client": "2.1.0-rc.9",
79
- "@aztec/world-state": "2.1.0-rc.9",
59
+ "@aztec/archiver": "3.0.0-devnet.2",
60
+ "@aztec/bb-prover": "3.0.0-devnet.2",
61
+ "@aztec/blob-lib": "3.0.0-devnet.2",
62
+ "@aztec/blob-sink": "3.0.0-devnet.2",
63
+ "@aztec/constants": "3.0.0-devnet.2",
64
+ "@aztec/epoch-cache": "3.0.0-devnet.2",
65
+ "@aztec/ethereum": "3.0.0-devnet.2",
66
+ "@aztec/foundation": "3.0.0-devnet.2",
67
+ "@aztec/kv-store": "3.0.0-devnet.2",
68
+ "@aztec/l1-artifacts": "3.0.0-devnet.2",
69
+ "@aztec/node-keystore": "3.0.0-devnet.2",
70
+ "@aztec/node-lib": "3.0.0-devnet.2",
71
+ "@aztec/noir-protocol-circuits-types": "3.0.0-devnet.2",
72
+ "@aztec/p2p": "3.0.0-devnet.2",
73
+ "@aztec/protocol-contracts": "3.0.0-devnet.2",
74
+ "@aztec/prover-client": "3.0.0-devnet.2",
75
+ "@aztec/sequencer-client": "3.0.0-devnet.2",
76
+ "@aztec/simulator": "3.0.0-devnet.2",
77
+ "@aztec/stdlib": "3.0.0-devnet.2",
78
+ "@aztec/telemetry-client": "3.0.0-devnet.2",
79
+ "@aztec/world-state": "3.0.0-devnet.2",
80
80
  "source-map-support": "^0.5.21",
81
81
  "tslib": "^2.4.0",
82
- "viem": "2.23.7"
82
+ "viem": "npm:@spalladino/viem@2.38.2-eip7594.0"
83
83
  },
84
84
  "devDependencies": {
85
85
  "@jest/globals": "^30.0.0",
@@ -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
 
package/src/config.ts CHANGED
@@ -43,8 +43,8 @@ export type SpecificProverNodeConfig = {
43
43
  proverNodePollingIntervalMs: number;
44
44
  proverNodeMaxParallelBlocksPerEpoch: number;
45
45
  proverNodeFailedEpochStore: string | undefined;
46
- proverNodeDisableProofPublish?: boolean;
47
46
  proverNodeEpochProvingDelayMs: number | undefined;
47
+ proverNodeDisableProofPublish?: boolean;
48
48
  txGatheringTimeoutMs: number;
49
49
  txGatheringIntervalMs: number;
50
50
  txGatheringBatchSize: number;
package/src/factory.ts CHANGED
@@ -82,6 +82,8 @@ export async function createProverNode(
82
82
  );
83
83
  }
84
84
 
85
+ log.info(`Creating prover with publishers ${proverSigners.signers.map(signer => signer.address.toString()).join()}`);
86
+
85
87
  // Only consider user provided config if it is valid
86
88
  const proverIdInUserConfig = config.proverId === undefined || config.proverId.isZero() ? undefined : config.proverId;
87
89
 
@@ -1,4 +1,3 @@
1
- import { BatchedBlob, Blob } from '@aztec/blob-lib';
2
1
  import { NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP } from '@aztec/constants';
3
2
  import { asyncPool } from '@aztec/foundation/async-pool';
4
3
  import { padArrayEnd } from '@aztec/foundation/collection';
@@ -6,6 +5,9 @@ import { Fr } from '@aztec/foundation/fields';
6
5
  import { createLogger } from '@aztec/foundation/log';
7
6
  import { RunningPromise, promiseWithResolvers } from '@aztec/foundation/promise';
8
7
  import { Timer } from '@aztec/foundation/timer';
8
+ import { getVKTreeRoot } from '@aztec/noir-protocol-circuits-types/vk-tree';
9
+ import { protocolContractsHash } from '@aztec/protocol-contracts';
10
+ import { buildFinalBlobChallenges } from '@aztec/prover-client/helpers';
9
11
  import type { PublicProcessor, PublicProcessorFactory } from '@aztec/simulator/server';
10
12
  import type { L2Block, L2BlockSource } from '@aztec/stdlib/block';
11
13
  import {
@@ -14,6 +16,7 @@ import {
14
16
  EpochProvingJobTerminalState,
15
17
  type ForkMerkleTreeOperations,
16
18
  } from '@aztec/stdlib/interfaces/server';
19
+ import { CheckpointConstantData } from '@aztec/stdlib/rollup';
17
20
  import { MerkleTreeId } from '@aztec/stdlib/trees';
18
21
  import type { ProcessedTx, Tx } from '@aztec/stdlib/tx';
19
22
  import { Attributes, type Traceable, type Tracer, trackSpan } from '@aztec/telemetry-client';
@@ -129,12 +132,14 @@ export class EpochProvingJob implements Traceable {
129
132
  this.runPromise = promise;
130
133
 
131
134
  try {
132
- const allBlobs = (
133
- await Promise.all(this.blocks.map(async block => await Blob.getBlobsPerBlock(block.body.toBlobFields())))
134
- ).flat();
135
+ const blobFieldsPerCheckpoint = this.blocks.map(block => block.getCheckpointBlobFields());
136
+ const finalBlobBatchingChallenges = await buildFinalBlobChallenges(blobFieldsPerCheckpoint);
135
137
 
136
- const finalBlobBatchingChallenges = await BatchedBlob.precomputeBatchedBlobChallenges(allBlobs);
137
- this.prover.startNewEpoch(epochNumber, fromBlock, epochSizeBlocks, finalBlobBatchingChallenges);
138
+ // TODO(#17027): Enable multiple blocks per checkpoint.
139
+ // Total number of checkpoints equals number of blocks because we currently build a checkpoint with only one block.
140
+ const totalNumCheckpoints = epochSizeBlocks;
141
+
142
+ this.prover.startNewEpoch(epochNumber, totalNumCheckpoints, finalBlobBatchingChallenges);
138
143
  await this.prover.startTubeCircuits(Array.from(this.txs.values()));
139
144
 
140
145
  await asyncPool(this.config.parallelBlockLimit ?? 32, this.blocks, async block => {
@@ -157,12 +162,41 @@ export class EpochProvingJob implements Traceable {
157
162
  ...globalVariables,
158
163
  });
159
164
 
165
+ const checkpointConstants = CheckpointConstantData.from({
166
+ chainId: globalVariables.chainId,
167
+ version: globalVariables.version,
168
+ vkTreeRoot: getVKTreeRoot(),
169
+ protocolContractsHash: protocolContractsHash,
170
+ proverId: this.prover.getProverId().toField(),
171
+ slotNumber: globalVariables.slotNumber,
172
+ coinbase: globalVariables.coinbase,
173
+ feeRecipient: globalVariables.feeRecipient,
174
+ gasFees: globalVariables.gasFees,
175
+ });
176
+
177
+ // TODO(#17027): Enable multiple blocks per checkpoint.
178
+ // Each checkpoint has only one block.
179
+ const totalNumBlocks = 1;
180
+ const checkpointIndex = block.number - fromBlock;
181
+ await this.prover.startNewCheckpoint(
182
+ checkpointIndex,
183
+ checkpointConstants,
184
+ l1ToL2Messages,
185
+ totalNumBlocks,
186
+ blobFieldsPerCheckpoint[checkpointIndex].length,
187
+ previousHeader,
188
+ );
189
+
160
190
  // Start block proving
161
- await this.prover.startNewBlock(globalVariables, l1ToL2Messages, previousHeader);
191
+ await this.prover.startNewBlock(block.number, globalVariables.timestamp, txs.length);
162
192
 
163
193
  // Process public fns
164
194
  const db = await this.createFork(block.number - 1, l1ToL2Messages);
165
- const publicProcessor = this.publicProcessorFactory.create(db, globalVariables, true);
195
+ const publicProcessor = this.publicProcessorFactory.create(db, globalVariables, {
196
+ skipFeeEnforcement: true,
197
+ clientInitiatedSimulation: false,
198
+ proverId: this.prover.getProverId().toField(),
199
+ });
166
200
  const processed = await this.processTxs(publicProcessor, txs);
167
201
  await this.prover.addTxs(processed);
168
202
  await db.close();
@@ -173,7 +207,8 @@ export class EpochProvingJob implements Traceable {
173
207
  });
174
208
 
175
209
  // Mark block as completed to pad it
176
- await this.prover.setBlockCompleted(block.number, block.header);
210
+ const expectedBlockHeader = block.getBlockHeader();
211
+ await this.prover.setBlockCompleted(block.number, expectedBlockHeader);
177
212
  });
178
213
 
179
214
  const executionTime = timer.ms();
@@ -239,7 +274,7 @@ export class EpochProvingJob implements Traceable {
239
274
  */
240
275
  private async createFork(blockNumber: number, l1ToL2Messages: Fr[]) {
241
276
  const db = await this.dbProvider.fork(blockNumber);
242
- const l1ToL2MessagesPadded = padArrayEnd(
277
+ const l1ToL2MessagesPadded = padArrayEnd<Fr, number>(
243
278
  l1ToL2Messages,
244
279
  Fr.ZERO,
245
280
  NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP,
@@ -267,7 +302,6 @@ export class EpochProvingJob implements Traceable {
267
302
  public async stop(state: EpochProvingJobTerminalState = 'stopped') {
268
303
  this.state = state;
269
304
  this.prover.cancel();
270
- // TODO(palla/prover): Stop the publisher as well
271
305
  if (this.runPromise) {
272
306
  await this.runPromise;
273
307
  }
@@ -333,7 +367,7 @@ export class EpochProvingJob implements Traceable {
333
367
  private getBlockHeader(blockNumber: number) {
334
368
  const block = this.blocks.find(b => b.number === blockNumber);
335
369
  if (block) {
336
- return block.header;
370
+ return block.getBlockHeader();
337
371
  }
338
372
 
339
373
  if (blockNumber === Number(this.data.previousBlockHeader.getBlockNumber())) {
@@ -1,4 +1,4 @@
1
- import { type BatchedBlob, FinalBlobAccumulatorPublicInputs } from '@aztec/blob-lib';
1
+ import type { BatchedBlob } from '@aztec/blob-lib';
2
2
  import { AZTEC_MAX_EPOCH_DURATION } from '@aztec/constants';
3
3
  import type { L1TxUtils, RollupContract, ViemCommitteeAttestation } from '@aztec/ethereum';
4
4
  import { makeTuple } from '@aztec/foundation/array';
@@ -95,6 +95,7 @@ export class ProverNodePublisher {
95
95
  }): Promise<boolean> {
96
96
  const { epochNumber, fromBlock, toBlock } = args;
97
97
  const ctx = { epochNumber, fromBlock, toBlock };
98
+
98
99
  if (!this.interrupted) {
99
100
  const timer = new Timer();
100
101
  // Validate epoch proof range and hashes are correct before submitting
@@ -179,9 +180,10 @@ export class ProverNodePublisher {
179
180
  }
180
181
 
181
182
  // Check the batched blob inputs from the root rollup against the batched blob computed in ts
182
- if (!publicInputs.blobPublicInputs.equals(FinalBlobAccumulatorPublicInputs.fromBatchedBlob(batchedBlobInputs))) {
183
+ const finalBlobAccumulator = batchedBlobInputs.toFinalBlobAccumulator();
184
+ if (!publicInputs.blobPublicInputs.equals(finalBlobAccumulator)) {
183
185
  throw new Error(
184
- `Batched blob mismatch: ${inspect(publicInputs.blobPublicInputs)} !== ${inspect(FinalBlobAccumulatorPublicInputs.fromBatchedBlob(batchedBlobInputs))}`,
186
+ `Batched blob mismatch: ${inspect(publicInputs.blobPublicInputs)} !== ${inspect(finalBlobAccumulator)}`,
185
187
  );
186
188
  }
187
189
 
@@ -254,7 +256,7 @@ export class ProverNodePublisher {
254
256
  {
255
257
  previousArchive: args.publicInputs.previousArchiveRoot.toString(),
256
258
  endArchive: args.publicInputs.endArchiveRoot.toString(),
257
- proverId: EthAddress.fromField(args.publicInputs.proverId).toString(),
259
+ proverId: EthAddress.fromField(args.publicInputs.constants.proverId).toString(),
258
260
  } /*_args*/,
259
261
  makeTuple(AZTEC_MAX_EPOCH_DURATION * 2, i =>
260
262
  i % 2 === 0