@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.
- package/dest/bin/run-failed-epoch.js +1 -1
- package/dest/config.d.ts +1 -1
- package/dest/config.d.ts.map +1 -1
- package/dest/factory.d.ts.map +1 -1
- package/dest/factory.js +1 -0
- package/dest/job/epoch-proving-job.d.ts.map +1 -1
- package/dest/job/epoch-proving-job.js +35 -9
- package/dest/prover-node-publisher.d.ts +1 -1
- package/dest/prover-node-publisher.d.ts.map +1 -1
- package/dest/prover-node-publisher.js +4 -4
- package/package.json +23 -23
- package/src/bin/run-failed-epoch.ts +1 -1
- package/src/config.ts +1 -1
- package/src/factory.ts +2 -0
- package/src/job/epoch-proving-job.ts +46 -12
- package/src/prover-node-publisher.ts +6 -4
|
@@ -18,7 +18,7 @@ async function rerunFailedEpoch(provingJobUrl, baseLocalDir) {
|
|
|
18
18
|
const config = {
|
|
19
19
|
...getProverNodeConfigFromEnv(),
|
|
20
20
|
dataDirectory: dataDir,
|
|
21
|
-
|
|
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;
|
package/dest/config.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dest/factory.d.ts.map
CHANGED
|
@@ -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,
|
|
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":"
|
|
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
|
|
112
|
-
const finalBlobBatchingChallenges = await
|
|
113
|
-
|
|
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(
|
|
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,
|
|
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
|
-
|
|
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.
|
|
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 {
|
|
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,
|
|
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
|
-
|
|
117
|
-
|
|
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": "
|
|
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": "
|
|
60
|
-
"@aztec/bb-prover": "
|
|
61
|
-
"@aztec/blob-lib": "
|
|
62
|
-
"@aztec/blob-sink": "
|
|
63
|
-
"@aztec/constants": "
|
|
64
|
-
"@aztec/epoch-cache": "
|
|
65
|
-
"@aztec/ethereum": "
|
|
66
|
-
"@aztec/foundation": "
|
|
67
|
-
"@aztec/kv-store": "
|
|
68
|
-
"@aztec/l1-artifacts": "
|
|
69
|
-
"@aztec/node-keystore": "
|
|
70
|
-
"@aztec/node-lib": "
|
|
71
|
-
"@aztec/noir-protocol-circuits-types": "
|
|
72
|
-
"@aztec/p2p": "
|
|
73
|
-
"@aztec/protocol-contracts": "
|
|
74
|
-
"@aztec/prover-client": "
|
|
75
|
-
"@aztec/sequencer-client": "
|
|
76
|
-
"@aztec/simulator": "
|
|
77
|
-
"@aztec/stdlib": "
|
|
78
|
-
"@aztec/telemetry-client": "
|
|
79
|
-
"@aztec/world-state": "
|
|
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.
|
|
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
|
-
|
|
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
|
|
133
|
-
|
|
134
|
-
).flat();
|
|
135
|
+
const blobFieldsPerCheckpoint = this.blocks.map(block => block.getCheckpointBlobFields());
|
|
136
|
+
const finalBlobBatchingChallenges = await buildFinalBlobChallenges(blobFieldsPerCheckpoint);
|
|
135
137
|
|
|
136
|
-
|
|
137
|
-
|
|
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(
|
|
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,
|
|
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
|
-
|
|
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.
|
|
370
|
+
return block.getBlockHeader();
|
|
337
371
|
}
|
|
338
372
|
|
|
339
373
|
if (blockNumber === Number(this.data.previousBlockHeader.getBlockNumber())) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
183
|
+
const finalBlobAccumulator = batchedBlobInputs.toFinalBlobAccumulator();
|
|
184
|
+
if (!publicInputs.blobPublicInputs.equals(finalBlobAccumulator)) {
|
|
183
185
|
throw new Error(
|
|
184
|
-
`Batched blob mismatch: ${inspect(publicInputs.blobPublicInputs)} !== ${inspect(
|
|
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
|