@aztec/sequencer-client 0.71.0 → 0.73.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 (66) hide show
  1. package/dest/client/sequencer-client.d.ts +11 -6
  2. package/dest/client/sequencer-client.d.ts.map +1 -1
  3. package/dest/client/sequencer-client.js +41 -10
  4. package/dest/config.d.ts +1 -1
  5. package/dest/config.d.ts.map +1 -1
  6. package/dest/config.js +3 -4
  7. package/dest/publisher/config.d.ts +5 -0
  8. package/dest/publisher/config.d.ts.map +1 -1
  9. package/dest/publisher/config.js +9 -2
  10. package/dest/publisher/index.d.ts +1 -1
  11. package/dest/publisher/index.d.ts.map +1 -1
  12. package/dest/publisher/index.js +2 -2
  13. package/dest/publisher/{l1-publisher-metrics.d.ts → sequencer-publisher-metrics.d.ts} +6 -2
  14. package/dest/publisher/sequencer-publisher-metrics.d.ts.map +1 -0
  15. package/dest/publisher/sequencer-publisher-metrics.js +111 -0
  16. package/dest/publisher/sequencer-publisher.d.ts +158 -0
  17. package/dest/publisher/sequencer-publisher.d.ts.map +1 -0
  18. package/dest/publisher/sequencer-publisher.js +555 -0
  19. package/dest/sequencer/allowed.d.ts +1 -1
  20. package/dest/sequencer/allowed.d.ts.map +1 -1
  21. package/dest/sequencer/allowed.js +6 -6
  22. package/dest/sequencer/metrics.d.ts +1 -1
  23. package/dest/sequencer/metrics.d.ts.map +1 -1
  24. package/dest/sequencer/metrics.js +3 -4
  25. package/dest/sequencer/sequencer.d.ts +18 -12
  26. package/dest/sequencer/sequencer.d.ts.map +1 -1
  27. package/dest/sequencer/sequencer.js +118 -125
  28. package/dest/sequencer/utils.d.ts +1 -1
  29. package/dest/sequencer/utils.d.ts.map +1 -1
  30. package/dest/sequencer/utils.js +3 -3
  31. package/dest/slasher/slasher_client.d.ts.map +1 -1
  32. package/dest/slasher/slasher_client.js +6 -3
  33. package/dest/test/index.d.ts +3 -3
  34. package/dest/test/index.d.ts.map +1 -1
  35. package/dest/test/index.js +1 -2
  36. package/dest/tx_validator/gas_validator.d.ts +1 -1
  37. package/dest/tx_validator/gas_validator.d.ts.map +1 -1
  38. package/dest/tx_validator/gas_validator.js +10 -5
  39. package/dest/tx_validator/test_utils.d.ts +4 -4
  40. package/dest/tx_validator/test_utils.d.ts.map +1 -1
  41. package/dest/tx_validator/test_utils.js +3 -3
  42. package/package.json +22 -21
  43. package/src/client/sequencer-client.ts +60 -14
  44. package/src/config.ts +3 -3
  45. package/src/publisher/config.ts +13 -1
  46. package/src/publisher/index.ts +1 -1
  47. package/src/publisher/{l1-publisher-metrics.ts → sequencer-publisher-metrics.ts} +41 -2
  48. package/src/publisher/sequencer-publisher.ts +730 -0
  49. package/src/sequencer/allowed.ts +5 -5
  50. package/src/sequencer/metrics.ts +2 -3
  51. package/src/sequencer/sequencer.ts +153 -150
  52. package/src/sequencer/utils.ts +5 -2
  53. package/src/slasher/slasher_client.ts +7 -2
  54. package/src/test/index.ts +2 -4
  55. package/src/tx_validator/gas_validator.ts +17 -4
  56. package/src/tx_validator/test_utils.ts +5 -5
  57. package/dest/publisher/l1-publisher-metrics.d.ts.map +0 -1
  58. package/dest/publisher/l1-publisher-metrics.js +0 -85
  59. package/dest/publisher/l1-publisher.d.ts +0 -195
  60. package/dest/publisher/l1-publisher.d.ts.map +0 -1
  61. package/dest/publisher/l1-publisher.js +0 -864
  62. package/dest/test/test-l1-publisher.d.ts +0 -9
  63. package/dest/test/test-l1-publisher.d.ts.map +0 -1
  64. package/dest/test/test-l1-publisher.js +0 -11
  65. package/src/publisher/l1-publisher.ts +0 -1208
  66. package/src/test/test-l1-publisher.ts +0 -20
@@ -1,13 +1,15 @@
1
1
  import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
2
2
  import { type L1ToL2MessageSource, type L2BlockSource, type WorldStateSynchronizer } from '@aztec/circuit-types';
3
- import { type ContractDataSource } from '@aztec/circuits.js';
4
- import { type EthAddress } from '@aztec/foundation/eth-address';
3
+ import { type AztecAddress, type ContractDataSource } from '@aztec/circuits.js';
4
+ import { EpochCache } from '@aztec/epoch-cache';
5
+ import { L1TxUtilsWithBlobs } from '@aztec/ethereum';
6
+ import { EthAddress } from '@aztec/foundation/eth-address';
5
7
  import { type DateProvider } from '@aztec/foundation/timer';
6
8
  import { type P2P } from '@aztec/p2p';
7
9
  import { type TelemetryClient } from '@aztec/telemetry-client';
8
10
  import { type ValidatorClient } from '@aztec/validator-client';
9
11
  import { type SequencerClientConfig } from '../config.js';
10
- import { L1Publisher } from '../publisher/index.js';
12
+ import { SequencerPublisher } from '../publisher/index.js';
11
13
  import { Sequencer, type SequencerConfig } from '../sequencer/index.js';
12
14
  import { type SlasherClient } from '../slasher/index.js';
13
15
  /**
@@ -38,15 +40,17 @@ export declare class SequencerClient {
38
40
  l2BlockSource: L2BlockSource;
39
41
  l1ToL2MessageSource: L1ToL2MessageSource;
40
42
  telemetry: TelemetryClient;
41
- publisher?: L1Publisher;
43
+ publisher?: SequencerPublisher;
42
44
  blobSinkClient?: BlobSinkClientInterface;
43
45
  dateProvider: DateProvider;
46
+ epochCache?: EpochCache;
47
+ l1TxUtils?: L1TxUtilsWithBlobs;
44
48
  }): Promise<SequencerClient>;
45
49
  /**
46
50
  * Updates sequencer config.
47
51
  * @param config - New parameters.
48
52
  */
49
- updateSequencerConfig(config: SequencerConfig): void;
53
+ updateSequencerConfig(config: SequencerConfig): Promise<void>;
50
54
  /**
51
55
  * Stops the sequencer from processing new txs.
52
56
  */
@@ -58,6 +62,7 @@ export declare class SequencerClient {
58
62
  */
59
63
  restart(): void;
60
64
  get coinbase(): EthAddress;
61
- get feeRecipient(): import("@aztec/circuits.js").AztecAddress;
65
+ get feeRecipient(): AztecAddress;
66
+ get forwarderAddress(): EthAddress;
62
67
  }
63
68
  //# sourceMappingURL=sequencer-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;GAEG;AACH,qBAAa,eAAe;IACd,SAAS,CAAC,SAAS,EAAE,SAAS;gBAApB,SAAS,EAAE,SAAS;IAE1C;;;;;;;;;;;;OAYG;WACiB,GAAG,CACrB,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE;QACJ,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;QAC7C,SAAS,EAAE,GAAG,CAAC;QACf,sBAAsB,EAAE,sBAAsB,CAAC;QAC/C,aAAa,EAAE,aAAa,CAAC;QAC7B,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,aAAa,EAAE,aAAa,CAAC;QAC7B,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,SAAS,EAAE,eAAe,CAAC;QAC3B,SAAS,CAAC,EAAE,WAAW,CAAC;QACxB,cAAc,CAAC,EAAE,uBAAuB,CAAC;QACzC,YAAY,EAAE,YAAY,CAAC;KAC5B;IA+DH;;;OAGG;IACI,qBAAqB,CAAC,MAAM,EAAE,eAAe;IAIpD;;OAEG;IACU,IAAI;IAIjB,uGAAuG;IAChG,KAAK;IAIZ;;OAEG;IACI,OAAO;IAId,IAAI,QAAQ,IAAI,UAAU,CAEzB;IAED,IAAI,YAAY,8CAEf;CACF"}
1
+ {"version":3,"file":"sequencer-client.d.ts","sourceRoot":"","sources":["../../src/client/sequencer-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAEL,kBAAkB,EAKnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;GAEG;AACH,qBAAa,eAAe;IACd,SAAS,CAAC,SAAS,EAAE,SAAS;gBAApB,SAAS,EAAE,SAAS;IAE1C;;;;;;;;;;;;OAYG;WACiB,GAAG,CACrB,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE;QACJ,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;QAC7C,SAAS,EAAE,GAAG,CAAC;QACf,sBAAsB,EAAE,sBAAsB,CAAC;QAC/C,aAAa,EAAE,aAAa,CAAC;QAC7B,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,aAAa,EAAE,aAAa,CAAC;QAC7B,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,SAAS,EAAE,eAAe,CAAC;QAC3B,SAAS,CAAC,EAAE,kBAAkB,CAAC;QAC/B,cAAc,CAAC,EAAE,uBAAuB,CAAC;QACzC,YAAY,EAAE,YAAY,CAAC;QAC3B,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,SAAS,CAAC,EAAE,kBAAkB,CAAC;KAChC;IA8FH;;;OAGG;IACI,qBAAqB,CAAC,MAAM,EAAE,eAAe;IAIpD;;OAEG;IACU,IAAI;IAIjB,uGAAuG;IAChG,KAAK;IAIZ;;OAEG;IACI,OAAO;IAId,IAAI,QAAQ,IAAI,UAAU,CAEzB;IAED,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED,IAAI,gBAAgB,IAAI,UAAU,CAEjC;CACF"}
@@ -1,8 +1,11 @@
1
- import { isAnvilTestChain } from '@aztec/ethereum';
1
+ import { EpochCache } from '@aztec/epoch-cache';
2
+ import { ForwarderContract, L1TxUtilsWithBlobs, RollupContract, createEthereumChain, createL1Clients, isAnvilTestChain, } from '@aztec/ethereum';
3
+ import { EthAddress } from '@aztec/foundation/eth-address';
4
+ import { createLogger } from '@aztec/foundation/log';
2
5
  import { LightweightBlockBuilderFactory } from '@aztec/prover-client/block-builder';
3
6
  import { PublicProcessorFactory } from '@aztec/simulator/server';
4
7
  import { GlobalVariableBuilder } from '../global_variable_builder/index.js';
5
- import { L1Publisher } from '../publisher/index.js';
8
+ import { SequencerPublisher } from '../publisher/index.js';
6
9
  import { Sequencer } from '../sequencer/index.js';
7
10
  /**
8
11
  * Encapsulates the full sequencer and publisher.
@@ -26,14 +29,39 @@ export class SequencerClient {
26
29
  */
27
30
  static async new(config, deps) {
28
31
  const { validatorClient, p2pClient, worldStateSynchronizer, slasherClient, contractDataSource, l2BlockSource, l1ToL2MessageSource, telemetry: telemetryClient, } = deps;
29
- const publisher = deps.publisher ?? new L1Publisher(config, { telemetry: telemetryClient, blobSinkClient: deps.blobSinkClient });
30
- const globalsBuilder = new GlobalVariableBuilder(config);
31
- const publicProcessorFactory = new PublicProcessorFactory(contractDataSource, deps.dateProvider, telemetryClient);
32
- const rollup = publisher.getRollupContract();
32
+ const { l1RpcUrl: rpcUrl, l1ChainId: chainId, publisherPrivateKey } = config;
33
+ const chain = createEthereumChain(rpcUrl, chainId);
34
+ const log = createLogger('sequencer-client');
35
+ const { publicClient, walletClient } = createL1Clients(rpcUrl, publisherPrivateKey, chain.chainInfo);
36
+ const l1TxUtils = deps.l1TxUtils ?? new L1TxUtilsWithBlobs(publicClient, walletClient, log, config);
37
+ const rollupContract = new RollupContract(publicClient, config.l1Contracts.rollupAddress.toString());
33
38
  const [l1GenesisTime, slotDuration] = await Promise.all([
34
- rollup.read.GENESIS_TIME(),
35
- rollup.read.SLOT_DURATION(),
39
+ rollupContract.getL1GenesisTime(),
40
+ rollupContract.getSlotDuration(),
36
41
  ]);
42
+ const forwarderContract = config.customForwarderContractAddress && config.customForwarderContractAddress !== EthAddress.ZERO
43
+ ? new ForwarderContract(publicClient, config.customForwarderContractAddress.toString())
44
+ : await ForwarderContract.create(walletClient.account.address, walletClient, publicClient, log);
45
+ const epochCache = deps.epochCache ??
46
+ (await EpochCache.create(config.l1Contracts.rollupAddress, {
47
+ l1RpcUrl: rpcUrl,
48
+ l1ChainId: chainId,
49
+ viemPollingIntervalMS: config.viemPollingIntervalMS,
50
+ aztecSlotDuration: config.aztecSlotDuration,
51
+ ethereumSlotDuration: config.ethereumSlotDuration,
52
+ aztecEpochDuration: config.aztecEpochDuration,
53
+ }, { dateProvider: deps.dateProvider }));
54
+ const publisher = deps.publisher ??
55
+ new SequencerPublisher(config, {
56
+ l1TxUtils,
57
+ telemetry: telemetryClient,
58
+ blobSinkClient: deps.blobSinkClient,
59
+ rollupContract,
60
+ epochCache,
61
+ forwarderContract,
62
+ });
63
+ const globalsBuilder = new GlobalVariableBuilder(config);
64
+ const publicProcessorFactory = new PublicProcessorFactory(contractDataSource, deps.dateProvider, telemetryClient);
37
65
  const ethereumSlotDuration = config.ethereumSlotDuration;
38
66
  // When running in anvil, assume we can post a tx up until the very last second of an L1 slot.
39
67
  // Otherwise, assume we must have broadcasted the tx before the slot started (we use a default
@@ -57,7 +85,7 @@ export class SequencerClient {
57
85
  * @param config - New parameters.
58
86
  */
59
87
  updateSequencerConfig(config) {
60
- this.sequencer.updateConfig(config);
88
+ return this.sequencer.updateConfig(config);
61
89
  }
62
90
  /**
63
91
  * Stops the sequencer from processing new txs.
@@ -81,5 +109,8 @@ export class SequencerClient {
81
109
  get feeRecipient() {
82
110
  return this.sequencer.feeRecipient;
83
111
  }
112
+ get forwarderAddress() {
113
+ return this.sequencer.getForwarderAddress();
114
+ }
84
115
  }
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvc2VxdWVuY2VyLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUluRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUtqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBd0IsTUFBTSx1QkFBdUIsQ0FBQztBQUd4RTs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQXNCLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7SUFBRyxDQUFDO0lBRTlDOzs7Ozs7Ozs7Ozs7T0FZRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUNyQixNQUE2QixFQUM3QixJQVlDO1FBRUQsTUFBTSxFQUNKLGVBQWUsRUFDZixTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLGFBQWEsRUFDYixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixTQUFTLEVBQUUsZUFBZSxHQUMzQixHQUFHLElBQUksQ0FBQztRQUNULE1BQU0sU0FBUyxHQUNiLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDakgsTUFBTSxjQUFjLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV6RCxNQUFNLHNCQUFzQixHQUFHLElBQUksc0JBQXNCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsQ0FBQztRQUVsSCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM3QyxNQUFNLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUN0RCxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtTQUNuQixDQUFDLENBQUM7UUFFWixNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztRQUV6RCw4RkFBOEY7UUFDOUYsOEZBQThGO1FBQzlGLHlFQUF5RTtRQUN6RSw0RkFBNEY7UUFDNUYsZ0dBQWdHO1FBQ2hHLDBFQUEwRTtRQUMxRSxNQUFNLDRCQUE0QixHQUNoQyxNQUFNLENBQUMsNEJBQTRCLElBQUksZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZHLE1BQU0sV0FBVyxHQUFHO1lBQ2xCLGFBQWE7WUFDYixZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUNsQyxvQkFBb0I7U0FDckIsQ0FBQztRQUVGLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUM3QixTQUFTLEVBQ1QsZUFBZSxFQUNmLGNBQWMsRUFDZCxTQUFTLEVBQ1Qsc0JBQXNCLEVBQ3RCLGFBQWEsRUFDYixJQUFJLDhCQUE4QixDQUFDLGVBQWUsQ0FBQyxFQUNuRCxhQUFhLEVBQ2IsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLElBQUksQ0FBQyxZQUFZLEVBQ2pCLEVBQUUsR0FBRyxNQUFNLEVBQUUsNEJBQTRCLEVBQUUsRUFDM0MsZUFBZSxDQUNoQixDQUFDO1FBQ0YsTUFBTSxlQUFlLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDL0IsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEIsT0FBTyxJQUFJLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0kscUJBQXFCLENBQUMsTUFBdUI7UUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLElBQUk7UUFDZixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELHVHQUF1RztJQUNoRyxLQUFLO1FBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztJQUNyQyxDQUFDO0NBQ0YifQ==
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvc2VxdWVuY2VyLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdyRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUtqRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUF3QixNQUFNLHVCQUF1QixDQUFDO0FBR3hFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFBc0IsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztJQUFHLENBQUM7SUFFOUM7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0ksTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ3JCLE1BQTZCLEVBQzdCLElBY0M7UUFFRCxNQUFNLEVBQ0osZUFBZSxFQUNmLFNBQVMsRUFDVCxzQkFBc0IsRUFDdEIsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsbUJBQW1CLEVBQ25CLFNBQVMsRUFBRSxlQUFlLEdBQzNCLEdBQUcsSUFBSSxDQUFDO1FBQ1QsTUFBTSxFQUFFLFFBQVEs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
package/dest/config.d.ts CHANGED
@@ -14,7 +14,7 @@ type ChainConfig = {
14
14
  /**
15
15
  * Configuration settings for the SequencerClient.
16
16
  */
17
- export type SequencerClientConfig = PublisherConfig & TxSenderConfig & SequencerConfig & L1ReaderConfig & ChainConfig & Pick<L1ContractsConfig, 'ethereumSlotDuration'>;
17
+ export type SequencerClientConfig = PublisherConfig & TxSenderConfig & SequencerConfig & L1ReaderConfig & ChainConfig & Pick<L1ContractsConfig, 'ethereumSlotDuration' | 'aztecSlotDuration' | 'aztecEpochDuration'>;
18
18
  export declare const sequencerConfigMappings: ConfigMappingsType<SequencerConfig>;
19
19
  export declare const chainConfigMappings: ConfigMappingsType<ChainConfig>;
20
20
  export declare const sequencerClientConfigMappings: ConfigMappingsType<SequencerClientConfig>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAExF,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EAIxB,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAGpB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,2BAA2B;AAC3B,KAAK,WAAW,GAAG;IACjB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,eAAe,GACjD,cAAc,GACd,eAAe,GACf,cAAc,GACd,WAAW,GACX,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;AAElD,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CAAC,eAAe,CA8EvE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,kBAAkB,CAAC,WAAW,CAO/D,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,CAAC,qBAAqB,CAOnF,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,qBAAqB,CAExD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAqCvE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAExF,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,cAAc,EAGpB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,2BAA2B;AAC3B,KAAK,WAAW,GAAG;IACjB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,eAAe,GACjD,cAAc,GACd,eAAe,GACf,cAAc,GACd,WAAW,GACX,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,CAAC;AAE/F,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CAAC,eAAe,CA8EvE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,kBAAkB,CAAC,WAAW,CAO/D,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,CAAC,qBAAqB,CAOnF,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,qBAAqB,CAExD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE,CAqCvE"}
package/dest/config.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import { AztecAddress, Fr, FunctionSelector } from '@aztec/circuits.js';
2
2
  import { l1ContractsConfigMappings, l1ReaderConfigMappings, } from '@aztec/ethereum';
3
- import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, } from '@aztec/foundation/config';
4
- import { pickConfigMappings } from '@aztec/foundation/config';
3
+ import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, pickConfigMappings, } from '@aztec/foundation/config';
5
4
  import { EthAddress } from '@aztec/foundation/eth-address';
6
5
  import { getPublisherConfigMappings, getTxSenderConfigMappings, } from './publisher/config.js';
7
6
  export * from './publisher/config.js';
@@ -97,7 +96,7 @@ export const sequencerClientConfigMappings = {
97
96
  ...getTxSenderConfigMappings('SEQ'),
98
97
  ...getPublisherConfigMappings('SEQ'),
99
98
  ...chainConfigMappings,
100
- ...pickConfigMappings(l1ContractsConfigMappings, ['ethereumSlotDuration']),
99
+ ...pickConfigMappings(l1ContractsConfigMappings, ['ethereumSlotDuration', 'aztecSlotDuration', 'aztecEpochDuration']),
101
100
  };
102
101
  /**
103
102
  * Creates an instance of SequencerClientConfig out of environment variables using sensible defaults for integration testing if not set.
@@ -153,4 +152,4 @@ export function parseSequencerAllowList(value) {
153
152
  }
154
153
  return entries;
155
154
  }
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sRUFHTCx5QkFBeUIsRUFDekIsc0JBQXNCLEdBQ3ZCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsa0JBQWtCLEdBQ25CLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTNELE9BQU8sRUFHTCwwQkFBMEIsRUFDMUIseUJBQXlCLEdBQzFCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsY0FBYyx1QkFBdUIsQ0FBQztBQXFCdEMsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQXdDO0lBQzFFLDRCQUE0QixFQUFFO1FBQzVCLEdBQUcsRUFBRSw0QkFBNEI7UUFDakMsV0FBVyxFQUFFLDJEQUEyRDtRQUN4RSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztLQUMzQjtJQUNELGNBQWMsRUFBRTtRQUNkLEdBQUcsRUFBRSxzQkFBc0I7UUFDM0IsV0FBVyxFQUFFLGtEQUFrRDtRQUMvRCxHQUFHLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztLQUMxQjtJQUNELGNBQWMsRUFBRTtRQUNkLEdBQUcsRUFBRSxzQkFBc0I7UUFDM0IsV0FBVyxFQUFFLGtEQUFrRDtRQUMvRCxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQztLQUN6QjtJQUNELGFBQWEsRUFBRTtRQUNiLEdBQUcsRUFBRSxzQkFBc0I7UUFDM0IsV0FBVyxFQUFFLDJCQUEyQjtRQUN4QyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQztLQUM1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
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sRUFHTCx5QkFBeUIsRUFDekIsc0JBQXNCLEdBQ3ZCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ2xCLGtCQUFrQixHQUNuQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBR0wsMEJBQTBCLEVBQzFCLHlCQUF5QixHQUMxQixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLGNBQWMsdUJBQXVCLENBQUM7QUFxQnRDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF3QztJQUMxRSw0QkFBNEIsRUFBRTtRQUM1QixHQUFHLEVBQUUsNEJBQTRCO1FBQ2pDLFdBQVcsRUFBRSwyREFBMkQ7UUFDeEUsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7S0FDM0I7SUFDRCxjQUFjLEVBQUU7UUFDZCxHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLFdBQVcsRUFBRSxrREFBa0Q7UUFDL0QsR0FBRyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7S0FDMUI7SUFDRCxjQUFjLEVBQUU7UUFDZCxHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLFdBQVcsRUFBRSxrREFBa0Q7UUFDL0QsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7S0FDekI7SUFDRCxhQUFhLEVBQUU7UUFDYixHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7S0FDNUI7SUFDRCxhQUFhLEVBQUU7UUFDYixHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7S0FDNUI7SUFDRCxRQUFRLEVBQUU7UUFDUixHQUFHLEVBQUUsVUFBVTtRQUNmLFFBQVEsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFDckQsV0FBVyxFQUFFLDRCQUE0QjtLQUMxQztJQUNELFlBQVksRUFBRTtRQUNaLEdBQUcsRUFBRSxlQUFlO1FBQ3BCLFFBQVEsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFDdkQsV0FBVyxFQUFFLDBCQUEwQjtLQUN4QztJQUNELG9CQUFvQixFQUFFO1FBQ3BCLEdBQUcsRUFBRSx3QkFBd0I7UUFDN0IsV0FBVyxFQUFFLHFEQUFxRDtLQUNuRTtJQUNELGNBQWMsRUFBRTtRQUNkLEdBQUcsRUFBRSxrQkFBa0I7UUFDdkIsV0FBVyxFQUFFLDZCQUE2QjtLQUMzQztJQUNELGNBQWMsRUFBRTtRQUNkLEdBQUcsRUFBRSxzQkFBc0I7UUFDM0IsUUFBUSxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUM7UUFDdkQsV0FBVyxFQUFFLHFEQUFxRDtRQUNsRSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQ2pCLGdHQUFnRztLQUNuRztJQUNELG1CQUFtQixFQUFFO1FBQ25CLEdBQUcsRUFBRSw2QkFBNkI7UUFDbEMsV0FBVyxFQUFFLGdCQUFnQjtRQUM3QixHQUFHLGtCQUFrQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7S0FDbkM7SUFDRCxXQUFXLEVBQUU7UUFDWCxHQUFHLEVBQUUsY0FBYztRQUNuQixXQUFXLEVBQUUsaURBQWlEO1FBQzlELEdBQUcsbUJBQW1CLEVBQUU7S0FDekI7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixHQUFHLEVBQUUsd0JBQXdCO1FBQzdCLFdBQVcsRUFBRSx3REFBd0Q7UUFDckUsR0FBRyxtQkFBbUIsRUFBRTtRQUN4QixZQUFZLEVBQUUsS0FBSztLQUNwQjtJQUNELHlCQUF5QixFQUFFO1FBQ3pCLEdBQUcsRUFBRSxxQ0FBcUM7UUFDMUMsV0FBVyxFQUFFLHVEQUF1RDtRQUNwRSxRQUFRLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ3JELFlBQVksRUFBRSxVQUFVLENBQUMsSUFBSTtLQUM5QjtJQUNELDRCQUE0QixFQUFFO1FBQzVCLEdBQUcsRUFBRSx3Q0FBd0M7UUFDN0MsV0FBVyxFQUFFLDJFQUEyRTtRQUN4RixRQUFRLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7S0FDakU7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQW9DO0lBQ2xFLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxTQUFTO0lBQzNDLE9BQU8sRUFBRTtRQUNQLEdBQUcsRUFBRSxTQUFTO1FBQ2QsV0FBVyxFQUFFLDRCQUE0QjtRQUN6QyxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQztLQUN6QjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBOEM7SUFDdEYsR0FBRyx1QkFBdUI7SUFDMUIsR0FBRyxzQkFBc0I7SUFDekIsR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUM7SUFDbkMsR0FBRywwQkFBMEIsQ0FBQyxLQUFLLENBQUM7SUFDcEMsR0FBRyxtQkFBbUI7SUFDdEIsR0FBRyxrQkFBa0IsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixDQUFDLENBQUM7Q0FDdEgsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPLHFCQUFxQixDQUF3Qiw2QkFBNkIsQ0FBQyxDQUFDO0FBQ3JGLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLEtBQWE7SUFDbkQsTUFBTSxPQUFPLEdBQXFCLEVBQUUsQ0FBQztJQUVyQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sUUFBUSxHQUFHLGNBQWMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBRXhHLElBQUksVUFBVSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDWCxPQUFPLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDbEQsUUFBUTtpQkFDVCxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDWCxPQUFPLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDbkQsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLFVBQVUsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUM5QixJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ1gsT0FBTyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNDLFFBQVE7aUJBQ1QsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ1gsT0FBTyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUM7aUJBQzVDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMifQ==
@@ -1,5 +1,6 @@
1
1
  import { type L1ReaderConfig, type L1TxUtilsConfig } from '@aztec/ethereum';
2
2
  import { type ConfigMappingsType } from '@aztec/foundation/config';
3
+ import { EthAddress } from '@aztec/foundation/eth-address';
3
4
  /**
4
5
  * The configuration of the rollup transaction publisher.
5
6
  */
@@ -12,6 +13,10 @@ export type TxSenderConfig = L1ReaderConfig & {
12
13
  * The number of confirmations required.
13
14
  */
14
15
  requiredConfirmations: number;
16
+ /**
17
+ * The address of the custom forwarder contract.
18
+ */
19
+ customForwarderContractAddress: EthAddress;
15
20
  };
16
21
  /**
17
22
  * Configuration of the L1Publisher.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/publisher/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAqC,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EAAE,KAAK,kBAAkB,EAA6C,MAAM,0BAA0B,CAAC;AAE9G;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C;;OAEG;IACH,mBAAmB,EAAE,KAAK,MAAM,EAAE,CAAC;IAEnC;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG;IAC9C;;OAEG;IACH,wBAAwB,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,CACtC,KAAK,EAAE,QAAQ,GAAG,KAAK,KACpB,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CA4BzD,CAAC;AAEH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAErG;AAED,eAAO,MAAM,0BAA0B,EAAE,CACvC,KAAK,EAAE,QAAQ,GAAG,KAAK,KACpB,kBAAkB,CAAC,eAAe,GAAG,eAAe,CAavD,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,eAAe,CAElF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/publisher/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAqC,MAAM,iBAAiB,CAAC;AAC/G,OAAO,EAAE,KAAK,kBAAkB,EAA6C,MAAM,0BAA0B,CAAC;AAC9G,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C;;OAEG;IACH,mBAAmB,EAAE,KAAK,MAAM,EAAE,CAAC;IAEnC;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,8BAA8B,EAAE,UAAU,CAAC;CAC5C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG;IAC9C;;OAEG;IACH,wBAAwB,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,CACtC,KAAK,EAAE,QAAQ,GAAG,KAAK,KACpB,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAkCzD,CAAC;AAEH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,CAErG;AAED,eAAO,MAAM,0BAA0B,EAAE,CACvC,KAAK,EAAE,QAAQ,GAAG,KAAK,KACpB,kBAAkB,CAAC,eAAe,GAAG,eAAe,CAavD,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,eAAe,CAElF"}
@@ -1,5 +1,6 @@
1
1
  import { NULL_KEY, l1TxUtilsConfigMappings } from '@aztec/ethereum';
2
2
  import { getConfigFromMappings, numberConfigHelper } from '@aztec/foundation/config';
3
+ import { EthAddress } from '@aztec/foundation/eth-address';
3
4
  export const getTxSenderConfigMappings = (scope) => ({
4
5
  l1RpcUrl: {
5
6
  env: 'ETHEREUM_HOST',
@@ -11,6 +12,12 @@ export const getTxSenderConfigMappings = (scope) => ({
11
12
  defaultValue: 31337,
12
13
  description: 'The chain ID of the ethereum host.',
13
14
  },
15
+ customForwarderContractAddress: {
16
+ env: `CUSTOM_FORWARDER_CONTRACT_ADDRESS`,
17
+ parseEnv: (val) => EthAddress.fromString(val),
18
+ description: 'The address of the custom forwarder contract.',
19
+ defaultValue: EthAddress.ZERO,
20
+ },
14
21
  publisherPrivateKey: {
15
22
  env: `${scope}_PUBLISHER_PRIVATE_KEY`,
16
23
  description: 'The private key to be used by the publisher.',
@@ -41,7 +48,7 @@ export const getPublisherConfigMappings = scope => ({
41
48
  },
42
49
  ...l1TxUtilsConfigMappings,
43
50
  blobSinkUrl: {
44
- env: `${scope}_BLOB_SINK_URL`,
51
+ env: 'BLOB_SINK_URL',
45
52
  description: 'The URL of the blob sink.',
46
53
  parseEnv: (val) => val,
47
54
  },
@@ -49,4 +56,4 @@ export const getPublisherConfigMappings = scope => ({
49
56
  export function getPublisherConfigFromEnv(scope) {
50
57
  return getConfigFromMappings(getPublisherConfigMappings(scope));
51
58
  }
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE2QyxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRyxPQUFPLEVBQTJCLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFnQzlHLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUV5QixDQUFDLEtBQXVCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0YsUUFBUSxFQUFFO1FBQ1IsR0FBRyxFQUFFLGVBQWU7UUFDcEIsV0FBVyxFQUFFLG1DQUFtQztLQUNqRDtJQUNELFNBQVMsRUFBRTtRQUNULEdBQUcsRUFBRSxhQUFhO1FBQ2xCLFFBQVEsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHO1FBQy9CLFlBQVksRUFBRSxLQUFLO1FBQ25CLFdBQVcsRUFBRSxvQ0FBb0M7S0FDbEQ7SUFDRCxtQkFBbUIsRUFBRTtRQUNuQixHQUFHLEVBQUUsR0FBRyxLQUFLLHdCQUF3QjtRQUNyQyxXQUFXLEVBQUUsOENBQThDO1FBQzNELFFBQVEsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQzFFLFlBQVksRUFBRSxRQUFRO0tBQ3ZCO0lBQ0QscUJBQXFCLEVBQUU7UUFDckIsR0FBRyxFQUFFLEdBQUcsS0FBSyx5QkFBeUI7UUFDdEMsUUFBUSxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUc7UUFDL0IsWUFBWSxFQUFFLENBQUM7UUFDZixXQUFXLEVBQUUsdUNBQXVDO0tBQ3JEO0lBQ0QscUJBQXFCLEVBQUU7UUFDckIsR0FBRyxFQUFFLEdBQUcsS0FBSywyQkFBMkI7UUFDeEMsV0FBVyxFQUFFLHNDQUFzQztRQUNuRCxHQUFHLGtCQUFrQixDQUFDLElBQUssQ0FBQztLQUM3QjtDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxLQUF1QjtJQUM5RCxPQUFPLHFCQUFxQixDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUVzQixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckUsd0JBQXdCLEVBQUU7UUFDeEIsR0FBRyxFQUFFLEdBQUcsS0FBSyw0QkFBNEI7UUFDekMsUUFBUSxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUc7UUFDL0IsWUFBWSxFQUFFLElBQUk7UUFDbEIsV0FBVyxFQUFFLCtDQUErQztLQUM3RDtJQUNELEdBQUcsdUJBQXVCO0lBQzFCLFdBQVcsRUFBRTtRQUNYLEdBQUcsRUFBRSxHQUFHLEtBQUssZ0JBQWdCO1FBQzdCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsUUFBUSxFQUFFLENBQUMsR0FBWSxFQUFFLEVBQUUsQ0FBQyxHQUFHO0tBQ2hDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLHlCQUF5QixDQUFDLEtBQXVCO0lBQy9ELE9BQU8scUJBQXFCLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNsRSxDQUFDIn0=
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE2QyxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRyxPQUFPLEVBQTJCLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDOUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBcUMzRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FFeUIsQ0FBQyxLQUF1QixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLFFBQVEsRUFBRTtRQUNSLEdBQUcsRUFBRSxlQUFlO1FBQ3BCLFdBQVcsRUFBRSxtQ0FBbUM7S0FDakQ7SUFDRCxTQUFTLEVBQUU7UUFDVCxHQUFHLEVBQUUsYUFBYTtRQUNsQixRQUFRLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRztRQUMvQixZQUFZLEVBQUUsS0FBSztRQUNuQixXQUFXLEVBQUUsb0NBQW9DO0tBQ2xEO0lBQ0QsOEJBQThCLEVBQUU7UUFDOUIsR0FBRyxFQUFFLG1DQUFtQztRQUN4QyxRQUFRLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQ3JELFdBQVcsRUFBRSwrQ0FBK0M7UUFDNUQsWUFBWSxFQUFFLFVBQVUsQ0FBQyxJQUFJO0tBQzlCO0lBQ0QsbUJBQW1CLEVBQUU7UUFDbkIsR0FBRyxFQUFFLEdBQUcsS0FBSyx3QkFBd0I7UUFDckMsV0FBVyxFQUFFLDhDQUE4QztRQUMzRCxRQUFRLEVBQUUsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUMxRSxZQUFZLEVBQUUsUUFBUTtLQUN2QjtJQUNELHFCQUFxQixFQUFFO1FBQ3JCLEdBQUcsRUFBRSxHQUFHLEtBQUsseUJBQXlCO1FBQ3RDLFFBQVEsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHO1FBQy9CLFlBQVksRUFBRSxDQUFDO1FBQ2YsV0FBVyxFQUFFLHVDQUF1QztLQUNyRDtJQUNELHFCQUFxQixFQUFFO1FBQ3JCLEdBQUcsRUFBRSxHQUFHLEtBQUssMkJBQTJCO1FBQ3hDLFdBQVcsRUFBRSxzQ0FBc0M7UUFDbkQsR0FBRyxrQkFBa0IsQ0FBQyxJQUFLLENBQUM7S0FDN0I7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsS0FBdUI7SUFDOUQsT0FBTyxxQkFBcUIsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FFc0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLHdCQUF3QixFQUFFO1FBQ3hCLEdBQUcsRUFBRSxHQUFHLEtBQUssNEJBQTRCO1FBQ3pDLFFBQVEsRUFBRSxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHO1FBQy9CLFlBQVksRUFBRSxJQUFJO1FBQ2xCLFdBQVcsRUFBRSwrQ0FBK0M7S0FDN0Q7SUFDRCxHQUFHLHVCQUF1QjtJQUMxQixXQUFXLEVBQUU7UUFDWCxHQUFHLEVBQUUsZUFBZTtRQUNwQixXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLFFBQVEsRUFBRSxDQUFDLEdBQVksRUFBRSxFQUFFLENBQUMsR0FBRztLQUNoQztDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxLQUF1QjtJQUMvRCxPQUFPLHFCQUFxQixDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDbEUsQ0FBQyJ9
@@ -1,2 +1,2 @@
1
- export { L1Publisher, L1SubmitEpochProofArgs } from './l1-publisher.js';
1
+ export { SequencerPublisher } from './sequencer-publisher.js';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/publisher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/publisher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1,2 +1,2 @@
1
- export { L1Publisher } from './l1-publisher.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGlzaGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQTBCLE1BQU0sbUJBQW1CLENBQUMifQ==
1
+ export { SequencerPublisher } from './sequencer-publisher.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGlzaGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDIn0=
@@ -1,7 +1,7 @@
1
1
  import type { L1PublishBlockStats, L1PublishProofStats, L1PublishStats } from '@aztec/circuit-types/stats';
2
2
  import { type TelemetryClient } from '@aztec/telemetry-client';
3
3
  export type L1TxType = 'submitProof' | 'process' | 'claimEpochProofRight';
4
- export declare class L1PublisherMetrics {
4
+ export declare class SequencerPublisherMetrics {
5
5
  private gasPrice;
6
6
  private txCount;
7
7
  private txDuration;
@@ -10,6 +10,10 @@ export declare class L1PublisherMetrics {
10
10
  private txCalldataGas;
11
11
  private txBlobDataGasUsed;
12
12
  private txBlobDataGasCost;
13
+ private readonly blobCountHistogram;
14
+ private readonly blobInclusionBlocksHistogram;
15
+ private readonly blobTxSuccessCounter;
16
+ private readonly blobTxFailureCounter;
13
17
  constructor(client: TelemetryClient, name?: string);
14
18
  recordFailedTx(txType: L1TxType): void;
15
19
  recordSubmitProof(durationMs: number, stats: L1PublishProofStats): void;
@@ -17,4 +21,4 @@ export declare class L1PublisherMetrics {
17
21
  recordClaimEpochProofRightTx(durationMs: number, stats: L1PublishStats): void;
18
22
  private recordTx;
19
23
  }
20
- //# sourceMappingURL=l1-publisher-metrics.d.ts.map
24
+ //# sourceMappingURL=sequencer-publisher-metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequencer-publisher-metrics.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC3G,OAAO,EAIL,KAAK,eAAe,EAGrB,MAAM,yBAAyB,CAAC;AAIjC,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,sBAAsB,CAAC;AAE1E,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,iBAAiB,CAAY;IACrC,OAAO,CAAC,iBAAiB,CAAY;IAErC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAY;IACzD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;gBAEzC,MAAM,EAAE,eAAe,EAAE,IAAI,SAAuB;IAsEhE,cAAc,CAAC,MAAM,EAAE,QAAQ;IAW/B,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB;IAIhE,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB;IAcnE,4BAA4B,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc;IAItE,OAAO,CAAC,QAAQ;CA6BjB"}
@@ -0,0 +1,111 @@
1
+ import { Attributes, Metrics, ValueType, } from '@aztec/telemetry-client';
2
+ import { formatEther } from 'viem/utils';
3
+ export class SequencerPublisherMetrics {
4
+ constructor(client, name = 'SequencerPublisher') {
5
+ const meter = client.getMeter(name);
6
+ this.gasPrice = meter.createHistogram(Metrics.L1_PUBLISHER_GAS_PRICE, {
7
+ description: 'The gas price used for transactions',
8
+ unit: 'gwei',
9
+ valueType: ValueType.DOUBLE,
10
+ });
11
+ this.txCount = meter.createUpDownCounter(Metrics.L1_PUBLISHER_TX_COUNT, {
12
+ description: 'The number of transactions processed',
13
+ });
14
+ this.txDuration = meter.createHistogram(Metrics.L1_PUBLISHER_TX_DURATION, {
15
+ description: 'The duration of transaction processing',
16
+ unit: 'ms',
17
+ valueType: ValueType.INT,
18
+ });
19
+ this.txGas = meter.createHistogram(Metrics.L1_PUBLISHER_TX_GAS, {
20
+ description: 'The gas consumed by transactions',
21
+ unit: 'gas',
22
+ valueType: ValueType.INT,
23
+ });
24
+ this.txCalldataSize = meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_SIZE, {
25
+ description: 'The size of the calldata in transactions',
26
+ unit: 'By',
27
+ valueType: ValueType.INT,
28
+ });
29
+ this.txCalldataGas = meter.createHistogram(Metrics.L1_PUBLISHER_TX_CALLDATA_GAS, {
30
+ description: 'The gas consumed by the calldata in transactions',
31
+ unit: 'gas',
32
+ valueType: ValueType.INT,
33
+ });
34
+ this.txBlobDataGasUsed = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_USED, {
35
+ description: 'The amount of blob gas used in transactions',
36
+ unit: 'gas',
37
+ valueType: ValueType.INT,
38
+ });
39
+ this.txBlobDataGasCost = meter.createHistogram(Metrics.L1_PUBLISHER_TX_BLOBDATA_GAS_COST, {
40
+ description: 'The gas cost of blobs in transactions',
41
+ unit: 'gwei',
42
+ valueType: ValueType.INT,
43
+ });
44
+ this.blobCountHistogram = meter.createHistogram(Metrics.L1_PUBLISHER_BLOB_COUNT, {
45
+ description: 'Number of blobs in L1 transactions',
46
+ unit: 'blobs',
47
+ valueType: ValueType.INT,
48
+ });
49
+ this.blobInclusionBlocksHistogram = meter.createHistogram(Metrics.L1_PUBLISHER_BLOB_INCLUSION_BLOCKS, {
50
+ description: 'Number of L1 blocks between blob tx submission and inclusion',
51
+ unit: 'blocks',
52
+ valueType: ValueType.INT,
53
+ });
54
+ this.blobTxSuccessCounter = meter.createUpDownCounter(Metrics.L1_PUBLISHER_BLOB_TX_SUCCESS, {
55
+ description: 'Number of successful L1 transactions with blobs',
56
+ });
57
+ this.blobTxFailureCounter = meter.createUpDownCounter(Metrics.L1_PUBLISHER_BLOB_TX_FAILURE, {
58
+ description: 'Number of failed L1 transactions with blobs',
59
+ });
60
+ }
61
+ recordFailedTx(txType) {
62
+ this.txCount.add(1, {
63
+ [Attributes.L1_TX_TYPE]: txType,
64
+ [Attributes.OK]: false,
65
+ });
66
+ if (txType === 'process') {
67
+ this.blobTxFailureCounter.add(1);
68
+ }
69
+ }
70
+ recordSubmitProof(durationMs, stats) {
71
+ this.recordTx('submitProof', durationMs, stats);
72
+ }
73
+ recordProcessBlockTx(durationMs, stats) {
74
+ this.recordTx('process', durationMs, stats);
75
+ if (stats.blobCount && stats.blobCount > 0) {
76
+ this.blobCountHistogram.record(stats.blobCount);
77
+ if (stats.inclusionBlocks !== undefined) {
78
+ this.blobInclusionBlocksHistogram.record(stats.inclusionBlocks);
79
+ }
80
+ this.blobTxSuccessCounter.add(1);
81
+ }
82
+ }
83
+ recordClaimEpochProofRightTx(durationMs, stats) {
84
+ this.recordTx('claimEpochProofRight', durationMs, stats);
85
+ }
86
+ recordTx(txType, durationMs, stats) {
87
+ const attributes = {
88
+ [Attributes.L1_TX_TYPE]: txType,
89
+ [Attributes.L1_SENDER]: stats.sender,
90
+ };
91
+ this.txCount.add(1, {
92
+ ...attributes,
93
+ [Attributes.OK]: true,
94
+ });
95
+ this.txDuration.record(Math.ceil(durationMs), attributes);
96
+ this.txGas.record(
97
+ // safe to downcast - total block limit is 30M gas which fits in a JS number
98
+ Number(stats.gasUsed), attributes);
99
+ this.txCalldataGas.record(stats.calldataGas, attributes);
100
+ this.txCalldataSize.record(stats.calldataSize, attributes);
101
+ this.txBlobDataGasCost.record(Number(stats.blobDataGas), attributes);
102
+ this.txBlobDataGasUsed.record(Number(stats.blobGasUsed), attributes);
103
+ try {
104
+ this.gasPrice.record(parseInt(formatEther(stats.gasPrice, 'gwei'), 10));
105
+ }
106
+ catch (e) {
107
+ // ignore
108
+ }
109
+ }
110
+ }
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLXB1Ymxpc2hlci1tZXRyaWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1Ymxpc2hlci9zZXF1ZW5jZXItcHVibGlzaGVyLW1ldHJpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLFVBQVUsRUFFVixPQUFPLEVBR1AsU0FBUyxHQUNWLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUl6QyxNQUFNLE9BQU8seUJBQXlCO0lBZ0JwQyxZQUFZLE1BQXVCLEVBQUUsSUFBSSxHQUFHLG9CQUFvQjtRQUM5RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUU7WUFDcEUsV0FBVyxFQUFFLHFDQUFxQztZQUNsRCxJQUFJLEVBQUUsTUFBTTtZQUNaLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTtTQUM1QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUU7WUFDdEUsV0FBVyxFQUFFLHNDQUFzQztTQUNwRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFO1lBQ3hFLFdBQVcsRUFBRSx3Q0FBd0M7WUFDckQsSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUc7U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtZQUM5RCxXQUFXLEVBQUUsa0NBQWtDO1lBQy9DLElB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
@@ -0,0 +1,158 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
4
+ import { type EpochProofQuote, type L2Block, type TxHash } from '@aztec/circuit-types';
5
+ import { type BlockHeader, EthAddress } from '@aztec/circuits.js';
6
+ import { type EpochCache } from '@aztec/epoch-cache';
7
+ import { type ForwarderContract, type GasPrice, type L1BlobInputs, type L1ContractsConfig, type L1GasConfig, type L1TxRequest, type L1TxUtilsWithBlobs, type RollupContract, type TransactionStats } from '@aztec/ethereum';
8
+ import { Blob } from '@aztec/foundation/blob';
9
+ import { type Signature } from '@aztec/foundation/eth-signature';
10
+ import { type Logger } from '@aztec/foundation/log';
11
+ import { type TelemetryClient } from '@aztec/telemetry-client';
12
+ import { type TransactionReceipt } from 'viem';
13
+ import { type PublisherConfig, type TxSenderConfig } from './config.js';
14
+ export declare enum VoteType {
15
+ GOVERNANCE = 0,
16
+ SLASHING = 1
17
+ }
18
+ type GetSlashPayloadCallBack = (slotNumber: bigint) => Promise<EthAddress | undefined>;
19
+ type Action = 'propose' | 'claim' | 'governance-vote' | 'slashing-vote';
20
+ interface RequestWithExpiry {
21
+ action: Action;
22
+ request: L1TxRequest;
23
+ lastValidL2Slot: bigint;
24
+ gasConfig?: L1GasConfig;
25
+ blobConfig?: L1BlobInputs;
26
+ onResult?: (request: L1TxRequest, result?: {
27
+ receipt: TransactionReceipt;
28
+ gasPrice: GasPrice;
29
+ stats?: TransactionStats;
30
+ errorMsg?: string;
31
+ }) => void;
32
+ }
33
+ export declare class SequencerPublisher {
34
+ private interrupted;
35
+ private metrics;
36
+ private epochCache;
37
+ private forwarderContract;
38
+ protected governanceLog: Logger;
39
+ protected governanceProposerAddress?: EthAddress;
40
+ private governancePayload;
41
+ protected slashingLog: Logger;
42
+ protected slashingProposerAddress?: EthAddress;
43
+ private getSlashPayload?;
44
+ private myLastVotes;
45
+ protected log: Logger;
46
+ protected ethereumSlotDuration: bigint;
47
+ private blobSinkClient;
48
+ static PROPOSE_GAS_GUESS: bigint;
49
+ static PROPOSE_AND_CLAIM_GAS_GUESS: bigint;
50
+ l1TxUtils: L1TxUtilsWithBlobs;
51
+ rollupContract: RollupContract;
52
+ protected requests: RequestWithExpiry[];
53
+ constructor(config: TxSenderConfig & PublisherConfig & Pick<L1ContractsConfig, 'ethereumSlotDuration'>, deps: {
54
+ telemetry?: TelemetryClient;
55
+ blobSinkClient?: BlobSinkClientInterface;
56
+ forwarderContract: ForwarderContract;
57
+ l1TxUtils: L1TxUtilsWithBlobs;
58
+ rollupContract: RollupContract;
59
+ epochCache: EpochCache;
60
+ });
61
+ registerSlashPayloadGetter(callback: GetSlashPayloadCallBack): void;
62
+ getForwarderAddress(): EthAddress;
63
+ getSenderAddress(): EthAddress;
64
+ getGovernancePayload(): EthAddress;
65
+ setGovernancePayload(payload: EthAddress): void;
66
+ addRequest(request: RequestWithExpiry): void;
67
+ getCurrentL2Slot(): bigint;
68
+ /**
69
+ * Sends all requests that are still valid.
70
+ * @returns one of:
71
+ * - A receipt and stats if the tx succeeded
72
+ * - a receipt and errorMsg if it failed on L1
73
+ * - undefined if no valid requests are found OR the tx failed to send.
74
+ */
75
+ sendRequests(): Promise<{
76
+ receipt: TransactionReceipt<bigint, number, "success" | "reverted", import("viem").TransactionType>;
77
+ gasPrice: GasPrice;
78
+ stats: TransactionStats | undefined;
79
+ errorMsg?: undefined;
80
+ } | {
81
+ receipt: TransactionReceipt<bigint, number, "success" | "reverted", import("viem").TransactionType>;
82
+ gasPrice: GasPrice;
83
+ errorMsg: string | undefined;
84
+ stats?: undefined;
85
+ } | undefined>;
86
+ private callbackBundledTransactions;
87
+ /**
88
+ * @notice Will call `canProposeAtNextEthBlock` to make sure that it is possible to propose
89
+ * @param tipArchive - The archive to check
90
+ * @returns The slot and block number if it is possible to propose, undefined otherwise
91
+ */
92
+ canProposeAtNextEthBlock(tipArchive: Buffer): Promise<[bigint, bigint] | undefined>;
93
+ /**
94
+ * @returns The epoch that is currently claimable, undefined otherwise
95
+ */
96
+ getClaimableEpoch(): Promise<bigint | undefined>;
97
+ /**
98
+ * @notice Will filter out invalid quotes according to L1
99
+ * @param quotes - The quotes to filter
100
+ * @returns The filtered quotes
101
+ */
102
+ filterValidQuotes(quotes: EpochProofQuote[]): Promise<EpochProofQuote[]>;
103
+ /**
104
+ * @notice Will call `validateHeader` to make sure that it is possible to propose
105
+ *
106
+ * @dev Throws if unable to propose
107
+ *
108
+ * @param header - The header to propose
109
+ * @param digest - The digest that attestations are signing over
110
+ *
111
+ */
112
+ validateBlockForSubmission(header: BlockHeader, attestationData?: {
113
+ digest: Buffer;
114
+ signatures: Signature[];
115
+ }): Promise<bigint>;
116
+ getCurrentEpochCommittee(): Promise<EthAddress[]>;
117
+ /**
118
+ * Enqueues a castVote transaction to cast a vote for a given slot number.
119
+ * @param slotNumber - The slot number to cast a vote for.
120
+ * @param timestamp - The timestamp of the slot to cast a vote for.
121
+ * @param voteType - The type of vote to cast.
122
+ * @returns True if the vote was successfully enqueued, false otherwise.
123
+ */
124
+ enqueueCastVote(slotNumber: bigint, timestamp: bigint, voteType: VoteType): Promise<boolean>;
125
+ /**
126
+ * Proposes a L2 block on L1.
127
+ *
128
+ * @param block - L2 block to propose.
129
+ * @returns True if the tx has been enqueued, throws otherwise. See #9315
130
+ */
131
+ enqueueProposeL2Block(block: L2Block, attestations?: Signature[], txHashes?: TxHash[], opts?: {
132
+ txTimeoutAt?: Date;
133
+ }): Promise<boolean>;
134
+ /** Enqueues a claimEpochProofRight transaction to submit a chosen prover quote for the previous epoch. */
135
+ enqueueClaimEpochProofRight(proofQuote: EpochProofQuote): boolean;
136
+ /**
137
+ * Calling `interrupt` will cause any in progress call to `publishRollup` to return `false` asap.
138
+ * Be warned, the call may return false even if the tx subsequently gets successfully mined.
139
+ * In practice this shouldn't matter, as we'll only ever be calling `interrupt` when we know it's going to fail.
140
+ * A call to `restart` is required before you can continue publishing.
141
+ */
142
+ interrupt(): void;
143
+ /** Restarts the publisher after calling `interrupt`. */
144
+ restart(): void;
145
+ private prepareProposeTx;
146
+ private addProposeTx;
147
+ /**
148
+ * Send blobs to the blob sink
149
+ *
150
+ * If a blob sink url is configured, then we send blobs to the blob sink
151
+ * - for now we use the blockHash as the identifier for the blobs;
152
+ * In the future this will move to be the beacon block id - which takes a bit more work
153
+ * to calculate and will need to be mocked in e2e tests
154
+ */
155
+ protected sendBlobsToBlobSink(blockHash: string, blobs: Blob[]): Promise<boolean>;
156
+ }
157
+ export {};
158
+ //# sourceMappingURL=sequencer-publisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequencer-publisher.d.ts","sourceRoot":"","sources":["../../src/publisher/sequencer-publisher.ts"],"names":[],"mappings":"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"}