@aztec/sequencer-client 0.75.0-commit.c03ba01a2a4122e43e90d5133ba017e54b90e9d2 → 0.75.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 (84) hide show
  1. package/dest/client/index.d.ts +2 -0
  2. package/dest/client/index.d.ts.map +1 -0
  3. package/dest/client/index.js +1 -0
  4. package/dest/client/sequencer-client.d.ts +68 -0
  5. package/dest/client/sequencer-client.d.ts.map +1 -0
  6. package/dest/client/sequencer-client.js +57 -52
  7. package/dest/config.d.ts +37 -0
  8. package/dest/config.d.ts.map +1 -0
  9. package/dest/config.js +42 -40
  10. package/dest/global_variable_builder/global_builder.d.ts +29 -0
  11. package/dest/global_variable_builder/global_builder.d.ts.map +1 -0
  12. package/dest/global_variable_builder/global_builder.js +26 -39
  13. package/dest/global_variable_builder/index.d.ts +2 -0
  14. package/dest/global_variable_builder/index.d.ts.map +1 -0
  15. package/dest/global_variable_builder/index.js +1 -0
  16. package/dest/index.d.ts +8 -0
  17. package/dest/index.d.ts.map +1 -0
  18. package/dest/index.js +1 -0
  19. package/dest/publisher/config.d.ts +38 -0
  20. package/dest/publisher/config.d.ts.map +1 -0
  21. package/dest/publisher/config.js +50 -49
  22. package/dest/publisher/index.d.ts +2 -0
  23. package/dest/publisher/index.d.ts.map +1 -0
  24. package/dest/publisher/index.js +1 -0
  25. package/dest/publisher/sequencer-publisher-metrics.d.ts +24 -0
  26. package/dest/publisher/sequencer-publisher-metrics.d.ts.map +1 -0
  27. package/dest/publisher/sequencer-publisher-metrics.js +23 -32
  28. package/dest/publisher/sequencer-publisher.d.ts +163 -0
  29. package/dest/publisher/sequencer-publisher.d.ts.map +1 -0
  30. package/dest/publisher/sequencer-publisher.js +191 -216
  31. package/dest/sequencer/allowed.d.ts +3 -0
  32. package/dest/sequencer/allowed.d.ts.map +1 -0
  33. package/dest/sequencer/allowed.js +12 -5
  34. package/dest/sequencer/config.d.ts +2 -0
  35. package/dest/sequencer/config.d.ts.map +1 -0
  36. package/dest/sequencer/config.js +2 -1
  37. package/dest/sequencer/index.d.ts +4 -0
  38. package/dest/sequencer/index.d.ts.map +1 -0
  39. package/dest/sequencer/index.js +1 -0
  40. package/dest/sequencer/metrics.d.ts +24 -0
  41. package/dest/sequencer/metrics.d.ts.map +1 -0
  42. package/dest/sequencer/metrics.js +18 -26
  43. package/dest/sequencer/sequencer.d.ts +176 -0
  44. package/dest/sequencer/sequencer.d.ts.map +1 -0
  45. package/dest/sequencer/sequencer.js +620 -648
  46. package/dest/sequencer/timetable.d.ts +38 -0
  47. package/dest/sequencer/timetable.d.ts.map +1 -0
  48. package/dest/sequencer/timetable.js +19 -33
  49. package/dest/sequencer/utils.d.ts +47 -0
  50. package/dest/sequencer/utils.d.ts.map +1 -0
  51. package/dest/sequencer/utils.js +32 -22
  52. package/dest/slasher/factory.d.ts +11 -0
  53. package/dest/slasher/factory.d.ts.map +1 -0
  54. package/dest/slasher/factory.js +4 -5
  55. package/dest/slasher/index.d.ts +3 -0
  56. package/dest/slasher/index.d.ts.map +1 -0
  57. package/dest/slasher/index.js +1 -0
  58. package/dest/slasher/slasher_client.d.ts +127 -0
  59. package/dest/slasher/slasher_client.d.ts.map +1 -0
  60. package/dest/slasher/slasher_client.js +110 -107
  61. package/dest/test/index.d.ts +17 -0
  62. package/dest/test/index.d.ts.map +1 -0
  63. package/dest/test/index.js +1 -4
  64. package/dest/tx_validator/archive_cache.d.ts +14 -0
  65. package/dest/tx_validator/archive_cache.d.ts.map +1 -0
  66. package/dest/tx_validator/archive_cache.js +7 -7
  67. package/dest/tx_validator/gas_validator.d.ts +12 -0
  68. package/dest/tx_validator/gas_validator.d.ts.map +1 -0
  69. package/dest/tx_validator/gas_validator.js +64 -76
  70. package/dest/tx_validator/nullifier_cache.d.ts +16 -0
  71. package/dest/tx_validator/nullifier_cache.d.ts.map +1 -0
  72. package/dest/tx_validator/nullifier_cache.js +8 -8
  73. package/dest/tx_validator/phases_validator.d.ts +11 -0
  74. package/dest/tx_validator/phases_validator.d.ts.map +1 -0
  75. package/dest/tx_validator/phases_validator.js +19 -27
  76. package/dest/tx_validator/test_utils.d.ts +21 -0
  77. package/dest/tx_validator/test_utils.d.ts.map +1 -0
  78. package/dest/tx_validator/test_utils.js +2 -1
  79. package/dest/tx_validator/tx_validator_factory.d.ts +16 -0
  80. package/dest/tx_validator/tx_validator_factory.d.ts.map +1 -0
  81. package/dest/tx_validator/tx_validator_factory.js +5 -5
  82. package/package.json +22 -23
  83. package/src/config.ts +1 -1
  84. package/src/publisher/sequencer-publisher.ts +1 -1
@@ -0,0 +1,2 @@
1
+ export * from './sequencer-client.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
@@ -1 +1,2 @@
1
1
  export * from './sequencer-client.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUMifQ==
@@ -0,0 +1,68 @@
1
+ import { type BlobSinkClientInterface } from '@aztec/blob-sink/client';
2
+ import { type L1ToL2MessageSource, type L2BlockSource, type WorldStateSynchronizer } from '@aztec/circuit-types';
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';
7
+ import { type DateProvider } from '@aztec/foundation/timer';
8
+ import { type P2P } from '@aztec/p2p';
9
+ import { type TelemetryClient } from '@aztec/telemetry-client';
10
+ import { type ValidatorClient } from '@aztec/validator-client';
11
+ import { type SequencerClientConfig } from '../config.js';
12
+ import { SequencerPublisher } from '../publisher/index.js';
13
+ import { Sequencer, type SequencerConfig } from '../sequencer/index.js';
14
+ import { type SlasherClient } from '../slasher/index.js';
15
+ /**
16
+ * Encapsulates the full sequencer and publisher.
17
+ */
18
+ export declare class SequencerClient {
19
+ protected sequencer: Sequencer;
20
+ constructor(sequencer: Sequencer);
21
+ /**
22
+ * Initializes and starts a new instance.
23
+ * @param config - Configuration for the sequencer, publisher, and L1 tx sender.
24
+ * @param p2pClient - P2P client that provides the txs to be sequenced.
25
+ * @param validatorClient - Validator client performs attestation duties when rotating proposers.
26
+ * @param worldStateSynchronizer - Provides access to world state.
27
+ * @param contractDataSource - Provides access to contract bytecode for public executions.
28
+ * @param l2BlockSource - Provides information about the previously published blocks.
29
+ * @param l1ToL2MessageSource - Provides access to L1 to L2 messages.
30
+ * @param prover - An instance of a block prover
31
+ * @param simulationProvider - An instance of a simulation provider
32
+ * @returns A new running instance.
33
+ */
34
+ static new(config: SequencerClientConfig, deps: {
35
+ validatorClient: ValidatorClient | undefined;
36
+ p2pClient: P2P;
37
+ worldStateSynchronizer: WorldStateSynchronizer;
38
+ slasherClient: SlasherClient;
39
+ contractDataSource: ContractDataSource;
40
+ l2BlockSource: L2BlockSource;
41
+ l1ToL2MessageSource: L1ToL2MessageSource;
42
+ telemetry: TelemetryClient;
43
+ publisher?: SequencerPublisher;
44
+ blobSinkClient?: BlobSinkClientInterface;
45
+ dateProvider: DateProvider;
46
+ epochCache?: EpochCache;
47
+ l1TxUtils?: L1TxUtilsWithBlobs;
48
+ }): Promise<SequencerClient>;
49
+ /**
50
+ * Updates sequencer config.
51
+ * @param config - New parameters.
52
+ */
53
+ updateSequencerConfig(config: SequencerConfig): Promise<void>;
54
+ /**
55
+ * Stops the sequencer from processing new txs.
56
+ */
57
+ stop(): Promise<void>;
58
+ /** Forces the sequencer to bypass all time and tx count checks for the next block and build anyway. */
59
+ flush(): void;
60
+ /**
61
+ * Restarts the sequencer after being stopped.
62
+ */
63
+ restart(): void;
64
+ get coinbase(): EthAddress;
65
+ get feeRecipient(): AztecAddress;
66
+ get forwarderAddress(): EthAddress;
67
+ }
68
+ //# sourceMappingURL=sequencer-client.d.ts.map
@@ -0,0 +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,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAGL,kBAAkB,EAMnB,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;IAiHH;;;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,5 +1,5 @@
1
1
  import { EpochCache } from '@aztec/epoch-cache';
2
- import { ForwarderContract, GovernanceProposerContract, L1TxUtilsWithBlobs, RollupContract, SlashingProposerContract, createEthereumChain, createL1Clients, isAnvilTestChain } from '@aztec/ethereum';
2
+ import { ForwarderContract, GovernanceProposerContract, L1TxUtilsWithBlobs, RollupContract, SlashingProposerContract, createEthereumChain, createL1Clients, isAnvilTestChain, } from '@aztec/ethereum';
3
3
  import { EthAddress } from '@aztec/foundation/eth-address';
4
4
  import { createLogger } from '@aztec/foundation/log';
5
5
  import { LightweightBlockBuilderFactory } from '@aztec/prover-client/block-builder';
@@ -9,25 +9,26 @@ import { SequencerPublisher } from '../publisher/index.js';
9
9
  import { Sequencer } from '../sequencer/index.js';
10
10
  /**
11
11
  * Encapsulates the full sequencer and publisher.
12
- */ export class SequencerClient {
13
- sequencer;
14
- constructor(sequencer){
12
+ */
13
+ export class SequencerClient {
14
+ constructor(sequencer) {
15
15
  this.sequencer = sequencer;
16
16
  }
17
17
  /**
18
- * Initializes and starts a new instance.
19
- * @param config - Configuration for the sequencer, publisher, and L1 tx sender.
20
- * @param p2pClient - P2P client that provides the txs to be sequenced.
21
- * @param validatorClient - Validator client performs attestation duties when rotating proposers.
22
- * @param worldStateSynchronizer - Provides access to world state.
23
- * @param contractDataSource - Provides access to contract bytecode for public executions.
24
- * @param l2BlockSource - Provides information about the previously published blocks.
25
- * @param l1ToL2MessageSource - Provides access to L1 to L2 messages.
26
- * @param prover - An instance of a block prover
27
- * @param simulationProvider - An instance of a simulation provider
28
- * @returns A new running instance.
29
- */ static async new(config, deps) {
30
- const { validatorClient, p2pClient, worldStateSynchronizer, slasherClient, contractDataSource, l2BlockSource, l1ToL2MessageSource, telemetry: telemetryClient } = deps;
18
+ * Initializes and starts a new instance.
19
+ * @param config - Configuration for the sequencer, publisher, and L1 tx sender.
20
+ * @param p2pClient - P2P client that provides the txs to be sequenced.
21
+ * @param validatorClient - Validator client performs attestation duties when rotating proposers.
22
+ * @param worldStateSynchronizer - Provides access to world state.
23
+ * @param contractDataSource - Provides access to contract bytecode for public executions.
24
+ * @param l2BlockSource - Provides information about the previously published blocks.
25
+ * @param l1ToL2MessageSource - Provides access to L1 to L2 messages.
26
+ * @param prover - An instance of a block prover
27
+ * @param simulationProvider - An instance of a simulation provider
28
+ * @returns A new running instance.
29
+ */
30
+ static async new(config, deps) {
31
+ const { validatorClient, p2pClient, worldStateSynchronizer, slasherClient, contractDataSource, l2BlockSource, l1ToL2MessageSource, telemetry: telemetryClient, } = deps;
31
32
  const { l1RpcUrl: rpcUrl, l1ChainId: chainId, publisherPrivateKey } = config;
32
33
  const chain = createEthereumChain(rpcUrl, chainId);
33
34
  const log = createLogger('sequencer-client');
@@ -36,32 +37,34 @@ import { Sequencer } from '../sequencer/index.js';
36
37
  const rollupContract = new RollupContract(publicClient, config.l1Contracts.rollupAddress.toString());
37
38
  const [l1GenesisTime, slotDuration] = await Promise.all([
38
39
  rollupContract.getL1GenesisTime(),
39
- rollupContract.getSlotDuration()
40
+ rollupContract.getSlotDuration(),
40
41
  ]);
41
- const forwarderContract = config.customForwarderContractAddress && config.customForwarderContractAddress !== EthAddress.ZERO ? new ForwarderContract(publicClient, config.customForwarderContractAddress.toString(), config.l1Contracts.rollupAddress.toString()) : await ForwarderContract.create(walletClient.account.address, walletClient, publicClient, log, config.l1Contracts.rollupAddress.toString());
42
+ const forwarderContract = config.customForwarderContractAddress && config.customForwarderContractAddress !== EthAddress.ZERO
43
+ ? new ForwarderContract(publicClient, config.customForwarderContractAddress.toString(), config.l1Contracts.rollupAddress.toString())
44
+ : await ForwarderContract.create(walletClient.account.address, walletClient, publicClient, log, config.l1Contracts.rollupAddress.toString());
42
45
  const governanceProposerContract = new GovernanceProposerContract(publicClient, config.l1Contracts.governanceProposerAddress.toString());
43
46
  const slashingProposerAddress = await rollupContract.getSlashingProposerAddress();
44
47
  const slashingProposerContract = new SlashingProposerContract(publicClient, slashingProposerAddress.toString());
45
- const epochCache = deps.epochCache ?? await EpochCache.create(config.l1Contracts.rollupAddress, {
46
- l1RpcUrl: rpcUrl,
47
- l1ChainId: chainId,
48
- viemPollingIntervalMS: config.viemPollingIntervalMS,
49
- aztecSlotDuration: config.aztecSlotDuration,
50
- ethereumSlotDuration: config.ethereumSlotDuration,
51
- aztecEpochDuration: config.aztecEpochDuration
52
- }, {
53
- dateProvider: deps.dateProvider
54
- });
55
- const publisher = deps.publisher ?? new SequencerPublisher(config, {
56
- l1TxUtils,
57
- telemetry: telemetryClient,
58
- blobSinkClient: deps.blobSinkClient,
59
- rollupContract,
60
- epochCache,
61
- forwarderContract,
62
- governanceProposerContract,
63
- slashingProposerContract
64
- });
48
+ const epochCache = deps.epochCache ??
49
+ (await EpochCache.create(config.l1Contracts.rollupAddress, {
50
+ l1RpcUrl: rpcUrl,
51
+ l1ChainId: chainId,
52
+ viemPollingIntervalMS: config.viemPollingIntervalMS,
53
+ aztecSlotDuration: config.aztecSlotDuration,
54
+ ethereumSlotDuration: config.ethereumSlotDuration,
55
+ aztecEpochDuration: config.aztecEpochDuration,
56
+ }, { dateProvider: deps.dateProvider }));
57
+ const publisher = deps.publisher ??
58
+ new SequencerPublisher(config, {
59
+ l1TxUtils,
60
+ telemetry: telemetryClient,
61
+ blobSinkClient: deps.blobSinkClient,
62
+ rollupContract,
63
+ epochCache,
64
+ forwarderContract,
65
+ governanceProposerContract,
66
+ slashingProposerContract,
67
+ });
65
68
  const globalsBuilder = new GlobalVariableBuilder(config);
66
69
  const publicProcessorFactory = new PublicProcessorFactory(contractDataSource, deps.dateProvider, telemetryClient);
67
70
  const ethereumSlotDuration = config.ethereumSlotDuration;
@@ -75,33 +78,34 @@ import { Sequencer } from '../sequencer/index.js';
75
78
  const l1Constants = {
76
79
  l1GenesisTime,
77
80
  slotDuration: Number(slotDuration),
78
- ethereumSlotDuration
81
+ ethereumSlotDuration,
79
82
  };
80
- const sequencer = new Sequencer(publisher, validatorClient, globalsBuilder, p2pClient, worldStateSynchronizer, slasherClient, new LightweightBlockBuilderFactory(telemetryClient), l2BlockSource, l1ToL2MessageSource, publicProcessorFactory, contractDataSource, l1Constants, deps.dateProvider, {
81
- ...config,
82
- maxL1TxInclusionTimeIntoSlot
83
- }, telemetryClient);
83
+ const sequencer = new Sequencer(publisher, validatorClient, globalsBuilder, p2pClient, worldStateSynchronizer, slasherClient, new LightweightBlockBuilderFactory(telemetryClient), l2BlockSource, l1ToL2MessageSource, publicProcessorFactory, contractDataSource, l1Constants, deps.dateProvider, { ...config, maxL1TxInclusionTimeIntoSlot }, telemetryClient);
84
84
  await validatorClient?.start();
85
85
  await sequencer.start();
86
86
  return new SequencerClient(sequencer);
87
87
  }
88
88
  /**
89
- * Updates sequencer config.
90
- * @param config - New parameters.
91
- */ updateSequencerConfig(config) {
89
+ * Updates sequencer config.
90
+ * @param config - New parameters.
91
+ */
92
+ updateSequencerConfig(config) {
92
93
  return this.sequencer.updateConfig(config);
93
94
  }
94
95
  /**
95
- * Stops the sequencer from processing new txs.
96
- */ async stop() {
96
+ * Stops the sequencer from processing new txs.
97
+ */
98
+ async stop() {
97
99
  await this.sequencer.stop();
98
100
  }
99
- /** Forces the sequencer to bypass all time and tx count checks for the next block and build anyway. */ flush() {
101
+ /** Forces the sequencer to bypass all time and tx count checks for the next block and build anyway. */
102
+ flush() {
100
103
  this.sequencer.flush();
101
104
  }
102
105
  /**
103
- * Restarts the sequencer after being stopped.
104
- */ restart() {
106
+ * Restarts the sequencer after being stopped.
107
+ */
108
+ restart() {
105
109
  this.sequencer.restart();
106
110
  }
107
111
  get coinbase() {
@@ -114,3 +118,4 @@ import { Sequencer } from '../sequencer/index.js';
114
118
  return this.sequencer.getForwarderAddress();
115
119
  }
116
120
  }
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxdWVuY2VyLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvc2VxdWVuY2VyLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQiwwQkFBMEIsRUFDMUIsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsR0FDakIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3JELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQXdCLE1BQU0sdUJBQXVCLENBQUM7QUFHeEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUFzQixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO0lBQUcsQ0FBQztJQUU5Qzs7Ozs7Ozs7Ozs7O09BWUc7SUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FDckIsTUFBNkIsRUFDN0IsSUFjQztRQUVELE1BQU0sRUFDSixlQUFlLEVBQ2YsU0FBUyxFQUNULHNCQUFzQixFQUN0QixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsU0FBUyxFQUFFLGVBQWUsR0FDM0IsR0FBRyxJQUFJ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
@@ -0,0 +1,37 @@
1
+ import { type AllowedElement, type SequencerConfig } from '@aztec/circuit-types/config';
2
+ import { type L1ContractsConfig, type L1ReaderConfig } from '@aztec/ethereum';
3
+ import { type ConfigMappingsType } from '@aztec/foundation/config';
4
+ import { type PublisherConfig, type TxSenderConfig } from './publisher/config.js';
5
+ export * from './publisher/config.js';
6
+ export { SequencerConfig };
7
+ /** Chain configuration. */
8
+ type ChainConfig = {
9
+ /** The chain id of the ethereum host. */
10
+ l1ChainId: number;
11
+ /** The version of the rollup. */
12
+ version: number;
13
+ };
14
+ /**
15
+ * Configuration settings for the SequencerClient.
16
+ */
17
+ export type SequencerClientConfig = PublisherConfig & TxSenderConfig & SequencerConfig & L1ReaderConfig & ChainConfig & Pick<L1ContractsConfig, 'ethereumSlotDuration' | 'aztecSlotDuration' | 'aztecEpochDuration'>;
18
+ export declare const sequencerConfigMappings: ConfigMappingsType<SequencerConfig>;
19
+ export declare const chainConfigMappings: ConfigMappingsType<ChainConfig>;
20
+ export declare const sequencerClientConfigMappings: ConfigMappingsType<SequencerClientConfig>;
21
+ /**
22
+ * Creates an instance of SequencerClientConfig out of environment variables using sensible defaults for integration testing if not set.
23
+ */
24
+ export declare function getConfigEnvVars(): SequencerClientConfig;
25
+ /**
26
+ * Parses a string to a list of allowed elements.
27
+ * Each encoded is expected to be of one of the following formats
28
+ * `I:${address}`
29
+ * `I:${address}:${selector}`
30
+ * `C:${classId}`
31
+ * `C:${classId}:${selector}`
32
+ *
33
+ * @param value The string to parse
34
+ * @returns A list of allowed elements
35
+ */
36
+ export declare function parseSequencerAllowList(value: string): AllowedElement[];
37
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +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,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,94 +1,94 @@
1
1
  import { AztecAddress, Fr, FunctionSelector } from '@aztec/circuits.js';
2
- import { l1ContractsConfigMappings, l1ReaderConfigMappings } from '@aztec/ethereum';
3
- import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, pickConfigMappings } from '@aztec/foundation/config';
2
+ import { l1ContractsConfigMappings, l1ReaderConfigMappings, } from '@aztec/ethereum';
3
+ import { booleanConfigHelper, getConfigFromMappings, numberConfigHelper, pickConfigMappings, } from '@aztec/foundation/config';
4
4
  import { EthAddress } from '@aztec/foundation/eth-address';
5
- import { getPublisherConfigMappings, getTxSenderConfigMappings } from './publisher/config.js';
5
+ import { getPublisherConfigMappings, getTxSenderConfigMappings, } from './publisher/config.js';
6
6
  export * from './publisher/config.js';
7
7
  export const sequencerConfigMappings = {
8
8
  transactionPollingIntervalMS: {
9
9
  env: 'SEQ_TX_POLLING_INTERVAL_MS',
10
10
  description: 'The number of ms to wait between polling for pending txs.',
11
- ...numberConfigHelper(500)
11
+ ...numberConfigHelper(500),
12
12
  },
13
13
  maxTxsPerBlock: {
14
14
  env: 'SEQ_MAX_TX_PER_BLOCK',
15
15
  description: 'The maximum number of txs to include in a block.',
16
- ...numberConfigHelper(32)
16
+ ...numberConfigHelper(32),
17
17
  },
18
18
  minTxsPerBlock: {
19
19
  env: 'SEQ_MIN_TX_PER_BLOCK',
20
20
  description: 'The minimum number of txs to include in a block.',
21
- ...numberConfigHelper(1)
21
+ ...numberConfigHelper(1),
22
22
  },
23
23
  maxL2BlockGas: {
24
24
  env: 'SEQ_MAX_L2_BLOCK_GAS',
25
25
  description: 'The maximum L2 block gas.',
26
- ...numberConfigHelper(10e9)
26
+ ...numberConfigHelper(10e9),
27
27
  },
28
28
  maxDABlockGas: {
29
29
  env: 'SEQ_MAX_DA_BLOCK_GAS',
30
30
  description: 'The maximum DA block gas.',
31
- ...numberConfigHelper(10e9)
31
+ ...numberConfigHelper(10e9),
32
32
  },
33
33
  coinbase: {
34
34
  env: 'COINBASE',
35
- parseEnv: (val)=>EthAddress.fromString(val),
36
- description: 'Recipient of block reward.'
35
+ parseEnv: (val) => EthAddress.fromString(val),
36
+ description: 'Recipient of block reward.',
37
37
  },
38
38
  feeRecipient: {
39
39
  env: 'FEE_RECIPIENT',
40
- parseEnv: (val)=>AztecAddress.fromString(val),
41
- description: 'Address to receive fees.'
40
+ parseEnv: (val) => AztecAddress.fromString(val),
41
+ description: 'Address to receive fees.',
42
42
  },
43
43
  acvmWorkingDirectory: {
44
44
  env: 'ACVM_WORKING_DIRECTORY',
45
- description: 'The working directory to use for simulation/proving'
45
+ description: 'The working directory to use for simulation/proving',
46
46
  },
47
47
  acvmBinaryPath: {
48
48
  env: 'ACVM_BINARY_PATH',
49
- description: 'The path to the ACVM binary'
49
+ description: 'The path to the ACVM binary',
50
50
  },
51
51
  allowedInSetup: {
52
52
  env: 'SEQ_ALLOWED_SETUP_FN',
53
- parseEnv: (val)=>parseSequencerAllowList(val),
53
+ parseEnv: (val) => parseSequencerAllowList(val),
54
54
  description: 'The list of functions calls allowed to run in setup',
55
- printDefault: ()=>'AuthRegistry, FeeJuice.increase_public_balance, Token.increase_public_balance, FPC.prepare_fee'
55
+ printDefault: () => 'AuthRegistry, FeeJuice.increase_public_balance, Token.increase_public_balance, FPC.prepare_fee',
56
56
  },
57
57
  maxBlockSizeInBytes: {
58
58
  env: 'SEQ_MAX_BLOCK_SIZE_IN_BYTES',
59
59
  description: 'Max block size',
60
- ...numberConfigHelper(1024 * 1024)
60
+ ...numberConfigHelper(1024 * 1024),
61
61
  },
62
62
  enforceFees: {
63
63
  env: 'ENFORCE_FEES',
64
64
  description: 'Whether to require every tx to have a fee payer',
65
- ...booleanConfigHelper()
65
+ ...booleanConfigHelper(),
66
66
  },
67
67
  enforceTimeTable: {
68
68
  env: 'SEQ_ENFORCE_TIME_TABLE',
69
69
  description: 'Whether to enforce the time table when building blocks',
70
70
  ...booleanConfigHelper(),
71
- defaultValue: false
71
+ defaultValue: false,
72
72
  },
73
73
  governanceProposerPayload: {
74
74
  env: 'GOVERNANCE_PROPOSER_PAYLOAD_ADDRESS',
75
75
  description: 'The address of the payload for the governanceProposer',
76
- parseEnv: (val)=>EthAddress.fromString(val),
77
- defaultValue: EthAddress.ZERO
76
+ parseEnv: (val) => EthAddress.fromString(val),
77
+ defaultValue: EthAddress.ZERO,
78
78
  },
79
79
  maxL1TxInclusionTimeIntoSlot: {
80
80
  env: 'SEQ_MAX_L1_TX_INCLUSION_TIME_INTO_SLOT',
81
81
  description: 'How many seconds into an L1 slot we can still send a tx and get it mined.',
82
- parseEnv: (val)=>val ? parseInt(val, 10) : undefined
83
- }
82
+ parseEnv: (val) => (val ? parseInt(val, 10) : undefined),
83
+ },
84
84
  };
85
85
  export const chainConfigMappings = {
86
86
  l1ChainId: l1ReaderConfigMappings.l1ChainId,
87
87
  version: {
88
88
  env: 'VERSION',
89
89
  description: 'The version of the rollup.',
90
- ...numberConfigHelper(1)
91
- }
90
+ ...numberConfigHelper(1),
91
+ },
92
92
  };
93
93
  export const sequencerClientConfigMappings = {
94
94
  ...sequencerConfigMappings,
@@ -96,15 +96,12 @@ export const sequencerClientConfigMappings = {
96
96
  ...getTxSenderConfigMappings('SEQ'),
97
97
  ...getPublisherConfigMappings('SEQ'),
98
98
  ...chainConfigMappings,
99
- ...pickConfigMappings(l1ContractsConfigMappings, [
100
- 'ethereumSlotDuration',
101
- 'aztecSlotDuration',
102
- 'aztecEpochDuration'
103
- ])
99
+ ...pickConfigMappings(l1ContractsConfigMappings, ['ethereumSlotDuration', 'aztecSlotDuration', 'aztecEpochDuration']),
104
100
  };
105
101
  /**
106
102
  * Creates an instance of SequencerClientConfig out of environment variables using sensible defaults for integration testing if not set.
107
- */ export function getConfigEnvVars() {
103
+ */
104
+ export function getConfigEnvVars() {
108
105
  return getConfigFromMappings(sequencerClientConfigMappings);
109
106
  }
110
107
  /**
@@ -117,37 +114,42 @@ export const sequencerClientConfigMappings = {
117
114
  *
118
115
  * @param value The string to parse
119
116
  * @returns A list of allowed elements
120
- */ export function parseSequencerAllowList(value) {
117
+ */
118
+ export function parseSequencerAllowList(value) {
121
119
  const entries = [];
122
120
  if (!value) {
123
121
  return entries;
124
122
  }
125
- for (const val of value.split(',')){
123
+ for (const val of value.split(',')) {
126
124
  const [typeString, identifierString, selectorString] = val.split(':');
127
125
  const selector = selectorString !== undefined ? FunctionSelector.fromString(selectorString) : undefined;
128
126
  if (typeString === 'I') {
129
127
  if (selector) {
130
128
  entries.push({
131
129
  address: AztecAddress.fromString(identifierString),
132
- selector
130
+ selector,
133
131
  });
134
- } else {
132
+ }
133
+ else {
135
134
  entries.push({
136
- address: AztecAddress.fromString(identifierString)
135
+ address: AztecAddress.fromString(identifierString),
137
136
  });
138
137
  }
139
- } else if (typeString === 'C') {
138
+ }
139
+ else if (typeString === 'C') {
140
140
  if (selector) {
141
141
  entries.push({
142
142
  classId: Fr.fromHexString(identifierString),
143
- selector
143
+ selector,
144
144
  });
145
- } else {
145
+ }
146
+ else {
146
147
  entries.push({
147
- classId: Fr.fromHexString(identifierString)
148
+ classId: Fr.fromHexString(identifierString),
148
149
  });
149
150
  }
150
151
  }
151
152
  }
152
153
  return entries;
153
154
  }
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sRUFHTCx5QkFBeUIsRUFDekIsc0JBQXNCLEdBQ3ZCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUVMLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ2xCLGtCQUFrQixHQUNuQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUUzRCxPQUFPLEVBR0wsMEJBQTBCLEVBQzFCLHlCQUF5QixHQUMxQixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLGNBQWMsdUJBQXVCLENBQUM7QUFxQnRDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUF3QztJQUMxRSw0QkFBNEIsRUFBRTtRQUM1QixHQUFHLEVBQUUsNEJBQTRCO1FBQ2pDLFdBQVcsRUFBRSwyREFBMkQ7UUFDeEUsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7S0FDM0I7SUFDRCxjQUFjLEVBQUU7UUFDZCxHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLFdBQVcsRUFBRSxrREFBa0Q7UUFDL0QsR0FBRyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7S0FDMUI7SUFDRCxjQUFjLEVBQUU7UUFDZCxHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLFdBQVcsRUFBRSxrREFBa0Q7UUFDL0QsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7S0FDekI7SUFDRCxhQUFhLEVBQUU7UUFDYixHQUFHLEVBQUUsc0JBQXNCO1FBQzNCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7S0FDNUI7SUFDRCxhQUFhLEVBQUU7UUFDYixHQUFHLEVBQUUs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
@@ -0,0 +1,29 @@
1
+ import { type GlobalVariableBuilder as GlobalVariableBuilderInterface } from '@aztec/circuit-types';
2
+ import { type AztecAddress, type EthAddress, GasFees, GlobalVariables } from '@aztec/circuits.js';
3
+ import { type L1ContractsConfig, type L1ReaderConfig } from '@aztec/ethereum';
4
+ import { Fr } from '@aztec/foundation/fields';
5
+ /**
6
+ * Simple global variables builder.
7
+ */
8
+ export declare class GlobalVariableBuilder implements GlobalVariableBuilderInterface {
9
+ private log;
10
+ private rollupContract;
11
+ private publicClient;
12
+ private ethereumSlotDuration;
13
+ constructor(config: L1ReaderConfig & Pick<L1ContractsConfig, 'ethereumSlotDuration'>);
14
+ /**
15
+ * Computes the "current" base fees, e.g., the price that you currently should pay to get include in the next block
16
+ * @returns Base fees for the expected next block
17
+ */
18
+ getCurrentBaseFees(): Promise<GasFees>;
19
+ /**
20
+ * Simple builder of global variables that use the minimum time possible.
21
+ * @param blockNumber - The block number to build global variables for.
22
+ * @param coinbase - The address to receive block reward.
23
+ * @param feeRecipient - The address to receive fees.
24
+ * @param slotNumber - The slot number to use for the global variables, if undefined it will be calculated.
25
+ * @returns The global variables for the given block number.
26
+ */
27
+ buildGlobalVariables(blockNumber: Fr, coinbase: EthAddress, feeRecipient: AztecAddress, slotNumber?: bigint): Promise<GlobalVariables>;
28
+ }
29
+ //# sourceMappingURL=global_builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global_builder.d.ts","sourceRoot":"","sources":["../../src/global_variable_builder/global_builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,IAAI,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAuB,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAe9C;;GAEG;AACH,qBAAa,qBAAsB,YAAW,8BAA8B;IAC1E,OAAO,CAAC,GAAG,CAAqD;IAEhE,OAAO,CAAC,cAAc,CAAqF;IAC3G,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;IAoBpF;;;OAGG;IACU,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAanD;;;;;;;OAOG;IACU,oBAAoB,CAC/B,WAAW,EAAE,EAAE,EACf,QAAQ,EAAE,UAAU,EACpB,YAAY,EAAE,YAAY,EAC1B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC;CA8B5B"}