@aztec/prover-node 0.72.1 → 0.74.0

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 (44) hide show
  1. package/dest/bond/escrow-contract.d.ts +2 -5
  2. package/dest/bond/escrow-contract.d.ts.map +1 -1
  3. package/dest/bond/escrow-contract.js +1 -1
  4. package/dest/bond/factory.d.ts +3 -6
  5. package/dest/bond/factory.d.ts.map +1 -1
  6. package/dest/bond/factory.js +2 -4
  7. package/dest/bond/token-contract.d.ts +2 -5
  8. package/dest/bond/token-contract.d.ts.map +1 -1
  9. package/dest/bond/token-contract.js +1 -1
  10. package/dest/factory.d.ts +4 -2
  11. package/dest/factory.d.ts.map +1 -1
  12. package/dest/factory.js +13 -9
  13. package/dest/index.d.ts +3 -2
  14. package/dest/index.d.ts.map +1 -1
  15. package/dest/index.js +4 -3
  16. package/dest/job/epoch-proving-job.d.ts +2 -2
  17. package/dest/job/epoch-proving-job.d.ts.map +1 -1
  18. package/dest/job/epoch-proving-job.js +14 -8
  19. package/dest/metrics.d.ts +13 -1
  20. package/dest/metrics.d.ts.map +1 -1
  21. package/dest/metrics.js +74 -2
  22. package/dest/monitors/claims-monitor.d.ts +2 -2
  23. package/dest/monitors/claims-monitor.d.ts.map +1 -1
  24. package/dest/monitors/claims-monitor.js +1 -1
  25. package/dest/prover-node-publisher.d.ts +67 -0
  26. package/dest/prover-node-publisher.d.ts.map +1 -0
  27. package/dest/prover-node-publisher.js +185 -0
  28. package/dest/prover-node.d.ts +3 -3
  29. package/dest/prover-node.d.ts.map +1 -1
  30. package/dest/prover-node.js +1 -1
  31. package/dest/test/index.d.ts +2 -2
  32. package/dest/test/index.d.ts.map +1 -1
  33. package/package.json +18 -18
  34. package/src/bond/escrow-contract.ts +2 -15
  35. package/src/bond/factory.ts +4 -24
  36. package/src/bond/token-contract.ts +2 -15
  37. package/src/factory.ts +16 -9
  38. package/src/index.ts +3 -2
  39. package/src/job/epoch-proving-job.ts +15 -9
  40. package/src/metrics.ts +107 -1
  41. package/src/monitors/claims-monitor.ts +3 -2
  42. package/src/prover-node-publisher.ts +281 -0
  43. package/src/prover-node.ts +2 -2
  44. package/src/test/index.ts +2 -2
@@ -51,4 +51,4 @@ let ClaimsMonitor = (() => {
51
51
  _a;
52
52
  })();
53
53
  export { ClaimsMonitor };
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW1zLW1vbml0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uaXRvcnMvY2xhaW1zLW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFbkUsT0FBTyxFQUlMLGtCQUFrQixFQUNsQixTQUFTLEdBQ1YsTUFBTSx5QkFBeUIsQ0FBQztJQU1wQixhQUFhOzs7O3NCQUFiLGFBQWE7WUFTeEIsWUFDbUIsV0FBd0IsRUFDakMsT0FBc0MsRUFDOUMsWUFBNkIsa0JBQWtCLEVBQUU7Z0JBRmhDLGdCQUFXLElBVm5CLG1EQUFhLEVBVUwsV0FBVyxFQUFhO2dCQUNqQyxZQUFPLEdBQVAsT0FBTyxDQUErQjtnQkFUeEMsUUFBRyxHQUFHLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2dCQVl2RCxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDM0csQ0FBQztZQUVNLEtBQUssQ0FBQyxPQUE2QjtnQkFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLDZDQUE2QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqSCxDQUFDO1lBRU0sS0FBSyxDQUFDLElBQUk7Z0JBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7WUFHTSxLQUFLLENBQUMsSUFBSTtnQkFDZixNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzFELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztvQkFDdkMsT0FBTztnQkFDVCxDQUFDO2dCQUVELElBQUksSUFBSSxDQUFDLG9CQUFvQixLQUFLLFNBQVMsSUFBSSxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO29CQUNuRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsVUFBVSxDQUFDLFlBQVksT0FBTyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDbEgsSUFBSSxVQUFVLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLENBQUM7d0JBQzVELE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzlDLENBQUM7b0JBQ0QsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxZQUFZLENBQUM7Z0JBQ3RELENBQUM7WUFDSCxDQUFDO1lBRVMsZ0JBQWdCO2dCQUN4QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM3QyxDQUFDOzs7O2dDQW5CQSxTQUFTLENBQUMsb0JBQW9CLENBQUM7WUFDaEMsNkpBQWEsSUFBSSw2REFjaEI7Ozs7O1NBN0NVLGFBQWEifQ==
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW1zLW1vbml0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9uaXRvcnMvY2xhaW1zLW1vbml0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUlMLGtCQUFrQixFQUNsQixTQUFTLEdBQ1YsTUFBTSx5QkFBeUIsQ0FBQztJQVFwQixhQUFhOzs7O3NCQUFiLGFBQWE7WUFTeEIsWUFDbUIsV0FBZ0MsRUFDekMsT0FBc0MsRUFDOUMsWUFBNkIsa0JBQWtCLEVBQUU7Z0JBRmhDLGdCQUFXLElBVm5CLG1EQUFhLEVBVUwsV0FBVyxFQUFxQjtnQkFDekMsWUFBTyxHQUFQLE9BQU8sQ0FBK0I7Z0JBVHhDLFFBQUcsR0FBRyxZQUFZLENBQUMsNEJBQTRCLENBQUMsQ0FBQztnQkFZdkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzNHLENBQUM7WUFFTSxLQUFLLENBQUMsT0FBNkI7Z0JBQ3hDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO2dCQUN2QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyw2Q0FBNkMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakgsQ0FBQztZQUVNLEtBQUssQ0FBQyxJQUFJO2dCQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLHdCQUF3QixDQUFDLENBQUM7Z0JBQzNDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBR00sS0FBSyxDQUFDLElBQUk7Z0JBQ2YsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7b0JBQ3ZDLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxTQUFTLElBQUksVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztvQkFDbkcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLFVBQVUsQ0FBQyxZQUFZLE9BQU8sVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2xILElBQUksVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsRUFBRSxDQUFDO3dCQUM1RCxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUM5QyxDQUFDO29CQUNELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO2dCQUN0RCxDQUFDO1lBQ0gsQ0FBQztZQUVTLGdCQUFnQjtnQkFDeEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0MsQ0FBQzs7OztnQ0FuQkEsU0FBUyxDQUFDLG9CQUFvQixDQUFDO1lBQ2hDLDZKQUFhLElBQUksNkRBY2hCOzs7OztTQTdDVSxhQUFhIn0=
@@ -0,0 +1,67 @@
1
+ import { AZTEC_MAX_EPOCH_DURATION, type Proof } from '@aztec/circuits.js';
2
+ import { type FeeRecipient, type RootRollupPublicInputs } from '@aztec/circuits.js/rollup';
3
+ import { type L1TxUtils, type RollupContract } from '@aztec/ethereum';
4
+ import { EthAddress } from '@aztec/foundation/eth-address';
5
+ import { Fr } from '@aztec/foundation/fields';
6
+ import { type Tuple } from '@aztec/foundation/serialize';
7
+ import { type PublisherConfig, type TxSenderConfig } from '@aztec/sequencer-client';
8
+ import { type TelemetryClient } from '@aztec/telemetry-client';
9
+ /**
10
+ * Stats for a sent transaction.
11
+ */
12
+ /** Arguments to the submitEpochProof method of the rollup contract */
13
+ export type L1SubmitEpochProofArgs = {
14
+ epochSize: number;
15
+ previousArchive: Fr;
16
+ endArchive: Fr;
17
+ previousBlockHash: Fr;
18
+ endBlockHash: Fr;
19
+ endTimestamp: Fr;
20
+ outHash: Fr;
21
+ proverId: Fr;
22
+ fees: Tuple<FeeRecipient, typeof AZTEC_MAX_EPOCH_DURATION>;
23
+ proof: Proof;
24
+ };
25
+ export declare class ProverNodePublisher {
26
+ private interruptibleSleep;
27
+ private sleepTimeMs;
28
+ private interrupted;
29
+ private metrics;
30
+ protected log: import("@aztec/foundation/log").Logger;
31
+ protected rollupContract: RollupContract;
32
+ readonly l1TxUtils: L1TxUtils;
33
+ constructor(config: TxSenderConfig & PublisherConfig, deps: {
34
+ rollupContract: RollupContract;
35
+ l1TxUtils: L1TxUtils;
36
+ telemetry?: TelemetryClient;
37
+ });
38
+ /**
39
+ * Calling `interrupt` will cause any in progress call to `publishRollup` to return `false` asap.
40
+ * Be warned, the call may return false even if the tx subsequently gets successfully mined.
41
+ * In practice this shouldn't matter, as we'll only ever be calling `interrupt` when we know it's going to fail.
42
+ * A call to `restart` is required before you can continue publishing.
43
+ */
44
+ interrupt(): void;
45
+ /** Restarts the publisher after calling `interrupt`. */
46
+ restart(): void;
47
+ getSenderAddress(): EthAddress;
48
+ getProofClaim(): Promise<{
49
+ epochToProve: bigint;
50
+ basisPointFee: bigint;
51
+ bondAmount: bigint;
52
+ bondProvider: EthAddress;
53
+ proposerClaimant: EthAddress;
54
+ } | undefined>;
55
+ submitEpochProof(args: {
56
+ epochNumber: number;
57
+ fromBlock: number;
58
+ toBlock: number;
59
+ publicInputs: RootRollupPublicInputs;
60
+ proof: Proof;
61
+ }): Promise<boolean>;
62
+ private validateEpochProofSubmission;
63
+ private sendSubmitEpochProofTx;
64
+ private getSubmitEpochProofArgs;
65
+ protected sleepOrInterrupted(): Promise<void>;
66
+ }
67
+ //# sourceMappingURL=prover-node-publisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prover-node-publisher.d.ts","sourceRoot":"","sources":["../src/prover-node-publisher.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,wBAAwB,EAAE,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAC3F,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,KAAK,KAAK,EAAqB,MAAM,6BAA6B,CAAC;AAI5E,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,yBAAyB,CAAC;AAMnF;;GAEG;AACH,sEAAsE;AACtE,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,EAAE,CAAC;IACpB,UAAU,EAAE,EAAE,CAAC;IACf,iBAAiB,EAAE,EAAE,CAAC;IACtB,YAAY,EAAE,EAAE,CAAC;IACjB,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,kBAAkB,CAA4B;IACtD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAoB;IAEnC,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;IAYH;;;;;OAKG;IACI,SAAS;IAKhB,wDAAwD;IACjD,OAAO;IAIP,gBAAgB;IAIhB,aAAa;;;;;;;IAIP,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;KACd,GAAG,OAAO,CAAC,OAAO,CAAC;YA0CN,4BAA4B;YAyD5B,sBAAsB;IAmDpC,OAAO,CAAC,uBAAuB;cA8Bf,kBAAkB;CAGnC"}
@@ -0,0 +1,185 @@
1
+ import { AGGREGATION_OBJECT_LENGTH, AZTEC_MAX_EPOCH_DURATION } from '@aztec/circuits.js';
2
+ import { makeTuple } from '@aztec/foundation/array';
3
+ import { areArraysEqual, times } from '@aztec/foundation/collection';
4
+ import { EthAddress } from '@aztec/foundation/eth-address';
5
+ import { Fr } from '@aztec/foundation/fields';
6
+ import { createLogger } from '@aztec/foundation/log';
7
+ import { serializeToBuffer } from '@aztec/foundation/serialize';
8
+ import { InterruptibleSleep } from '@aztec/foundation/sleep';
9
+ import { Timer } from '@aztec/foundation/timer';
10
+ import { RollupAbi } from '@aztec/l1-artifacts';
11
+ import { getTelemetryClient } from '@aztec/telemetry-client';
12
+ import { encodeFunctionData } from 'viem';
13
+ import { ProverNodeMetrics } from './metrics.js';
14
+ export class ProverNodePublisher {
15
+ constructor(config, deps) {
16
+ this.interruptibleSleep = new InterruptibleSleep();
17
+ this.interrupted = false;
18
+ this.log = createLogger('prover-node:l1-tx-publisher');
19
+ this.sleepTimeMs = config?.l1PublishRetryIntervalMS ?? 60000;
20
+ const telemetry = deps.telemetry ?? getTelemetryClient();
21
+ this.metrics = new ProverNodeMetrics(telemetry, 'ProverNode');
22
+ this.rollupContract = deps.rollupContract;
23
+ this.l1TxUtils = deps.l1TxUtils;
24
+ }
25
+ /**
26
+ * Calling `interrupt` will cause any in progress call to `publishRollup` to return `false` asap.
27
+ * Be warned, the call may return false even if the tx subsequently gets successfully mined.
28
+ * In practice this shouldn't matter, as we'll only ever be calling `interrupt` when we know it's going to fail.
29
+ * A call to `restart` is required before you can continue publishing.
30
+ */
31
+ interrupt() {
32
+ this.interrupted = true;
33
+ this.interruptibleSleep.interrupt();
34
+ }
35
+ /** Restarts the publisher after calling `interrupt`. */
36
+ restart() {
37
+ this.interrupted = false;
38
+ }
39
+ getSenderAddress() {
40
+ return EthAddress.fromString(this.l1TxUtils.getSenderAddress());
41
+ }
42
+ getProofClaim() {
43
+ return this.rollupContract.getProofClaim();
44
+ }
45
+ async submitEpochProof(args) {
46
+ const { epochNumber, fromBlock, toBlock } = args;
47
+ const ctx = { epochNumber, fromBlock, toBlock };
48
+ if (!this.interrupted) {
49
+ const timer = new Timer();
50
+ // Validate epoch proof range and hashes are correct before submitting
51
+ await this.validateEpochProofSubmission(args);
52
+ const txReceipt = await this.sendSubmitEpochProofTx(args);
53
+ if (!txReceipt) {
54
+ return false;
55
+ }
56
+ // Tx was mined successfully
57
+ if (txReceipt.status) {
58
+ const tx = await this.l1TxUtils.getTransactionStats(txReceipt.transactionHash);
59
+ const stats = {
60
+ gasPrice: txReceipt.effectiveGasPrice,
61
+ gasUsed: txReceipt.gasUsed,
62
+ transactionHash: txReceipt.transactionHash,
63
+ calldataGas: tx.calldataGas,
64
+ calldataSize: tx.calldataSize,
65
+ sender: tx.sender,
66
+ blobDataGas: 0n,
67
+ blobGasUsed: 0n,
68
+ eventName: 'proof-published-to-l1',
69
+ };
70
+ this.log.info(`Published epoch proof to L1 rollup contract`, { ...stats, ...ctx });
71
+ this.metrics.recordSubmitProof(timer.ms(), stats);
72
+ return true;
73
+ }
74
+ this.metrics.recordFailedTx();
75
+ this.log.error(`Rollup.submitEpochProof tx status failed: ${txReceipt.transactionHash}`, ctx);
76
+ await this.sleepOrInterrupted();
77
+ }
78
+ this.log.verbose('L2 block data syncing interrupted while processing blocks.', ctx);
79
+ return false;
80
+ }
81
+ async validateEpochProofSubmission(args) {
82
+ const { fromBlock, toBlock, publicInputs, proof } = args;
83
+ // Check that the block numbers match the expected epoch to be proven
84
+ const { pendingBlockNumber: pending, provenBlockNumber: proven } = await this.rollupContract.getTips();
85
+ if (proven !== BigInt(fromBlock) - 1n) {
86
+ throw new Error(`Cannot submit epoch proof for ${fromBlock}-${toBlock} as proven block is ${proven}`);
87
+ }
88
+ if (toBlock > pending) {
89
+ throw new Error(`Cannot submit epoch proof for ${fromBlock}-${toBlock} as pending block is ${pending}`);
90
+ }
91
+ // Check the block hash and archive for the immediate block before the epoch
92
+ const blockLog = await this.rollupContract.getBlock(proven);
93
+ if (publicInputs.previousArchive.root.toString() !== blockLog.archive) {
94
+ throw new Error(`Previous archive root mismatch: ${publicInputs.previousArchive.root.toString()} !== ${blockLog.archive}`);
95
+ }
96
+ // TODO: Remove zero check once we inject the proper zero blockhash
97
+ if (blockLog.blockHash !== Fr.ZERO.toString() && publicInputs.previousBlockHash.toString() !== blockLog.blockHash) {
98
+ throw new Error(`Previous block hash mismatch: ${publicInputs.previousBlockHash.toString()} !== ${blockLog.blockHash}`);
99
+ }
100
+ // Check the block hash and archive for the last block in the epoch
101
+ const endBlockLog = await this.rollupContract.getBlock(BigInt(toBlock));
102
+ if (publicInputs.endArchive.root.toString() !== endBlockLog.archive) {
103
+ throw new Error(`End archive root mismatch: ${publicInputs.endArchive.root.toString()} !== ${endBlockLog.archive}`);
104
+ }
105
+ if (publicInputs.endBlockHash.toString() !== endBlockLog.blockHash) {
106
+ throw new Error(`End block hash mismatch: ${publicInputs.endBlockHash.toString()} !== ${endBlockLog.blockHash}`);
107
+ }
108
+ // Compare the public inputs computed by the contract with the ones injected
109
+ const rollupPublicInputs = await this.rollupContract.getEpochProofPublicInputs(this.getSubmitEpochProofArgs(args));
110
+ const aggregationObject = proof.isEmpty()
111
+ ? times(AGGREGATION_OBJECT_LENGTH, Fr.zero)
112
+ : proof.extractAggregationObject();
113
+ const argsPublicInputs = [...publicInputs.toFields(), ...aggregationObject];
114
+ if (!areArraysEqual(rollupPublicInputs.map(Fr.fromHexString), argsPublicInputs, (a, b) => a.equals(b))) {
115
+ const fmt = (inputs) => inputs.map(x => x.toString()).join(', ');
116
+ throw new Error(`Root rollup public inputs mismatch:\nRollup: ${fmt(rollupPublicInputs)}\nComputed:${fmt(argsPublicInputs)}`);
117
+ }
118
+ }
119
+ async sendSubmitEpochProofTx(args) {
120
+ const proofHex = `0x${args.proof.withoutPublicInputs().toString('hex')}`;
121
+ const argsArray = this.getSubmitEpochProofArgs(args);
122
+ const txArgs = [
123
+ {
124
+ epochSize: argsArray[0],
125
+ args: argsArray[1],
126
+ fees: argsArray[2],
127
+ blobPublicInputs: argsArray[3],
128
+ aggregationObject: argsArray[4],
129
+ proof: proofHex,
130
+ },
131
+ ];
132
+ this.log.info(`SubmitEpochProof proofSize=${args.proof.withoutPublicInputs().length} bytes`);
133
+ const data = encodeFunctionData({
134
+ abi: RollupAbi,
135
+ functionName: 'submitEpochRootProof',
136
+ args: txArgs,
137
+ });
138
+ try {
139
+ const { receipt } = await this.l1TxUtils.sendAndMonitorTransaction({
140
+ to: this.rollupContract.address,
141
+ data,
142
+ });
143
+ return receipt;
144
+ }
145
+ catch (err) {
146
+ this.log.error(`Rollup submit epoch proof failed`, err);
147
+ const errorMsg = await this.l1TxUtils.tryGetErrorFromRevertedTx(data, {
148
+ args: [...txArgs],
149
+ functionName: 'submitEpochRootProof',
150
+ abi: RollupAbi,
151
+ address: this.rollupContract.address,
152
+ },
153
+ /*blobInputs*/ undefined,
154
+ /*stateOverride*/ []);
155
+ this.log.error(`Rollup submit epoch proof tx reverted. ${errorMsg}`);
156
+ return undefined;
157
+ }
158
+ }
159
+ getSubmitEpochProofArgs(args) {
160
+ return [
161
+ BigInt(args.toBlock - args.fromBlock + 1),
162
+ [
163
+ args.publicInputs.previousArchive.root.toString(),
164
+ args.publicInputs.endArchive.root.toString(),
165
+ args.publicInputs.previousBlockHash.toString(),
166
+ args.publicInputs.endBlockHash.toString(),
167
+ args.publicInputs.endTimestamp.toString(),
168
+ args.publicInputs.outHash.toString(),
169
+ args.publicInputs.proverId.toString(),
170
+ ],
171
+ makeTuple(AZTEC_MAX_EPOCH_DURATION * 2, i => i % 2 === 0
172
+ ? args.publicInputs.fees[i / 2].recipient.toField().toString()
173
+ : args.publicInputs.fees[(i - 1) / 2].value.toString()),
174
+ `0x${args.publicInputs.blobPublicInputs
175
+ .filter((_, i) => i < args.toBlock - args.fromBlock + 1)
176
+ .map(b => b.toString())
177
+ .join(``)}`,
178
+ `0x${serializeToBuffer(args.proof.extractAggregationObject()).toString('hex')}`,
179
+ ];
180
+ }
181
+ async sleepOrInterrupted() {
182
+ await this.interruptibleSleep.sleep(this.sleepTimeMs);
183
+ }
184
+ }
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUtcHVibGlzaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Byb3Zlci1ub2RlLXB1Ymxpc2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQWMsTUFBTSxvQkFBb0IsQ0FBQztBQUdyRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE9BQU8sRUFBd0Isa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRixPQUFPLEVBQXFDLGtCQUFrQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTdFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQW1CakQsTUFBTSxPQUFPLG1CQUFtQjtJQVk5QixZQUNFLE1BQXdDLEVBQ3hDLElBSUM7UUFqQkssdUJBQWtCLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBRTlDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBR2xCLFFBQUcsR0FBRyxZQUFZLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQWMxRCxJQUFJLENBQUMs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
@@ -2,13 +2,13 @@ import { type EpochProofClaim, type EpochProofQuote, type EpochProverManager, ty
2
2
  import { type ContractDataSource } from '@aztec/circuits.js';
3
3
  import { type Maybe } from '@aztec/foundation/types';
4
4
  import { type P2P } from '@aztec/p2p';
5
- import { type L1Publisher } from '@aztec/sequencer-client';
6
5
  import { PublicProcessorFactory } from '@aztec/simulator/server';
7
6
  import { type TelemetryClient, type Traceable, type Tracer } from '@aztec/telemetry-client';
8
7
  import { type BondManager } from './bond/bond-manager.js';
9
8
  import { EpochProvingJob, type EpochProvingJobState } from './job/epoch-proving-job.js';
10
9
  import { type ClaimsMonitor, type ClaimsMonitorHandler } from './monitors/claims-monitor.js';
11
10
  import { type EpochMonitor, type EpochMonitorHandler } from './monitors/epoch-monitor.js';
11
+ import { type ProverNodePublisher } from './prover-node-publisher.js';
12
12
  import { type QuoteProvider } from './quote-provider/index.js';
13
13
  import { type QuoteSigner } from './quote-signer.js';
14
14
  export type ProverNodeOptions = {
@@ -27,7 +27,7 @@ export type ProverNodeOptions = {
27
27
  */
28
28
  export declare class ProverNode implements ClaimsMonitorHandler, EpochMonitorHandler, ProverNodeApi, Traceable {
29
29
  protected readonly prover: EpochProverManager;
30
- protected readonly publisher: L1Publisher;
30
+ protected readonly publisher: ProverNodePublisher;
31
31
  protected readonly l2BlockSource: L2BlockSource & Maybe<Service>;
32
32
  protected readonly l1ToL2MessageSource: L1ToL2MessageSource;
33
33
  protected readonly contractDataSource: ContractDataSource;
@@ -47,7 +47,7 @@ export declare class ProverNode implements ClaimsMonitorHandler, EpochMonitorHan
47
47
  private options;
48
48
  private metrics;
49
49
  readonly tracer: Tracer;
50
- constructor(prover: EpochProverManager, publisher: L1Publisher, l2BlockSource: L2BlockSource & Maybe<Service>, l1ToL2MessageSource: L1ToL2MessageSource, contractDataSource: ContractDataSource, worldState: WorldStateSynchronizer, coordination: ProverCoordination & Maybe<Service>, quoteProvider: QuoteProvider, quoteSigner: QuoteSigner, claimsMonitor: ClaimsMonitor, epochsMonitor: EpochMonitor, bondManager: BondManager, options?: Partial<ProverNodeOptions>, telemetryClient?: TelemetryClient);
50
+ constructor(prover: EpochProverManager, publisher: ProverNodePublisher, l2BlockSource: L2BlockSource & Maybe<Service>, l1ToL2MessageSource: L1ToL2MessageSource, contractDataSource: ContractDataSource, worldState: WorldStateSynchronizer, coordination: ProverCoordination & Maybe<Service>, quoteProvider: QuoteProvider, quoteSigner: QuoteSigner, claimsMonitor: ClaimsMonitor, epochsMonitor: EpochMonitor, bondManager: BondManager, options?: Partial<ProverNodeOptions>, telemetryClient?: TelemetryClient);
51
51
  getP2P(): P2P<P2PClientType.Prover> | undefined;
52
52
  handleClaim(proofClaim: EpochProofClaim): Promise<void>;
53
53
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,EAAE,EAEP,KAAK,sBAAsB,EAG5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAQ7D,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAExF,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB,EAAE,MAAM,CAAC;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,8BAA8B,EAAE,MAAM,CAAC;CACxC,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,UAAW,YAAW,oBAAoB,EAAE,mBAAmB,EAAE,aAAa,EAAE,SAAS;IAalG,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB;IAC7C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW;IACzC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC;IAChE,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB;IAC3D,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB;IACzD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,sBAAsB;IACrD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC;IACpE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa;IAC/C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAC3C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa;IAC/C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY;IAC9C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAE3C,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe;IAzBrD,OAAO,CAAC,GAAG,CAA+B;IAC1C,OAAO,CAAC,YAAY,CAAsB;IAE1C,OAAO,CAAC,uBAAuB,CAAqB;IACpD,OAAO,CAAC,IAAI,CAA2C;IACvD,OAAO,CAAC,eAAe,CAAgF;IACvG,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,OAAO,CAAoB;IAEnC,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAGV,MAAM,EAAE,kBAAkB,EAC1B,SAAS,EAAE,WAAW,EACtB,aAAa,EAAE,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,EAC7C,mBAAmB,EAAE,mBAAmB,EACxC,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,sBAAsB,EAClC,YAAY,EAAE,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,EACjD,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,YAAY,EAC3B,WAAW,EAAE,WAAW,EAC3C,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,EACrB,eAAe,GAAE,eAAsC;IAgBrE,MAAM;IAQP,WAAW,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B7D;;;;OAIG;IACG,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYhE;;;OAGG;IACG,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyC9D;;;;OAIG;IACG,KAAK;IAOX;;OAEG;IACG,IAAI;IAcV,qDAAqD;IAC9C,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;IACU,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAK/C;;OAEG;IACU,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAKpD;;OAEG;IACI,SAAS;IAIhB;;OAEG;IACI,OAAO,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,oBAAoB,CAAA;KAAE,EAAE,CAAC;IAI3E,OAAO,CAAC,uBAAuB;YAMjB,gBAAgB;IAqC9B,OAAO,CAAC,cAAc;YAKR,eAAe;YAQf,YAAY;YAQZ,SAAS;IAiEvB,sCAAsC;IACtC,SAAS,CAAC,uBAAuB,CAC/B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,GAAG,SAAS,EAC1B,MAAM,EAAE,OAAO,EAAE,EACjB,GAAG,EAAE,EAAE,EAAE,EACT,sBAAsB,EAAE,sBAAsB,EAC9C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAmB9B,sCAAsC;cACtB,eAAe;CAIhC"}
1
+ {"version":3,"file":"prover-node.d.ts","sourceRoot":"","sources":["../src/prover-node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,EAAE,EAEP,KAAK,sBAAsB,EAG5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAQ7D,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,MAAM,EAGZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAExF,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAC7F,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB,EAAE,MAAM,CAAC;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,8BAA8B,EAAE,MAAM,CAAC;CACxC,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,UAAW,YAAW,oBAAoB,EAAE,mBAAmB,EAAE,aAAa,EAAE,SAAS;IAalG,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,kBAAkB;IAC7C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,mBAAmB;IACjD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC;IAChE,SAAS,CAAC,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB;IAC3D,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB;IACzD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,sBAAsB;IACrD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC;IACpE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa;IAC/C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAC3C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa;IAC/C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY;IAC9C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW;IAE3C,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe;IAzBrD,OAAO,CAAC,GAAG,CAA+B;IAC1C,OAAO,CAAC,YAAY,CAAsB;IAE1C,OAAO,CAAC,uBAAuB,CAAqB;IACpD,OAAO,CAAC,IAAI,CAA2C;IACvD,OAAO,CAAC,eAAe,CAAgF;IACvG,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,OAAO,CAAoB;IAEnC,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAGV,MAAM,EAAE,kBAAkB,EAC1B,SAAS,EAAE,mBAAmB,EAC9B,aAAa,EAAE,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,EAC7C,mBAAmB,EAAE,mBAAmB,EACxC,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,sBAAsB,EAClC,YAAY,EAAE,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,EACjD,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,YAAY,EAC3B,WAAW,EAAE,WAAW,EAC3C,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,EACrB,eAAe,GAAE,eAAsC;IAgBrE,MAAM;IAQP,WAAW,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B7D;;;;OAIG;IACG,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYhE;;;OAGG;IACG,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyC9D;;;;OAIG;IACG,KAAK;IAOX;;OAEG;IACG,IAAI;IAcV,qDAAqD;IAC9C,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;IACU,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAK/C;;OAEG;IACU,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAKpD;;OAEG;IACI,SAAS;IAIhB;;OAEG;IACI,OAAO,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,oBAAoB,CAAA;KAAE,EAAE,CAAC;IAI3E,OAAO,CAAC,uBAAuB;YAMjB,gBAAgB;IAqC9B,OAAO,CAAC,cAAc;YAKR,eAAe;YAQf,YAAY;YAQZ,SAAS;IAiEvB,sCAAsC;IACtC,SAAS,CAAC,uBAAuB,CAC/B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,GAAG,SAAS,EAC1B,MAAM,EAAE,OAAO,EAAE,EACjB,GAAG,EAAE,EAAE,EAAE,EACT,sBAAsB,EAAE,sBAAsB,EAC9C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IAmB9B,sCAAsC;cACtB,eAAe;CAIhC"}
@@ -326,4 +326,4 @@ class EmptyEpochError extends Error {
326
326
  this.name = 'EmptyEpochError';
327
327
  }
328
328
  }
329
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmVyLW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFHTCxzQkFBc0IsRUFZdEIseUJBQXlCLEVBQ3pCLE9BQU8sR0FDUixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUl2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsVUFBVSxFQUlWLGtCQUFrQixFQUNsQixTQUFTLEdBQ1YsTUFBTSx5QkFBeUIsQ0FBQztBQUdqQyxPQUFPLEVBQUUsZUFBZSxFQUE2QixNQUFNLDRCQUE0QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQWVqRDs7Ozs7R0FLRztJQUNVLFVBQVU7Ozs7OztzQkFBVixVQUFVO1lBWXJCLFlBQ3FCLE1BQTBCLEVBQzFCLFNBQXNCLEVBQ3RCLGFBQTZDLEVBQzdDLG1CQUF3QyxFQUN4QyxrQkFBc0MsRUFDdEMsVUFBa0MsRUFDbEMsWUFBaUQsRUFDakQsYUFBNEIsRUFDNUIsV0FBd0IsRUFDeEIsYUFBNEIsRUFDNUIsYUFBMkIsRUFDM0IsV0FBd0IsRUFDM0MsVUFBc0MsRUFBRSxFQUNyQixrQkFB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
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmVyLW5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmVyLW5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFHTCxzQkFBc0IsRUFZdEIseUJBQXlCLEVBQ3pCLE9BQU8sR0FDUixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUd2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQ0wsVUFBVSxFQUlWLGtCQUFrQixFQUNsQixTQUFTLEdBQ1YsTUFBTSx5QkFBeUIsQ0FBQztBQUdqQyxPQUFPLEVBQUUsZUFBZSxFQUE2QixNQUFNLDRCQUE0QixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQWdCakQ7Ozs7O0dBS0c7SUFDVSxVQUFVOzs7Ozs7c0JBQVYsVUFBVTtZQVlyQixZQUNxQixNQUEwQixFQUMxQixTQUE4QixFQUM5QixhQUE2QyxFQUM3QyxtQkFBd0MsRUFDeEMsa0JBQXNDLEVBQ3RDLFVBQWtDLEVBQ2xDLFlBQWlELEVBQ2pELGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLGFBQTRCLEVBQzVCLGFBQTJCLEVBQzNCLFdBQXdCLEVBQzNDLFVBQXNDLEVBQUUsRUFDckIsa0JB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
@@ -1,9 +1,9 @@
1
1
  import { type EpochProverManager } from '@aztec/circuit-types';
2
- import { type L1Publisher } from '@aztec/sequencer-client';
2
+ import { type ProverNodePublisher } from '../prover-node-publisher.js';
3
3
  import { ProverNode } from '../prover-node.js';
4
4
  declare class TestProverNode_ extends ProverNode {
5
5
  prover: EpochProverManager;
6
- publisher: L1Publisher;
6
+ publisher: ProverNodePublisher;
7
7
  }
8
8
  export type TestProverNode = TestProverNode_;
9
9
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,cAAM,eAAgB,SAAQ,UAAU;IACtB,MAAM,EAAG,kBAAkB,CAAC;IAC5B,SAAS,EAAG,WAAW,CAAC;CACzC;AAED,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,cAAM,eAAgB,SAAQ,UAAU;IACtB,MAAM,EAAG,kBAAkB,CAAC;IAC5B,SAAS,EAAG,mBAAmB,CAAC;CACjD;AAED,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/prover-node",
3
- "version": "0.72.1",
3
+ "version": "0.74.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -53,23 +53,23 @@
53
53
  ]
54
54
  },
55
55
  "dependencies": {
56
- "@aztec/archiver": "0.72.1",
57
- "@aztec/bb-prover": "0.72.1",
58
- "@aztec/blob-sink": "0.72.1",
59
- "@aztec/circuit-types": "0.72.1",
60
- "@aztec/circuits.js": "0.72.1",
61
- "@aztec/epoch-cache": "0.72.1",
62
- "@aztec/ethereum": "0.72.1",
63
- "@aztec/foundation": "0.72.1",
64
- "@aztec/kv-store": "0.72.1",
65
- "@aztec/l1-artifacts": "0.72.1",
66
- "@aztec/p2p": "0.72.1",
67
- "@aztec/prover-client": "0.72.1",
68
- "@aztec/sequencer-client": "0.72.1",
69
- "@aztec/simulator": "0.72.1",
70
- "@aztec/telemetry-client": "0.72.1",
71
- "@aztec/types": "0.72.1",
72
- "@aztec/world-state": "0.72.1",
56
+ "@aztec/archiver": "0.74.0",
57
+ "@aztec/bb-prover": "0.74.0",
58
+ "@aztec/blob-sink": "0.74.0",
59
+ "@aztec/circuit-types": "0.74.0",
60
+ "@aztec/circuits.js": "0.74.0",
61
+ "@aztec/epoch-cache": "0.74.0",
62
+ "@aztec/ethereum": "0.74.0",
63
+ "@aztec/foundation": "0.74.0",
64
+ "@aztec/kv-store": "0.74.0",
65
+ "@aztec/l1-artifacts": "0.74.0",
66
+ "@aztec/p2p": "0.74.0",
67
+ "@aztec/prover-client": "0.74.0",
68
+ "@aztec/sequencer-client": "0.74.0",
69
+ "@aztec/simulator": "0.74.0",
70
+ "@aztec/telemetry-client": "0.74.0",
71
+ "@aztec/types": "0.74.0",
72
+ "@aztec/world-state": "0.74.0",
73
73
  "source-map-support": "^0.5.21",
74
74
  "tslib": "^2.4.0",
75
75
  "viem": "2.22.8"
@@ -1,17 +1,13 @@
1
1
  import { EthAddress } from '@aztec/circuits.js';
2
+ import { type L1Clients } from '@aztec/ethereum';
2
3
  import { IProofCommitmentEscrowAbi } from '@aztec/l1-artifacts';
3
4
 
4
5
  import {
5
6
  type Chain,
6
- type Client,
7
7
  type GetContractReturnType,
8
8
  type HttpTransport,
9
9
  type PrivateKeyAccount,
10
- type PublicActions,
11
- type PublicRpcSchema,
12
- type WalletActions,
13
10
  type WalletClient,
14
- type WalletRpcSchema,
15
11
  getContract,
16
12
  } from 'viem';
17
13
 
@@ -21,16 +17,7 @@ export class EscrowContract {
21
17
  WalletClient<HttpTransport, Chain, PrivateKeyAccount>
22
18
  >;
23
19
 
24
- constructor(
25
- private readonly client: Client<
26
- HttpTransport,
27
- Chain,
28
- PrivateKeyAccount,
29
- [...WalletRpcSchema, ...PublicRpcSchema],
30
- PublicActions<HttpTransport, Chain> & WalletActions<Chain, PrivateKeyAccount>
31
- >,
32
- address: EthAddress,
33
- ) {
20
+ constructor(private readonly client: L1Clients['walletClient'], address: EthAddress) {
34
21
  this.escrow = getContract({ address: address.toString(), abi: IProofCommitmentEscrowAbi, client });
35
22
  }
36
23
 
@@ -1,19 +1,6 @@
1
- import { EthAddress } from '@aztec/circuits.js';
1
+ import { type EthAddress } from '@aztec/circuits.js';
2
+ import { type L1Clients } from '@aztec/ethereum';
2
3
  import { compact } from '@aztec/foundation/collection';
3
- import { type RollupAbi } from '@aztec/l1-artifacts';
4
-
5
- import {
6
- type Chain,
7
- type Client,
8
- type GetContractReturnType,
9
- type HttpTransport,
10
- type PrivateKeyAccount,
11
- type PublicActions,
12
- type PublicRpcSchema,
13
- type WalletActions,
14
- type WalletClient,
15
- type WalletRpcSchema,
16
- } from 'viem';
17
4
 
18
5
  import { BondManager } from './bond-manager.js';
19
6
  import { type ProverBondManagerConfig, getProverBondManagerConfigFromEnv } from './config.js';
@@ -21,21 +8,14 @@ import { EscrowContract } from './escrow-contract.js';
21
8
  import { TokenContract } from './token-contract.js';
22
9
 
23
10
  export async function createBondManager(
24
- rollupContract: GetContractReturnType<typeof RollupAbi, WalletClient<HttpTransport, Chain, PrivateKeyAccount>>,
25
- client: Client<
26
- HttpTransport,
27
- Chain,
28
- PrivateKeyAccount,
29
- [...WalletRpcSchema, ...PublicRpcSchema],
30
- PublicActions<HttpTransport, Chain> & WalletActions<Chain, PrivateKeyAccount>
31
- >,
11
+ escrowContractAddress: EthAddress,
12
+ client: L1Clients['walletClient'],
32
13
  overrides: Partial<ProverBondManagerConfig> = {},
33
14
  ) {
34
15
  const config = { ...getProverBondManagerConfigFromEnv(), ...compact(overrides) };
35
16
  const { proverMinimumEscrowAmount: minimumStake, proverTargetEscrowAmount: maybeTargetStake } = config;
36
17
  const targetStake = maybeTargetStake ?? minimumStake * 2n;
37
18
 
38
- const escrowContractAddress = EthAddress.fromString(await rollupContract.read.PROOF_COMMITMENT_ESCROW());
39
19
  const escrow = new EscrowContract(client, escrowContractAddress);
40
20
 
41
21
  const tokenContractAddress = await escrow.getTokenAddress();
@@ -1,18 +1,14 @@
1
1
  import { EthAddress } from '@aztec/circuits.js';
2
+ import { type L1Clients } from '@aztec/ethereum';
2
3
  import { createLogger } from '@aztec/foundation/log';
3
4
  import { IERC20Abi, TestERC20Abi } from '@aztec/l1-artifacts';
4
5
 
5
6
  import {
6
7
  type Chain,
7
- type Client,
8
8
  type GetContractReturnType,
9
9
  type HttpTransport,
10
10
  type PrivateKeyAccount,
11
- type PublicActions,
12
- type PublicRpcSchema,
13
- type WalletActions,
14
11
  type WalletClient,
15
- type WalletRpcSchema,
16
12
  getContract,
17
13
  } from 'viem';
18
14
 
@@ -23,16 +19,7 @@ export class TokenContract {
23
19
  private token: GetContractReturnType<typeof IERC20Abi, WalletClient<HttpTransport, Chain, PrivateKeyAccount>>;
24
20
  private logger = createLogger('prover-node:token-contract');
25
21
 
26
- constructor(
27
- private readonly client: Client<
28
- HttpTransport,
29
- Chain,
30
- PrivateKeyAccount,
31
- [...WalletRpcSchema, ...PublicRpcSchema],
32
- PublicActions<HttpTransport, Chain> & WalletActions<Chain, PrivateKeyAccount>
33
- >,
34
- address: EthAddress,
35
- ) {
22
+ constructor(private readonly client: L1Clients['walletClient'], address: EthAddress) {
36
23
  this.token = getContract({ address: address.toString(), abi: IERC20Abi, client });
37
24
  }
38
25